Bonjour à tous,
Je dois dans une feuille excel déterminer le poid moyen relevé sur des composants.
Mais, en fonction des fabricants ce poid n'est pas forcement le meme. D'ou la moyenne.
Dans ma liste de composants (colonne A), j'ai plusieurs valeurs de masse suivant l'opérateur. (colonne C et D). Un composant est de la même famille dès lors ou la référence en colonne B est identique. Le soucis est que je n'arrive pas avec l'aide de la fonction for each range à selectionner tout les composants d'une même référence et d'en calculer la moyenne de poids.
Mon cerveau sais quoi faire mais je n'arrive pas à traduire cela en vba.
voici ce à quoi je pensais :
1) balayage avec for each C mais comment faire pour compter le nombre d'occurences? comment stocker l'info?
2) quand j'ai trouvé mes occurences(3 pour le cas), comment récupérer les valeurs de poids et faire la moyenne sans tenir compte des 0 ou vide (je vais devoir remplacer l'un ou l'autre par 0 ou vide). Moyenne pour l'opérateur de la colonne C à coller dans la colonne F et celui de l'opérateur de la colonne D en G.
J'ai pensé à des variable tableau mais je ne sais comment procéder.
Merci pour votre aide
Calcul poids.xlsx
3) Ecrire le résultat dans la colonne
EDIT : Je me repond à moi-même :
j'ai avancé sur la recherche de la valeur : mon idée serait de prendre la valeur de la colonne E (Verif Code : teste si la valeur est identique à la suivante) et de dire, si Var=A alors copier valeur cellule C en mémoire et ainsi de suite. Incrémenter un compteur pour définir le nombre d'occurence (variable Compteur= incrémenté à chaque boucle tans que c'est un puis ajouter 1 pour le dernier à 0)
Qu'en pensez vous?
(Code emprunté à ouskel'n'or dans ce même forum) et adapté à mon besoin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Sub For_X_to_Next_Colonne() Dim FL1 As Worksheet, Cell As Range, NoCol As Integer Dim NoLig As Long, DerLig As Long, Var As Variant Dim Compteur as Long Compteur=0 'Instance de la feuille qui permet d'utiliser FL1 partout dans 'le code à la place du nom de la feuille Set FL1 = Worksheets("Feuil2") 'Détermine la dernière ligne renseignée de la feuille de calculs '(Voir explication sur l'utilisation de Split en bas de cette discussion) DerLig = Split(FL1.UsedRange.Address, "$")(4) 'Fixe le N° de la colonne à lire NoCol = 5 'Utilisation du N° de ligne dans une boucle For ... Next For NoLig = 1 To DerLig Var = FL1.Cells(NoLig, NoCol) Compteur = Compteur + 1 Next Set FL1 = NoThing End Sub
Partager