EXCEL : Traitement chaine de caracteres
fanfi_du_94
-
just1xpa2 Messages postés 1603 Date d'inscription Statut Membre Dernière intervention -
just1xpa2 Messages postés 1603 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche une formule ou ensemble de formules sous excel qui me permettent de retrouver le nombre d'occurence d'une chaine de caracteres. Autrement dit sur un exemple : la cellule contient "TATA TOTO TATA TITI" , je cherche le nombre de fois où est ecrit "TATA" le nombre de TATA =2.
Est-ce quelqu'un aurait une idée de comment faire cela simplement sans passer par le VBA ?
Merci de votre aide
FF
Je cherche une formule ou ensemble de formules sous excel qui me permettent de retrouver le nombre d'occurence d'une chaine de caracteres. Autrement dit sur un exemple : la cellule contient "TATA TOTO TATA TITI" , je cherche le nombre de fois où est ecrit "TATA" le nombre de TATA =2.
Est-ce quelqu'un aurait une idée de comment faire cela simplement sans passer par le VBA ?
Merci de votre aide
FF
A voir également:
- EXCEL : Traitement chaine de caracteres
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
35 réponses
Bonjour,
Hummm, je crois que le texte est dans 1 cellule xkristi.
Si tu n'es pas limité en cellules tu peux utiliser CHERCHE(chaine;texte;n° départ) successivement en utilisant comme n°_départ le résultat précédent+1
ex:
A
1 TATA TOTO TATA TITI
2 =CHERCHE("TATA";A$1;1)
3 =CHERCHE("TATA";A$1;A2+1)
4 =CHERCHE("TATA";A$1;A3+1)
5 =CHERCHE("TATA";A$1;A4+1)
6 =CHERCHE("TATA";A$1;A5+1)
7 =CHERCHE("TATA";A$1;A6+1)
8 =CHERCHE("TATA";A$1;A7+1)
9 =NB(A2:A8)
résultat:
TATA TOTO TATA TITI
1
11
#VALEUR!
#VALEUR!
#VALEUR!
#VALEUR!
#VALEUR!
2
Reste à trouver la formule en 1 seule cellule ;-)
eric
Hummm, je crois que le texte est dans 1 cellule xkristi.
Si tu n'es pas limité en cellules tu peux utiliser CHERCHE(chaine;texte;n° départ) successivement en utilisant comme n°_départ le résultat précédent+1
ex:
A
1 TATA TOTO TATA TITI
2 =CHERCHE("TATA";A$1;1)
3 =CHERCHE("TATA";A$1;A2+1)
4 =CHERCHE("TATA";A$1;A3+1)
5 =CHERCHE("TATA";A$1;A4+1)
6 =CHERCHE("TATA";A$1;A5+1)
7 =CHERCHE("TATA";A$1;A6+1)
8 =CHERCHE("TATA";A$1;A7+1)
9 =NB(A2:A8)
résultat:
TATA TOTO TATA TITI
1
11
#VALEUR!
#VALEUR!
#VALEUR!
#VALEUR!
#VALEUR!
2
Reste à trouver la formule en 1 seule cellule ;-)
eric
Salut !
Juste une variante de disposition avec la fonction d'Eriiic qui a bien trouvé ( pas avec Trouve et avec CHERCHE)
mais pas possible en une cellule
et reste le problème d'avoir un m^me mot 2 fois ou plus dans la chaine de caractères
TATA en A$1 peut être changé par un autre mot
en A$1 TATA et la somme en B2 ou ailleurs
TATA SOMME(B2:B6)
TITI TATA TOTO TUTU SI(ESTERREUR(CHERCHE(A$1;A2;1));0;1) mets = et recopie incrément…
TOTO TITU 0
TITU TOTO TATA TATA 1 ne compte que le premier TATA
TOTO TATA 1
REVONS UN PEU 0
Juste une variante de disposition avec la fonction d'Eriiic qui a bien trouvé ( pas avec Trouve et avec CHERCHE)
mais pas possible en une cellule
et reste le problème d'avoir un m^me mot 2 fois ou plus dans la chaine de caractères
TATA en A$1 peut être changé par un autre mot
en A$1 TATA et la somme en B2 ou ailleurs
TATA SOMME(B2:B6)
TITI TATA TOTO TUTU SI(ESTERREUR(CHERCHE(A$1;A2;1));0;1) mets = et recopie incrément…
TOTO TITU 0
TITU TOTO TATA TATA 1 ne compte que le premier TATA
TOTO TATA 1
REVONS UN PEU 0
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je ne l'avais pas précisé mais en A9, avec =NB(A2:A8), je retourne 2 qui est le total de TATA dans la chaine
eric
eric
Bonsoir,
Oui xkristi ,on peut un peu plus si on passe par une petite macro ...
Très la passe de Eriiic...
Oui xkristi ,on peut un peu plus si on passe par une petite macro ...
Très la passe de Eriiic...
Bonjour fanfi_du_94,
Il est aussi possible de passer par une macro, basé sur la formule d’eriiic, complétée par xkristi, que voici : (à copier et coller dans la partie Déclarations d'une feuille)
Sub AnalyseChaine()
' Macro enregistrée le 11.10.2007 par Jean-Pierre Purro
Dim filtre As String
Dim nbpas, seaFilt As Integer
On Error GoTo SORTERROR
seaFilt = 0
filtre = Cells(1, 2)
nbpas = 0
Do While WorksheetFunction.Search(filtre, Cells(1, 1), 1 + seaFilt) > 0
seaFilt = WorksheetFunction.Search(filtre, Cells(1, 1), 1 + seaFilt)
nbpas = nbpas + 1
Loop
SORTERROR:
Select Case Err.Number
Case 1004
If nbpas > 0 Then
Cells(1, 3).Value = nbpas
Else
Cells(1, 3).Value = nbpas
End If
Case Else
' autre situations à traiter ici...
End Select
End Sub
La chaine de donnée se trouve en A1. La chaine cherchée en B1. Le résultat en C1.
Il vous suffit de lancer la macro via Alt+F8 et clic sur AnalyseChaine
Il est aussi possible de passer par une macro, basé sur la formule d’eriiic, complétée par xkristi, que voici : (à copier et coller dans la partie Déclarations d'une feuille)
Sub AnalyseChaine()
' Macro enregistrée le 11.10.2007 par Jean-Pierre Purro
Dim filtre As String
Dim nbpas, seaFilt As Integer
On Error GoTo SORTERROR
seaFilt = 0
filtre = Cells(1, 2)
nbpas = 0
Do While WorksheetFunction.Search(filtre, Cells(1, 1), 1 + seaFilt) > 0
seaFilt = WorksheetFunction.Search(filtre, Cells(1, 1), 1 + seaFilt)
nbpas = nbpas + 1
Loop
SORTERROR:
Select Case Err.Number
Case 1004
If nbpas > 0 Then
Cells(1, 3).Value = nbpas
Else
Cells(1, 3).Value = nbpas
End If
Case Else
' autre situations à traiter ici...
End Select
End Sub
La chaine de donnée se trouve en A1. La chaine cherchée en B1. Le résultat en C1.
Il vous suffit de lancer la macro via Alt+F8 et clic sur AnalyseChaine
Bonjour Le Pingou
Je ne sais si Fanfi du 94 va repasser chercher sa réponse ...
merci pour la macro , un jour ou l'autre cela peut servir...
mais habituellement pour moi , c'est plutôt SQL et TCD
Je ne sais si Fanfi du 94 va repasser chercher sa réponse ...
merci pour la macro , un jour ou l'autre cela peut servir...
mais habituellement pour moi , c'est plutôt SQL et TCD
Pour le fun et bien ça n'interesse plus grand monde ;-) en 1 cellule :
en A1: TATA TOTO TATA TITI
en A2: =(NBCAR(A1)-NBCAR(SUBSTITUE(A1;"TATA";)))/NBCAR("TATA") => 2
eric
en A1: TATA TOTO TATA TITI
en A2: =(NBCAR(A1)-NBCAR(SUBSTITUE(A1;"TATA";)))/NBCAR("TATA") => 2
eric
Bonsoir,
Merci Eric, c'est super et beaucoup plus simple que mon code.
Je vais ranger et mémoriser précieusement cette combinaison, sans oublier d'étudier son fonctionnement.
Merci Eric, c'est super et beaucoup plus simple que mon code.
Je vais ranger et mémoriser précieusement cette combinaison, sans oublier d'étudier son fonctionnement.
Et non, pas devant le rugby, ma télé et moi on est en froid...
Bon, je vous rassure, j'ai trouvé l'inspiration ailleurs ;-)
Bonne soirée à tout le monde
Bon, je vous rassure, j'ai trouvé l'inspiration ailleurs ;-)
Bonne soirée à tout le monde
Bonsoir Eric,
Cette fonction "Substitue" gagne être bien connue et en combinaison avec "NbCar" cela devient de la mathématique élémentaire, un total moins la quantité restante et le tout divisé par le nombre de caractères cherché.
Encore bravo et merci de nous en faire profiter.
Cette fonction "Substitue" gagne être bien connue et en combinaison avec "NbCar" cela devient de la mathématique élémentaire, un total moins la quantité restante et le tout divisé par le nombre de caractères cherché.
Encore bravo et merci de nous en faire profiter.
bonsoir pour le fun , ca m'interesse , eriiic le pinguoin , et xkristi
un petit plus pour ameliorer la formule, pour eviter une erreur en modifiant A2 , tu saisie en B1 TATA
en A1: TATA TOTO TATA TITI
en A2, a la place de cela =(NBCAR(A1)-NBCAR(SUBSTITUE(A1;"TATA";)))/NBCAR("TATA") => 2
tu formules ainsi A2==(NBCAR(A1)-NBCAR(SUBSTITUE(A1;B1)))/NBCAR(B1) le resultat est le même ,
mais si tu recherche le nombre de fois TA par exemple en B1 , tu tapes exemple TA tu trouve 4
cela evite de changer dans la formule tout simplement ce que tu veux trouver
mais je vous laisse la palme de la formule,
bonne soirée et encore bravo
un petit plus pour ameliorer la formule, pour eviter une erreur en modifiant A2 , tu saisie en B1 TATA
en A1: TATA TOTO TATA TITI
en A2, a la place de cela =(NBCAR(A1)-NBCAR(SUBSTITUE(A1;"TATA";)))/NBCAR("TATA") => 2
tu formules ainsi A2==(NBCAR(A1)-NBCAR(SUBSTITUE(A1;B1)))/NBCAR(B1) le resultat est le même ,
mais si tu recherche le nombre de fois TA par exemple en B1 , tu tapes exemple TA tu trouve 4
cela evite de changer dans la formule tout simplement ce que tu veux trouver
mais je vous laisse la palme de la formule,
bonne soirée et encore bravo
autant pour moi, et avec mes excuses la bonne formule est en A2 celle-ci
=(NBCAR(A1)-NBCAR(SUBSTITUE(A1;B1;)))/NBCAR(B1)
il manquait le point virgule derrière de premier B1 dans la formule
cela ne change pas que la palme vous revient,
=(NBCAR(A1)-NBCAR(SUBSTITUE(A1;B1;)))/NBCAR(B1)
il manquait le point virgule derrière de premier B1 dans la formule
cela ne change pas que la palme vous revient,
Bonjour,
J'ai tout contrôlé et j'ai fait un copier/coller votre formule et j'obtiens ceci #NOM? c'est inconpréhensile cette affaire. Avec l'autre formule de Eric c'est parfaitement correct.... j'enrage, c'est ou la bourde....
J'ai tout contrôlé et j'ai fait un copier/coller votre formule et j'obtiens ceci #NOM? c'est inconpréhensile cette affaire. Avec l'autre formule de Eric c'est parfaitement correct.... j'enrage, c'est ou la bourde....