Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

comptage de données...

  • Initiateur de la discussion Enfazz
  • Date de début
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.
 
D

Dugenou

Guest
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

  • pour_Enfazz.zip
    2.8 KB · Affichages: 14
M

mDF

Guest
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

  • Comptage.zip
    11.5 KB · Affichages: 16
  • Comptage.zip
    11.5 KB · Affichages: 16
  • Comptage.zip
    11.5 KB · Affichages: 16
M

Moa

Guest
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
 
E

Enfazz

Guest
Les gars votre code est nickel mais je rencontre un petit prob, le compteur ne prend jamais en compte la dernière valeur dans la feuille principale.... vous savez pkoi?
encore merci
 
M

Moa

Guest
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
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…