Compter le nombre d'apparition d'une donnée dans un tableau

wampus

XLDnaute Nouveau
Compter le nombre d'apparition d'une donnée dans un tableau[Repondu]

Bonjour à tous je vous contact une nouvelle fois car j’ai toujours un petit problème au niveau du parcours de mon tableau
.
Effectivement je souhaite connaître le nombre de fois qu’une donnée est présente dans mon tableau (à taille variable).

-J’ai un tableau contenant 7 colonnes de A à G. Je dois dans un premier temps regarder si la cellule de la colonne E contient la même valeur que la cellule M3.

-Ensuite dans ma colonne D se trouve des cellules avec des données de ce genre :

AA6 ou AA5 ou AA4 ou AA3 ou AA8 ou AA9 ou AN ou ADP …

J’aimerais savoir combien de fois je peux trouver la valeur AA6 (par exemple) qui est dans la colonne D grâce à la cellule juste a coté en EX( qui doit être égal à la cellule M3).

Il faut également qu’elle réponde à une deuxième condition qui est la suivante :
Je dois soustraire l’année en cours au chiffre suivant les lettres « AA » est que le résultat donne 2003.

Ex : La valeur en D5 est AA6, je dois faire ce calcul
2009 – 6 = 2003

Donc forcement cette année seul les AA6 doivent être compté :rolleyes:

Si ce n’est pas le cas il ne doit pas être additionné au nombre de fois ou je trouve l’ élément. Voici le code que j’ai mis au point mais qui pour une raison que j’ignore ne me donne pas la bonne réponse.:confused: ^^

Pour terminer je renvois le nombre de fois ou j’ai trouvé cette valeur dans la cellule J3.
HTML:
Sub CompteAA()

    Dim n As Integer
    Dim nbAAenOk As Integer

    nbAAenOk = 0
    n = 3

    For Each cel In Range([A5], [A65000].End(xlUp))
       If Range("E" & n) = [M3] Then
          If Left(Range("D" & n), 2) = "AA" Then
            If Year(Date) - Val(Right(Range("D" & n), 2)) = 2003 Then
                nbAAenOk = nbAAenOk + 1
            End If   
          End If      
      End If    
    n = n + 1
    Next    
    Range("J3") = nbAAenOk
    
'
End Sub

Je vous envois un fichier pour que ce soit plus clair.:eek:
 

Pièces jointes

  • Exem.xls
    39.5 KB · Affichages: 147
  • Exem.xls
    39.5 KB · Affichages: 157
  • Exem.xls
    39.5 KB · Affichages: 148
Dernière édition:

criscris11

XLDnaute Accro
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Bonjour,
Je ne sais pas si tu veux absolument du VBA mais en attendant les VBéistes du forum, je te propose une solution par formule.
Bon après-midi.
 

Pièces jointes

  • Copie de Exem.xls
    36.5 KB · Affichages: 286
  • Copie de Exem.xls
    36.5 KB · Affichages: 286
  • Copie de Exem.xls
    36.5 KB · Affichages: 290

wampus

XLDnaute Nouveau
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Merci d'avoir pris le temps de répondre.
En faite il faudrait que je lance dans une macro c'est pour ça que je voulais l'avoir en VBA. Et il faudrait également que je puisse soustraire l'année en cours à la valeur qui se trouve en colonne D juste après les AA en question. :eek:

Un peu compliqué mais, ce qui se trouve après le AA veut dire quelque chose ^^.
Exemple : On a AA6 dans la colonne, pour prendre que le 6 je fais Val(Right(Range("D" & n), 2))) et je la soustrais à l'année en cours grâce à Year(Date) donc cela me donne 2003 et donc je peux compter cette ligne comme étant correct.

Mais je comprends pas pourquoi mon "algo" ne fonctionne pas il me retourne 2 alors que je devrais avoir 3 dans l'exemple :confused:
 

criscris11

XLDnaute Accro
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Re,
Si je résume : mon départ est bon mais il faut en plus retrancher la valeur numérique qui est après AA et la soustraire à l'année en cours : correct ?
Cette valeur est fixe ou variable ?
Pourrais tu faire une exemple concret détaillé ?
 

criscris11

XLDnaute Accro
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Re,
Une piste peut-être : tu avais des espaces dans ta colonne D après les valeurs donc si ta macro agit vers la droite pour extraire le chiffre situé après AA, c'est peut-être pour cela que çà ne fonctionnait pas.
Enlèves les espaces en trop en colonne D et refait un test avec ta macro.
 

