Excel - recherche de mot

Excel - recherche de mot - Logiciels - Windows & Software

Marsh Posté le 28-05-2008 à 11:37:28    

Bonjour
 
Je cherche à décompter le nombre de fois qu'un mot apparait dans une fichier Excel. Ce mot peut être soit "seul" dans une cellule, soit au sein d'une phrase dans cette cellule. J'imagine qu'il existe une formule simple...
 
Merci d'avance
 
 

Reply

Marsh Posté le 28-05-2008 à 11:37:28   

Reply

Marsh Posté le 28-05-2008 à 11:47:17    

Salut, tu veux dire... compter? et que le résultat s'affiche dans une cellule que tu auras choisie c'est bien ca?

Reply

Marsh Posté le 28-05-2008 à 12:32:19    

sas63 a écrit :

Bonjour
 
Je cherche à décompter le nombre de fois qu'un mot apparait dans une fichier Excel. Ce mot peut être soit "seul" dans une cellule, soit au sein d'une phrase dans cette cellule. J'imagine qu'il existe une formule simple...
 
Merci d'avance
 
 


 
Ultrasimple sans formule
Ctrl+H:rechercher mot
Remplacer par mot
Le mot a été remplacé X fois.
 

Reply

Marsh Posté le 28-05-2008 à 18:21:44    

Merci. Je souhaiterais que le chiffre s'affiche dans une cellule.

Reply

Marsh Posté le 30-05-2008 à 11:47:27    

Bonjour
 
Un peu plus d'infos seraient les bienvenues...
Combien de feuille de classeur par exemple ?
 
Et non il n'y a pas de formule simple, il faut coder en vba et passer toutes les cellules en revues pour voir si le mot est dedans.
Voir la fonction InStr()
 
Cordialement


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 30-05-2008 à 13:56:31    

Pareil que dje, je ne vois pas d'autre solution...
Non, il n'existe pas de "formule simple" pour compter ce genre de choses... Je ne vois pas bien qui pourrait avoir l'utilité de ça en fait...

Reply

Marsh Posté le 30-05-2008 à 14:06:44    

Sinon, selon tes besoins et le mot à chercher, tu as cette formule :

Code :
  1. =NB.SI(A1:E12;"*voiture*" )


A1:E12 étant la plage de recherche (voir contour bleu sur capture ci-dessous).

 

Attention, ça ne distingue pas les majuscules/minuscules, et ça prend tous les mots qui contiennent le mot cherché.

 

Par exemple, si tu cherches : voisin, cette formule te ferait ressortir : avoisinner

 

Donc gare aux faux positifs.
C'est une piste parmi d'autres, on ne connaît pas toutes tes contraintes.

 

http://img527.imageshack.us/img527/3636/chercheoccurenceexcelsr8.gif

Message cité 1 fois
Message édité par blueteen le 30-05-2008 à 14:09:04
Reply

Marsh Posté le 30-05-2008 à 14:08:29    

Un petit bout de code trouvé dans l'aide d''excel
Modifies les variable  
- ChaineCherche, ChaineRemplace
- LigneD, ColD, LigneF, ColF (ligne de début, colonne de fin etc.)
 

Citation :


Sub RemplaceChaine
'remplacer ici ce que tu souhaites
ChaineCherche = "toto"
ChaineRemplace = "tata"
ColD = "a"
LigneD="1"
ColF = "b"
LigneF = "65536"
Cpte=0
 
'code de l'aide adapté en consequence.
With Worksheets(1).Range(CStr(ColD & LigneD & ":" & ColF & LigneF))
    Set c = .Find(ChaineCherche, lookin:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Value = ChaineRemplace
            Set c = .FindNext(c)
            Cpte=Cpte+1
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With
 
End Sub
 


 
Cordialement


Message édité par SuppotDeSaTante le 30-05-2008 à 14:09:21

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 30-05-2008 à 14:10:33    

blueteen a écrit :

Sinon, selon tes besoins et le mot à chercher, tu as cette formule :

Code :
  1. =NB.SI(A1:E12;"*voiture*" )


A1:E12 étant la plage de recherche (voir contour bleu sur capture ci-dessous).
 
Attention, ça ne distingue pas les majuscules/minuscules, et ça prend tous les mots qui contiennent le mot cherché.
 
Par exemple, si tu cherches : voisin, cette formule te ferait ressortir : avoisinner
 
Donc gare aux faux positifs.
C'est une piste parmi d'autres, on ne connaît pas toutes tes contraintes.
 
http://img527.imageshack.us/img527 [...] celsr8.gif


 
Bonne idée
Peut etre ajouter un espace avant et apres permettrait de ne pas compter avoisinner parmi les bonnes reponses
 
Cordialement


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 30-05-2008 à 14:37:12    

Oui, mais l'espace avant et après voudrait dire qu'il compte seulement les mots avec espaces... la formule avec NB.SI et sans les espaces me paraît être la meilleure.
 
Mais comme toujours et déjà dit... on manque vraiment de contexte... disons que ça s'appliquera ou pas trop en fonction de que tu recherches, savoir si ce texte est seul ou non dans une cellule, etc...

Reply

Marsh Posté le 30-05-2008 à 14:37:12   

Reply

Marsh Posté le 30-05-2008 à 15:38:14    

Comme je trouvais ta question intéressante, je viens de faire un test rapide avec ce bout de code

 
Code :
  1. Sub cherchemot()
  2. Dim Cell As Variant
  3. Dim cpt As Integer
  4.     cpt = 0
  5.     For Each Cell In Selection
  6.         If InStr(1, Cell.Value, "voisin", 0) Then
  7.         cpt = cpt + 1
  8.         End If
  9.     Next Cell
  10.     MsgBox (cpt)
  11. 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 :
  1. If InStr(1, Cell.Value, "voisin", 0)


Mais on pourrait ne pas gérer la casse en utilisant :

Code :
  1. 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 :
  1. Sub cherchemot2()
  2. Dim Cell As Variant
  3. Dim cpt As Integer
  4.     cpt = 0
  5.     For Each Cell In Selection
  6.     If Cell.Value Like "*voisin*" Then
  7.     cpt = cpt + 1
  8.     End If
  9.     Next Cell
  10.     MsgBox (cpt)
  11. 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
Reply

Marsh Posté le 30-05-2008 à 16:51:21    

merci !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed