Comtage de lignes dans excel vba [Fermé]

Signaler
-
Messages postés
24111
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2021
-
Bonjour,
Je suis débutant en vba et je voudrais faire une boucle qui me permet de compter combien de fois un chiffre est présent dans une série de chiffres.
Plus précisément:
Dans la colonne A j'ai environ 3000 valeurs qui possèdent un des 100 choix possibles (choix1, choix 2, choix 3 etc..). Je voudrais faire une macro qui me permettra de calculer combien il y a t-il de valeur pour chaque choix.
Je voudrais que le résultat s'affiche dans la colonne B, de B1 jusqu'à B100.

Merci par avance de votre aide

4 réponses

Messages postés
10084
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
22 juin 2021
1 154
Bonjour,
Pourquoi pas simplement avec une fonction :
en [B1] =NB.SI(A:A;"Choix 1")
en [B2] =NB.SI(A:A;"Choix 2")
............
en [B100] =NB.SI(A:A;"Choix 100")


J'ai pensé à cette solution, mais dans ce cas je dois rataper à la main 100 fois le choix et j'ai peur de ne pas omettre qqch.
Messages postés
10084
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
22 juin 2021
1 154
Bonjour,
Ou se trouve votre liste des choix ?
Quelles sont les valeurs de ces choix..?

Voir exemple : https://www.cjoint.com/?3Kgp3I3LCvR


Salutations.
Le Pingou
Messages postés
16477
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
10 juin 2021
3 189
Bonjour,

Cela se fait En 5 minutes avec un Tableau Croisé Dynamique sans se prendre la t^te avec des formules et n'importe quel texte dans la colonne A

mais si on tient vraiment à une macro (pourquoi?... avant de penser Macro, penser XL)
en voici une pour le fun vite fait sur le gaz

Sub recenser_choix() 
Dim D_choix As Object, plage As Range 
Dim derlig As Integer, cptr As Integer 
Dim T_in(), uniq(), T_nbre(0 To 99, 0 To 1) 

Application.ScreenUpdating = False 
Set D_choix = CreateObject("scripting.dictionary") 
derlig = Columns("A").Find("*", , , , , xlPrevious).Row 
Set plage = Range("A1:A" & derlig) 
T_in = Application.Transpose(plage.Value) 

For cptr = 1 To derlig 
     If Not D_choix.exists(T_in(cptr)) Then D_choix.Add T_in(cptr), "" 
Next 
uniq = D_choix.keys 
For cptr = 0 To UBound(uniq) 
     T_nbre(cptr, 0) = uniq(cptr) 
     T_nbre(cptr, 1) = Application.CountIf(plage, uniq(cptr)) 
Next 

     Range("B1:C100") = T_nbre 
End Sub 


Michel
Messages postés
24111
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
20 juin 2021
6 809