Comme je trouvais ta question intéressante, je viens de faire un test rapide avec ce bout de code
Code :
- Sub cherchemot()
- Dim Cell As Variant
- Dim cpt As Integer
- cpt = 0
- For Each Cell In Selection
- If InStr(1, Cell.Value, "voisin", 0) Then
- cpt = cpt + 1
- End If
- Next Cell
- MsgBox (cpt)
- End Sub
|
Je sélectionne une plage de cellules (certaines contenant le mot 'voisin'), puis j'exécute la macro, et j'ai une fenêtre qui s'ouvre et qui contient le nombre d'occurences du mot 'voisin'.
La casse est gérée car j'utilise :
Code :
- If InStr(1, Cell.Value, "voisin", 0)
|
Mais on pourrait ne pas gérer la casse en utilisant :
Code :
- If InStr(1, Cell.Value, "voisin", 1)
|
Par contre, si j'ai le mot 'voisins' dans ma place de cellule, alors ce sera également compté.
Ca marche aussi si le mot cherché fait partie d'une phrase dans la cellule.
Donc ce qu'il resterait à faire, c'est transformer ça en fonction, pour que tu puisses passer la plage de cellules et le mot cherché en paramètres, et afficher le résultat une cellule de ton choix !
Il y a aussi cette façon
Code :
- Sub cherchemot2()
- Dim Cell As Variant
- Dim cpt As Integer
- cpt = 0
- For Each Cell In Selection
- If Cell.Value Like "*voisin*" Then
- cpt = cpt + 1
- End If
- Next Cell
- MsgBox (cpt)
- End Sub
|
Ce qui permettrait a priori d'utiliser les expressions régulières avec l'opérateur like.
Message édité par blueteen le 30-05-2008 à 15:59:32