Raja

XLDnaute Accro
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Bonjour, Salut à tous,

Il y a une erreur de syntaxe dans ton code :

Code:
For Each cel In Range([A5], [A65000].End(xlUp))

La premier cellule doit être A3 au lieu de A5. C'est pour cette raison, le nb de lignes de la plage est moindre et ainsi la boucle ne vas pas jusuqu'à la fin. Je pense que les lignes ont été sûrement supprimées dans la feuille qui crée ce décalage. Modifié comme ceci, ça doit normalement marcher.

Code:
For Each cel In Range([A3], [A65000].End(xlUp))
 
Dernière édition:

Fo_rum

XLDnaute Accro
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Salut,

à quoi sert la boucle For Each ... ?
j'aurais fait, avec ce que j'ai compris :
Code:
Sub CompteAA()
  [J3] = ""
  For n = 3 To [A65000].End(xlUp).Row
    If Range("E" & n) = [M3] Then
      If Left(Range("D" & n), 2) = "AA" And (Year(Date) - Val(Right(Range("D" & n), 2))) = 2003 Then [J3] = [J3] + 1
    End If
  Next
End Sub
 

wampus

XLDnaute Nouveau
Re : Compter le nombre d'apparition d'une donnée dans un tableau

MDR :p

Raja vient de trouver mon erreur ...Sur mon exemple ma boucle ne partait pas du bon endroit. Je gagne la palme du boulet lol. :D Pourtant il me semblait avoir essayer sur un tableau de 5000 lignes et l'algo me retournait un nombre totalement insensé. Je vais revoire mon fichier d'origine...

Merci beaucoup à tous.
 

Catrice

XLDnaute Barbatruc
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Bonjour,

si joint la formule de Crisis avec le critere de l'annee en plus.
Et une solution Macro :

Sub CompteAA()
For Each X In Range([D3], [D65536].End(xlUp))
Var1 = Right(X, 1)
If Var1 <> "" And IsNumeric(Var1) Then
If Left(X, 2) = "AA" And X.Offset(0, 1) = [M3] And Year(Now) - Var1 * 1 = 2003 Then i = i + 1
End If
Next
Range("J4") = i
End Sub

Attention, il y a des espaces apres de chiffres des AA
 

Pièces jointes

  • Copie de Exem.xls
    39.5 KB · Affichages: 116
  • Copie de Exem.xls
    39.5 KB · Affichages: 119
  • Copie de Exem.xls
    39.5 KB · Affichages: 131

criscris11

XLDnaute Accro
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Re à tous, bonsoir Catrice,
Catrice, est ce normal que tu as validé le SOMMEPROD en matriciel car par définition SOMMEPROD est une formule matricielle ?
J'ai fait un test sans la matricielle et cela me donne bien le même résultat.

PS : ma question est juste une curiosité et pour ma culture personnelle.
 

wampus

XLDnaute Nouveau
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Merci criscris mais le résultat renvois 1 alors qu'il devrait renvoyer 3 :s

Bisar je viens de rééssayer mon algo sur mon fichier de 4000 lignes et il me trouve encore des trucs insensé.... Vraiment curieux ... Je continue de creuser ^^

L'erreur vient tout simplement d'un de mes anciens algos .... Donc comme ils sont tous liées ca fait des erreurs de fou lol
 
Dernière édition:

criscris11

XLDnaute Accro
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Re,
C'est normal que dans le fichier posté par Catrice, tu trouvais 1 car elle a changé la valeur de M3 qui était à l'origine du fil FDA en FRA.
Refaits un test, tu verras avec FDA on trouve bien 3. Cela m'a permis de savoir pourquoi Catrice a validé la formule SOMMEPROD en matricielle mais maintenant il va falloir qu'elle m'explique pourquoi.
Bonne soirée à tous.
 

Catrice

XLDnaute Barbatruc
Re : Compter le nombre d'apparition d'une donnée dans un tableau

Bonsoir,

@Wampus,
J'ai remarqué qu'il y avait des espaces à la fin de certaines données. Regardes si ça n'a pas une incidence sur tes resultats.

@criscris11
IL va tenter de l'expliquer.
En fait, je crois que c'est lié au SI qui ne renvoit pas une matrice dans la formule. Je l'utilise pour exclure les erreurs lorsque que la fin de la chaine n'est pas un chiffre.
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
248
Réponses
14
Affichages
734

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat