Compter occurences dans une cellule d'excel
Fermé
jeremie
-
14 sept. 2009 à 20:43
pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024 - 15 sept. 2009 à 00:57
pcturbo Messages postés 567 Date d'inscription samedi 26 juillet 2008 Statut Contributeur Dernière intervention 13 avril 2024 - 15 sept. 2009 à 00:57
A voir également:
- Compter occurences dans une cellule d'excel
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Verrouiller cellule excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
1 réponse
pcturbo
Messages postés
567
Date d'inscription
samedi 26 juillet 2008
Statut
Contributeur
Dernière intervention
13 avril 2024
200
15 sept. 2009 à 00:57
15 sept. 2009 à 00:57
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...