Création d'un compteur d'éléments dans cellule

Bonjour à tous,

Je vous mets en pièce-jointe mon fichier test pour représenter le dilemme.

Je cherche une solution permettant de compter le nombre d'éléments que l'on retrouve dans les cellules d'une ou plusieurs colonnes; ces éléments (des prénoms et noms de famille par exemple) sont tous séparés selon ce format :

Cellule A2 = Prenom1 Nom1 | Prenom2 Nom2 | Prenom3 Nom3 | Cellule B2 = 3

Cellule A3 = Prenom1 Nom1 | Prenom2 Nom2 | Cellule B3 = 2

Cellule A4 = Prenom1 Nom1 | Prenom2 Nom2 | Prenom3 Nom3 | Prenom4 Nom4 Cellule B4 = 4

Le séparateur identifié serait le "|" du coup. et dans l'exemple rapide ci-haut, j'aimerais une colonne à droite de A, en B pour chaque ligne qui me dise le nombre de paquets entre "|" qu'il trouve.

Le format "Prenom Nom" peut changer, il peut s'agir de mots entiers simples ou de nombres, mais quoi qu'ils soient, ils sont toujours séparés par le même "|". Si possible, ce serait génial si le code pouvait être exécutable sur une autre colonne (une autre information sous le même format séparateur, en un changement de colonne dans le code).

Aussi, ces éléments courent jusqu'à une ligne inconnu à l'avance. Ce peut-être 200 ou 30,000.

Si quelqu'un a solution pour ce comptage, car je sèche là dessus.

Merci beaucoup par avance,

Cordialement,

G.

21test.xlsx (11.48 Ko)

Essaie ceci :

=SOMMEPROD((NBCAR(A1)-NBCAR(SUBSTITUE(A1;"|";"")))) 

Salut,

Merci pour cette réponse.

La fonction marche bien, 2 remarques cependant :

- J'ai un décalage de 1 sur toutes les valeurs de compte (quand il y a 5 noms, il n'en compte que 4)

=> du coup j'ai modifié la formule par ceci pour que cela fonctionne :

=SOMMEPROD((NBCAR(A2)-NBCAR(SUBSTITUE(A2,"|",""))+1))

- Il se peut que parfois, les cellules à compter se terminent par un séparateur et non pas un mot, du coup SOMMEPROD compte +1 lorsqu'il voit un séparateur en bout de chaine de caractère, ce qui est faux.

Exemple : mayo|ketchup|moutarde = en théorie on devrait compter 3 éléments, SOMMEPROD en compte 3 = ok

Exemple 2 : mayo|ketchup|moutarde| = en théorie on devrait compter 3 éléments toujours, SOMMEPROD en compte 4 = pas ok

Comment lui faire comprendre, qu'il y ait un séparateur en bout ou non, s'il n'y a pas de nom qui suit, ca ne compte pas ?

Merci si tu peux m'éclairer sur ces petites corrections,

G.


Ah et juste une dernière remarque :

Comme j'ai modifié la formule avec un "+1" :

- =SOMMEPROD((NBCAR(B2)-NBCAR(SUBSTITUE(B2,"|",""))+1))

Et bien les cellules où je n'ai aucun nom, au lieu de comtper "0", il compte "1", ce qui bien sur est faux.

Ce peut être corrigé plus tard mais cela exige une pirouette de +..

Y a-t'il moyen dès le départ de faire comprendre que s'il y a un vide, on doit compter 0 ?

Merci encore,

F.


Beh je vais m'auto-répondre pour le 2nd point, même si ca ne marche pas bien :

=(SI($K2="",$L2=0,(SOMMEPROD((NBCAR($K2)-NBCAR(SUBSTITUE($K2,"|",""))+1)))))

Même lorsqu'il trouve une cellule vide, il me marque un résultat (celui de la toute première ligne en l'occurrence, donc ca ne marche pas).

G.

Voilà,

image en PJ,

En fait je comprends pas pourquoi en glissant la formule vers le bas, même les cellules vides à la suite il me marque "2", alors que quand j'exécute la formule à la main par "ENTREE" cellule par cellule, j'ai bien "0" qui apparaît ?

Exécuter la formule en matriciel n'aide pas non plus.

G.

1

J'ai trouvé un truc je crois :

=SI(ESTTEXTE(B1),SOMMEPROD((NBCAR(B1)-NBCAR(SUBSTITUE(B1,"|",""))+1)),0)

Hé bien voilà c'est excellent, quand on a un "élève" qui dépasse le "maître" (en toute modestie), mais c'est intéressant de voir les posteurs s'investir autant !

Je suis d'accord.

Malheureusement j'ai des besoins en traitement de données qui excède très très largement ma formation initiale, en qualité comme en volume du besoin d'ailleurs...

Rechercher des sujets similaires à "creation compteur elements"