recherche d'occurence par rapport à une chaine de caractères

wonder68

XLDnaute Nouveau
Bonjour,



Je me permets de vous mettre à contribution sur un problème que je rencontre. Je n'arrive pas à trouver de fonction qui pourrait m'aider. Ou alors un mix de formules auquel je pense, mais je ne saurai combiner.

Mon problème est le suivant : dans le fichier joint, j'ai une série de chiffres, les 5 chiffres du milieu représentant une famille. J'aimerai pouvoir savoir combien de fois j'ai une ligne avec la même famille. Par exemple dans le fichier, 54938 revient 2 fois, 53568 2 fois également, etc, le but final étant de pouvoir faire un pareto par la suite.

Pourriez-vous éventuellement me dire quelle fonction serait adaptée ? On m'a parlé des fonctions left et right, mais ça ne me parle guère, ou encore de ifsum, mais non, je ne suis pas assez connaisseur.



Merci par avance pour votre aide.

Cordialement
 

Pièces jointes

  • rech_occur.xlsx
    7.8 KB · Affichages: 24
  • rech_occur.xlsx
    7.8 KB · Affichages: 28

Jocelyn

XLDnaute Barbatruc
Re : recherche d'occurence par rapport à une chaine de caractères

Bonjour le Forum,
Bonjour wonder68,

Un essai en fichier joint

Cordialement
 

Pièces jointes

  • rech_occur.xlsx
    8.4 KB · Affichages: 28
  • rech_occur.xlsx
    8.4 KB · Affichages: 31

vgendron

XLDnaute Barbatruc
Re : recherche d'occurence par rapport à une chaine de caractères

Bonjour

hello Jocelyn

En B2 tu tapes cette formule
=SOMMEPROD((STXT($A$1:$A$6;6;5)=STXT(A1;6;5))*1)

et tu tires vers le bas

Stxt extrait les 5 chiffres à partir du 6eme caractère
sommeprod, te retourne le nombre d'occurence pour chaque ligne =formule matricielle
(STXT($A$1:$A$6;6;5)=STXT(A1;6;5)): est une matrice (de 6 lignes dans ton exemple) de vrai ou faux
*1: Vrai*1 = 1
Faux*1=0

sommeprod des 1 et 0 te donne la valeur attendue.
 

wonder68

XLDnaute Nouveau
Re : recherche d'occurence par rapport à une chaine de caractères

Bonjour à vous deux,

Et surtout, waouh, merci pour votre réponse rapide. Merci beaucoup. Par contre, je remarque que peut-être je me suis mal exprimé.
Je vous ai mis en fichier joint une note explicative de ce que j’aimerai. Dans la colonne A, j’ai tous les produits. Dans la colonne D, j’aimerai une formule qui extraie sur les 5 chiffres et qui synthétise (regroupe) par famille. Et dans la colonne E, une formule qui calcule le nombre de fois que la famille est apparue.

J’ai aussi pensé à un TCD mais voilà, mes connaissances sont limitées.
Merci pour votre aide précieuse, c’est vraiment gentil de prendre sur votre temps.
 

Pièces jointes

  • famille_test.xlsx
    10.7 KB · Affichages: 19
  • famille_test.xlsx
    10.7 KB · Affichages: 28

Jocelyn

XLDnaute Barbatruc
Re : recherche d'occurence par rapport à une chaine de caractères

re,

revoila le fichier avec en colonne H une formule pour extraire sans doublons les valeurs représentant les famille et colonne I le nombre d'apparitiion

EDIT oup's Bonjour vgendron
 

Pièces jointes

  • famille_test.xlsx
    12.5 KB · Affichages: 25
  • famille_test.xlsx
    12.5 KB · Affichages: 26
Dernière édition:

wonder68

XLDnaute Nouveau
Re : recherche d'occurence par rapport à une chaine de caractères

Bonjour Jocelyn

