Rechercher : dans
Par :

EXCEL : Traitement chaine de caracteres

Dernière réponse le 15 oct 2007 à 23:28:24 fanfi_du_94, le 9 oct 2007 à 14:12:25 
 Signaler ce message aux modérateurs

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

Configuration: Windows 2000
Internet Explorer 6.0

Meilleures réponses pour « EXCEL : Traitement chaine de caracteres » dans :
Utiliser des accents et autres caractères spéciaux VoirDans la plupart des langages de programmation, on ne peut utiliser directement les accents et autres caractères non-anglosaxon. La solution est l'unicode, une sorte de code universel. Par exemple pour afficher la chaine de caractères : " là, ça...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Javascript - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...

1

xkristi, le 9 oct 2007 à 16:04:58

Bonjour !

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

n'oublie pas de mettre le statut résolu si c'est le cas
xkristi
La vie en plus ...

Répondre à xkristi

2

eriiic, le 9 oct 2007 à 21:45:31

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

Répondre à eriiic

3

xkristi, le 10 oct 2007 à 17:22:47

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
xkristi
La vie en plus ...

Répondre à xkristi

4

eriiic, le 10 oct 2007 à 18:55:57

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

Répondre à eriiic

5

xkristi, le 10 oct 2007 à 19:15:12

Eh bien Eriiic bravo !
je ne fais pas mieux !
Bonne soirée !

xkristi
La vie en plus ...

Répondre à xkristi

6

eriiic, le 10 oct 2007 à 19:22:47

Merci
Bonne soirée à toi aussi :-)

Répondre à eriiic

7

Le Pingou, le 10 oct 2007 à 23:53:12

Bonsoir,
Oui xkristi ,on peut un peu plus si on passe par une petite macro ...
Très la passe de Eriiic... Salutations.
Jean-Pierre

Répondre à Le Pingou

8

Le Pingou, le 11 oct 2007 à 14:31:14

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
Salutations.
Jean-Pierre

Répondre à Le Pingou

9

xkristi, le 11 oct 2007 à 16:58:13

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
xkristi
La vie en plus ...

Répondre à xkristi

10

Le Pingou, le 11 oct 2007 à 18:29:47

Merci, de rein Salutations.
Jean-Pierre

Répondre à Le Pingou

11

eriiic, le 13 oct 2007 à 21:12:16
  • +1

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

Répondre à eriiic

12

Le Pingou, le 13 oct 2007 à 21:33:51

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. Salutations.
Jean-Pierre

Répondre à Le Pingou

13

xkristi, le 13 oct 2007 à 22:09:36

Bravo Eriiic
ça m'étonne , pas devant le rugby ????????
Bonne soirée ! xkristi
La vie en plus ...

Répondre à xkristi

14

eriiic, le 13 oct 2007 à 23:14:49

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

Répondre à eriiic

15

Le Pingou, le 13 oct 2007 à 23:37:45

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. Salutations.
Jean-Pierre

Répondre à Le Pingou

16

just1xpa2, le 14 oct 2007 à 00:49:28

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 Quand la base est saine, ceux qui interviennent derrière toi sont heureux 
à l'inverse, ils te maudissent ...

Répondre à just1xpa2

17

Le Pingou, le 14 oct 2007 à 14:29:58

Bonjour,
Eh bien , désolé, j'ai essayer, votre proposition ne fonctionne pas.
Jean-Pierre

Répondre à Le Pingou

18

just1xpa2, le 14 oct 2007 à 17:22:12

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,
Quand la base est saine, ceux qui interviennent derrière toi­ sont heureux 
à l'inverse, ils te maudissent ...

Répondre à just1xpa2

19

Le Pingou, le 14 oct 2007 à 17:32:07

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.... Salutations.
Jean-Pierre

Répondre à Le Pingou