comptage de données...

  • Initiateur de la discussion Initiateur de la discussion Enfazz
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

Enfazz

Guest
Bonjour à tout le forum !!

Voilà, j'ai deux feuilles la première feuille à ce format par exemple la:

Id Nom Codeinc
----------------------------
001 Dupont 802
002 Dufour 211
...
...

la seconde table à ce format ci , elle contient la description des codeinc.
Dans cette table chaque donnée est unique.

Codeinc Libellé
----------------------------
211 Vomissement
...
802 Fracture


Je voudrais, grâce à du code VBA, savoir combien il y a eu d'incidents 211 ou 744 etc... à partir de ma table principale(la première). J'ai essayé plein de trucs mais rien de concluant. Pourtant ça semble facile comme ça ms je galère....Il faut savoir qu'il y a plus de 4000 incidents donc j'essais de trouver un moyen pour ne pas avoir à les traiter un par un........

g essayé des trucs dans ce genre mais mes boucles trippent, démarrent à 144 etc... bref je suis largué.

Sub occur(ligne as Integer)
cpt=0
'Recherche ds la table 1
For Each c In Worksheets(1).Range("Q2:Q340").Cells
'Recherche ds table 2
For each cel In Worksheets(2).Range("A" & ligne).Cells
If cel=c Then
cpt=cpt+1
End if
Next cel
Next c
End Sub


Sub Macro()
Dim i as Integer
For i=2 to 4325
occur(i)
Next i
End Sub

Si quelqu'un a une soluce....
Merci d'avance.
 
Salut Enfazz,

Je ne sais pas pourquoi tu tiens à une solution en code vba car il y en a une sans : le tableau croisé dynamique; ensuite pour traduire les évènement : un recherchev : voir fichier joint

Tcho
 

Pièces jointes

Bonsoir Enfazz,

Dans VBA, tu peux transférer les 2 listes dans des tableaux variant avant d'effectuer le comptage (c'est plus rapide et plus facile pour les tests).

Je te joins un exemple qui pourra peut-être t'aider.

Cordialement.
Didier
 

Pièces jointes

Salut les gars

Bien ta macro mDF, cependant, si les listes de base s'allongent, il sera, alors, obligé de modifier la macro à chaque fois.

Alors pourquoi ne pas prévoir ce cas de suite, en rendant variable les plages
des listes, tel que :

Private Sub btnComptage_Click()
Dim TabFeuil1 As Variant
Dim TabCompte As Variant
Dim L1 As Integer
Dim L2 As Integer
Dim i1
Dim i2
i1 = Sheets(1).Range("A2").End(xlDown).Row
i2 = Sheets(2).Range("A2").End(xlDown).Row

TabFeuil1 = Sheets(1).Range("A2" & ":C" & i1).Value
TabCompte = Sheets(2).Range("A2" & ":C" & i2).Value
For L2 = 1 To i2 - 1
For L1 = 1 To i1 - 1
If TabCompte(L2, 1) = TabFeuil1(L1, 3) Then
TabCompte(L2, 3) = TabCompte(L2, 3) + 1
End If
Next L1
Next L2

Sheets(3).Range("A2" & ":C" & i2).ClearContents
Sheets(3).Range("A2" & ":C" & i2).Value = TabCompte
End Sub


le " -1", c'est parce que les listes commencent à la ligne 2

For L2 = 1 To i2 - 1
For L1 = 1 To i1 - 1


Et si les listes sont susceptibles de contenir des lignes vides, remplacer :

i1 = Sheets(1).Range("A2").End(xlDown).Row
i2 = Sheets(2).Range("A2").End(xlDown).Row

Par :

i1 = Sheets(1).Range("A65535").End(xlUp).Row
i2 = Sheets(2).Range("A65535").End(xlUp).Row



@ +

Bonne journée à vous !

Moa
 
Salut Enfazz !

Je viens de tester plusieurs fois et je n'ai pas de problème de compteur, ni de plage.

Tes listes commencent-elles bien en ligne 2.

Je regarderai plus en profondeur dès demain, quand-même.

@ +

Moa
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
40
Affichages
3 K
Réponses
4
Affichages
581
Réponses
3
Affichages
835
Retour