Compter occurences dans une cellule d'excel
jeremie
-
pcturbo Messages postés 581 Statut Contributeur -
pcturbo Messages postés 581 Statut Contributeur -
Bonjour,
J'ai un problème apparemment simple, mais je me casse la tête dessus.
Dans une cellule de excel, je voudrais compter le nombre de point-virgule (;)
Par exemple
Si j'ai romain; garis; antoine
je voudrais avoir comme résultat 2
Si j'ai romain garis; antoine
Je voudrais avoir comme résultat 1
Etc.
Si vous avez des solutions, ce serait super!
Merci beaucoup,
J.
J'ai un problème apparemment simple, mais je me casse la tête dessus.
Dans une cellule de excel, je voudrais compter le nombre de point-virgule (;)
Par exemple
Si j'ai romain; garis; antoine
je voudrais avoir comme résultat 2
Si j'ai romain garis; antoine
Je voudrais avoir comme résultat 1
Etc.
Si vous avez des solutions, ce serait super!
Merci beaucoup,
J.
A voir également:
- Compter occurences dans une cellule d'excel
- Liste déroulante excel - Guide
- Excel compter cellule couleur sans vba - Guide
- Aller à la ligne dans une cellule excel - Guide
- Proteger cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
1 réponse
Un petit casse-tête qui sort de l'ordinaire...
On peut le faire bien-sûr avec une macro mais aussi très rapidement avec de simples formules.
Soit une colonne A avec dans chaque cellule une liste de chaînes et des point-virgules peut-être quelque part dedans.
Dans mon exemple la ligne 1 a servi pour des libellés de colonne donc mes données commencent ligne 2.
Procédé : dans les colonnes B...E (je gère jusqu'à 4 p-v dans la cellule A) je relève successivement la position du premier p-v, du deuxième,...etc. La dernière colonne compte le nombre de positions trouvées.
Exemple : voici le contenu de six cellules : A2...F2
A2 : alain;bernard;charles;denis [les données à analyser]
B2 : =SI(ESTERREUR(CHERCHE(";";$A2;1));" ";CHERCHE(";";$A2;1)) [relève position 1er p-v]
C2 : =SI(ESTERREUR(CHERCHE(";";$A2;B2+1));" ";CHERCHE(";";$A2;B2+1)) [commence la recherche à la position du p-v d'avant, +1]
D2 : =SI(ESTERREUR(CHERCHE(";";$A2;C2+1));" ";CHERCHE(";";$A2;C2+1)) [la même chose - suffit donc de recopier C2 vers D2 et E2]
E2 : =SI(ESTERREUR(CHERCHE(";";$A2;D2+1));" ";CHERCHE(";";$A2;D2+1))
F2 : =NB(B2:E2) [nombre de nombres dans la plage d'analyse : la valeur que tu veux obtenir]
Signification de la formule B2 : "si la recherche d'un ";" dans A2 donne une erreur, alors mettre un espace; sinon mettre la position du premier ";" en cherchant à partir du premier caractère".
Signification de la formule C2 : "si la recherche d'un ";" dans A2 après celui trouvé dans B2 donne une erreur, alors mettre un espace; sinon mettre la position du ";" suivant en cherchant à partir du premier caractère après le p-v trouvé dans B2".
La formule B2 est donc différente, pour commencer au début. Les autres C2 à E2 sont identiques excepté l'ajustement de colonne.
Noter que la référence mixte absolue/relative "$A2" la permet d'être recopiée vers la droite toute en référençant toujours la colonne A mais aussi copiée vers le bas (la plage B2:F2 peut être copiée vers le bas sur autant de lignes que l'on veut) pour référencer la ligne courante.
Si on risque de rencontrer plus de 4 point-virgules dans la colonne A il suffit d'inserrer de nouvelles colonnes au besoin, avant la présente colonne F et y copier vers la droite depuis E.
Exemple de résultat : https://www.cjoint.com/?jpaV5ZLsSS
Pour faire plus joli, il vaut mieux cacher les colonnes B à E...
On peut le faire bien-sûr avec une macro mais aussi très rapidement avec de simples formules.
Soit une colonne A avec dans chaque cellule une liste de chaînes et des point-virgules peut-être quelque part dedans.
Dans mon exemple la ligne 1 a servi pour des libellés de colonne donc mes données commencent ligne 2.
Procédé : dans les colonnes B...E (je gère jusqu'à 4 p-v dans la cellule A) je relève successivement la position du premier p-v, du deuxième,...etc. La dernière colonne compte le nombre de positions trouvées.
Exemple : voici le contenu de six cellules : A2...F2
A2 : alain;bernard;charles;denis [les données à analyser]
B2 : =SI(ESTERREUR(CHERCHE(";";$A2;1));" ";CHERCHE(";";$A2;1)) [relève position 1er p-v]
C2 : =SI(ESTERREUR(CHERCHE(";";$A2;B2+1));" ";CHERCHE(";";$A2;B2+1)) [commence la recherche à la position du p-v d'avant, +1]
D2 : =SI(ESTERREUR(CHERCHE(";";$A2;C2+1));" ";CHERCHE(";";$A2;C2+1)) [la même chose - suffit donc de recopier C2 vers D2 et E2]
E2 : =SI(ESTERREUR(CHERCHE(";";$A2;D2+1));" ";CHERCHE(";";$A2;D2+1))
F2 : =NB(B2:E2) [nombre de nombres dans la plage d'analyse : la valeur que tu veux obtenir]
Signification de la formule B2 : "si la recherche d'un ";" dans A2 donne une erreur, alors mettre un espace; sinon mettre la position du premier ";" en cherchant à partir du premier caractère".
Signification de la formule C2 : "si la recherche d'un ";" dans A2 après celui trouvé dans B2 donne une erreur, alors mettre un espace; sinon mettre la position du ";" suivant en cherchant à partir du premier caractère après le p-v trouvé dans B2".
La formule B2 est donc différente, pour commencer au début. Les autres C2 à E2 sont identiques excepté l'ajustement de colonne.
Noter que la référence mixte absolue/relative "$A2" la permet d'être recopiée vers la droite toute en référençant toujours la colonne A mais aussi copiée vers le bas (la plage B2:F2 peut être copiée vers le bas sur autant de lignes que l'on veut) pour référencer la ligne courante.
Si on risque de rencontrer plus de 4 point-virgules dans la colonne A il suffit d'inserrer de nouvelles colonnes au besoin, avant la présente colonne F et y copier vers la droite depuis E.
Exemple de résultat : https://www.cjoint.com/?jpaV5ZLsSS
Pour faire plus joli, il vaut mieux cacher les colonnes B à E...