Bonjour tout le monde! Je suis nouveau sur le forum!
Je suis débutant en VBA et je bloque sur un problème, à savoir effectuer la moyenne des nombres d'une colonne en fonction des valeurs d'une autre colonne.
Dans le fichier en PJ j'aimerais faire la moyenne de la colonne "L" en fonction des valeurs de la colonne "B", c'est-à-dire pour les nombres en "L" qui on la même valeur en "B". J'essaye avec le dictionnaire mais pour l'instant j'y arrive pas!
Je ne sais pas encore ou je dois copier les résultats etc.. en faite c'est le principe que je cherche pour l'instant ou la fonction...
Merci beaucoup si quelqu'un peux m'aider!!
Salut eddy!
Merci pour ton aide!
Cependant j'ai vraiment besoin de trouver (si possible) un moyen en VBA... Pour le moment je peux avoir la somme mais pas la moyenne... En fait je pense si j'utilise un dictionnaire, il me faut un moyen de compter le nombre de doublons par clé...
Merci beaucoup pour votre aide!! J'ai regardé et c’est exactement ce que je voulais!
Pour le moment je vais utiliser le code de Roger que j'arrive mieux à comprendre... Pour la solution avec le TCD je vais me pencher dessus car ça a l'air efficace et c'est surement celle-là que j'utiliserai par la suite!
Désolé mais si c'est pas trop j'ai une question pour toi Roger! Je suis encore débutant et je ne comprends pas à quel moment les plages data1 et data2 sont définis!? Si c'est possible d'avoir une explication ou un commentaire sur le code ça serait très gentil!
Bonne après-midi!
PS: Il n'y a pas de bouton "résolu"?
...Peut-être avec "me" je connaissais pas je regarde comment ça marche
...ça y'est je pense avoir compris pour la définition des plages avec me!! Mais j'aimerais avoir des commentaires pour ce bloc si possible!:
Code:
For i = 2 To UBound(b)
If Not IsEmpty(b(i, 1)) And Not IsEmpty(s(i, 1)) And IsNumeric(s(i, 1)) Then
If ip.Exists(b(i, 1)) Then
v = ip(b(i, 1))
v(0) = v(0) + s(i, 1): v(1) = v(1) + 1
ip(b(i, 1)) = v
Else
ip.Add b(i, 1), Array(s(i, 1), 1)
End If
End If
Next
En fait j'aimerais bien comprendre le code pour avancer dans la compréhension de VBA. De plus j'aimerais utiliser que la colonne des résultats (moyenne) pour l'insérer dans une feuille; cependant comme je ne comprends pas tout j'ai du mal. J'ai essayé de changer les indices mais ça ne marche pas... En fait "v" est un tableau à deux colonnes? comment n'en utiliser qu'une?
En fait j'aimerais bien comprendre le code pour avancer dans la compréhension de VBA. De plus j'aimerais utiliser que la colonne des résultats (moyenne) pour l'insérer dans une feuille; cependant comme je ne comprends pas tout j'ai du mal. J'ai essayé de changer les indices mais ça ne marche pas... En fait "v" est un tableau à deux colonnes? comment n'en utiliser qu'une?
Pas de problème, on expliquera tout ça... ...demain.
J'en étais resté au message #8 dans sa première version (courte). J'ai rédigé quelques explications succinctes dans le document joint, mais elles ne tiennent évidemment pas compte des messages ultérieurs.
Je compléterai demain si possible...
À suivre donc, et bon courage.
ℝOGER2327 #8258
Lundi 2 Merdre 143 (Le Moutardier du Pape - Vacuation) 30 Floréal An CCXXIV, 8,6816h - houlette 2016-W20-4T20:50:09Z
Merci beaucoup ces explications!! Je comprends mieux le code!
Si ce n'est pas trop demandé il y a 2 points qui me posent toujours problème:
ici, si j'ai bien compris on attribue le tableau "v"à la clé b(i, 1)
Code:
v = ip (b( i , 1) )
mais ensuite que signifie la ligne 15:
Code:
ip (b( i , 1) ) = v
?
La deuxième chose c'est la ligne 11 :
Code:
ip.Add b(i, 1), Array(s(i, 1), 1)
ici, une nouvelle clé est crée? Avec un nouveau tableau "array" c'est bien ça? Car il y a un tableau à 2 éléments crée pour chaque clé mais je ne voix qu'un seul tableau c'est "v". Désolé je débute encore en VBA!
Merci encore pour ce fichier explicatif! Je pense qu'après je serai en mesure de modifier le code moi même!
Merci beaucoup ces explications!! Je comprends mieux le code!
Si ce n'est pas trop demandé il y a 2 points qui me posent toujours problème:
ici, si j'ai bien compris on attribue le tableau "v"à la clé b(i, 1)
Code:
v = ip (b( i , 1) )
mais ensuite que signifie la ligne 15:
Code:
ip (b( i , 1) ) = v
?
La deuxième chose c'est la ligne 11 :
Code:
ip.Add b(i, 1), Array(s(i, 1), 1)
ici, une nouvelle clé est crée? Avec un nouveau tableau "array" c'est bien ça? Car il y a un tableau à 2 éléments crée pour chaque clé mais je ne voix qu'un seul tableau c'est "v". Désolé je débute encore en VBA!
Merci encore pour ce fichier explicatif! Je pense qu'après je serai en mesure de modifier le code moi même!
Merci encore pour votre aide! Les explications m'ont permis d'avancer mais je ne comprends pas pourquoi je ne peux pas afficher une seule colonne de résultat?! Par exemple afficher la colonne des moyennes en faisant :
Merci encore pour votre aide! Les explications m'ont permis d'avancer mais je ne comprends pas pourquoi je ne peux pas afficher une seule colonne de résultat?! Par exemple afficher la colonne des moyennes en faisant :