EXCEL : Traitement chaine de caracteres

fanfi_du_94 -  
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
A voir également:

35 réponses

xkristi Messages postés 4336 Date d'inscription   Statut Membre Dernière intervention   564
 
eh bien Eriiic bravo !
je ne fais pas mieux !
Bonne soirée !

2
xkristi Messages postés 4336 Date d'inscription   Statut Membre Dernière intervention   564
 
Bonjour !

NB.SI(A2:A6;"titi")

n'oublie pas de mettre le statut résolu si c'est le cas
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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
0
xkristi Messages postés 4336 Date d'inscription   Statut Membre Dernière intervention   564
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Merci
Bonne soirée à toi aussi :-)
0
Le Pingou Messages postés 12714 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
Bonsoir,
Oui xkristi ,on peut un peu plus si on passe par une petite macro ...
Très la passe de Eriiic...
0
Le Pingou Messages postés 12714 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
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
0
xkristi Messages postés 4336 Date d'inscription   Statut Membre Dernière intervention   564
 
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
0
Le Pingou Messages postés 12714 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
Merci, de rein
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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
0
Le Pingou Messages postés 12714 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
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.
0
xkristi Messages postés 4336 Date d'inscription   Statut Membre Dernière intervention   564
 
Bravo Eriiic
ça m'étonne , pas devant le rugby ????????
Bonne soirée !
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
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
0
Le Pingou Messages postés 12714 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
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.
0
just1xpa2 Messages postés 1603 Date d'inscription   Statut Membre Dernière intervention   196
 
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
0
Le Pingou Messages postés 12714 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
Bonjour,
Eh bien , désolé, j'ai essayer, votre proposition ne fonctionne pas.
Jean-Pierre
0
just1xpa2 Messages postés 1603 Date d'inscription   Statut Membre Dernière intervention   196
 
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,
0
Le Pingou Messages postés 12714 Date d'inscription   Statut Contributeur Dernière intervention   1 467
 
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....
0
just1xpa2 Messages postés 1603 Date d'inscription   Statut Membre Dernière intervention   196
 
en A1tu ecris en minuscule comment ca marche
en A2 copie/coller =(NBCAR(A1)-NBCAR(SUBSTITUE(A1;B1;)))/NBCAR(B1)
en B1 tu ecrit " ca marche ", et en A2 tu trouvera "1"

j'arrete la mon explication si tu ne comprend pas j'y peux plus rien pour toi

0