Merci pour votre aide. C'est exactement ce que je voulais. Par contre, dans la colonne A, j'ai maintenant rajouté toutes les familles, (environ 9000 lignes) j'ai changé dans votre formule $A$36 en $A$10000, j'ai tiré vers le bas, mais cela ne fonctionne pas. De même la colonne I ne fonctionne pas. Je ne comprends vraiment pas puisque je ne fais que rajouter X lignes, la formule devrait fonctionner non ? Ci-joint le fichier tel que je l'ai modifié. Peut-être j'ai dû rater qquechose.

Merci pour votre aide.
 

Pièces jointes

  • famille_test.xlsx
    103.1 KB · Affichages: 32
  • famille_test.xlsx
    103.1 KB · Affichages: 29

ODVJ

XLDnaute Impliqué
Re : recherche d'occurence par rapport à une chaine de caractères

Bonjour à tous,

1) tu as oublié un 0 dans ton dernier $A$10000
2) il faut valider ta formule par CTRL+MAJ+ENTER car elle est matricielle

Remarque : avec 10 000 données, tu vas avoir le temps de boire un café.

cordialement
 
Dernière édition:

wonder68

XLDnaute Nouveau
Re : recherche d'occurence par rapport à une chaine de caractères

Bonjour ODVJ

J'ai ajouté le 0 dans les 10000, mais rien n'y fait. Je tire la formule vers le bas, et toujours la même référence revient.
En effet, il y en a 10000 pour le moment, mais en fait, je peux aisément réduire de moitié.

Merci
 

Jocelyn

XLDnaute Barbatruc
Re : recherche d'occurence par rapport à une chaine de caractères

re,
Bonjour ODVJ,

bon le problème peut venir que ta plage intégre des cellule vide en ecrivant A1:A10000 donc je t'ais créé une plage dynamique pour la voir va dans l'onglet formule du ruban et regardes gestionnaire des noms (la plage est nommée famille)

si tu as bien validé de façon matricielle ta formule est entourée par { devant le = et } en fin de formule

je te remet ton fichier

par contre comme le dis ODVJ sur ce nombre de ligne le temps de calcul va etre très long l'idéal serait de passer par du VBA mais la je suis une bille donc je ne pourrais pas t'aider

Cordialement
 

Pièces jointes

  • Copie de famille_test-1.xlsx
    177.3 KB · Affichages: 40

ODVJ

XLDnaute Impliqué
Re : recherche d'occurence par rapport à une chaine de caractères

Bonjour,

Pour compléter le fichier de Jocelyn, que je salue, voici une petite macro, pompée à 98% sur J. Boisgontier.
Code:
Sub comptage()
Application.Calculation = False
  Set dico = CreateObject("Scripting.Dictionary")
  a = [famille]
  For i = LBound(a) To UBound(a)
    b = Split(a(i, 1), "-")(1)
    dico(b) = dico(b) + 1
  Next i
  [H2].Resize(dico.Count, 1) = Application.Transpose(dico.keys)
  [I2].Resize(dico.Count, 1) = Application.Transpose(dico.items)
  [H1].Sort Key1:=[H2], Order1:=xlAscending, Header:=xlYes
Application.Calculation = True
End Sub
J'ai réutilisé le nom dynamique famille.

Le temps de réponse est immédiat. Désolé pour le café.

Cordialement
 
Dernière édition:

wonder68

XLDnaute Nouveau
Re : recherche d'occurence par rapport à une chaine de caractères

Bonjour

Tout d’abord, je tenais à m’excuser pour la réponse tardive. J’avais mon anniversaire et du coup, je me suis pris 4 jours de congés.
Et maintenant, je tenais à vous remercier tous les 2 de m’avoir aidé, c’est exactement ce que je recherchais. Et en effet, jamais je n’aurai eu les compétences pour faire cela tout seul, donc vraiment, mille mille mercis à vous pour votre aide, votre temps.

Bonne journée à vous et encore merci.
 

Discussions similaires

Statistiques des forums

Discussions
311 727
Messages
2 081 962
Membres
101 852
dernier inscrit
dthi16088