salut tout le monde
j'ai un soucis en VBA, c'est mon premier code dans ce langage, je suis pas encore un expert et je ne connais pas trop les subtilités des boucles dans ce langage
en gros voici l'algorithme que j'essaie de coder:
-Tant que le numéro client est le meme (colonne E), si la cellule de colonne O vaut B, on recupere la valeur de la cellule T et on la stocke dans la variable valbase
-si la cellule de la colonne O vaut R, on recupere la valeur de la cellule de la colonne U et , on l'additionne a valbase (somme) et on la divise par valbase pour obtenir le ratio (variable ratio.)
Une fois que l'on change de client, les 3 variables se remettent a 0 et l'algo recommence.
Le soucis c'est que je suis un noob et que jsuis passé à coté de 3 problèmes majeurs:
L'existence de valbase lorsqu'on passe d'une ligne a l'autre
La remise a zéro des variables
l'imbrication du for pour parcourir les lignes (i) et du do while pour s'assurer qu'on est sur le meme client.
pouvez vous m'aider svp?
Voici le fichier en ligne, http://cl.ly/3S3e1u1E2G2V332H1Y45
J'ai mis des 0 partout par souci de confidentialité, seul les cases utiles sont restées pleines.
les 2 dernières colonnes sont les résultats de la macro (la première le ratio) et la 2eme la valeur de la somme ou de la valbase.
Merci d'avance
Guillaume
ps: si vous ne souhaitez pas télécharger la pièce jointe, voici un screenshot et le code vba:
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
26
27
28
29
30
31 Sub reval() Dim i As Long Dim somme As Double, ratio As Double, valbase As Double For i = 3 To 12 Do While Cells(i, 5).Value = Cells(i + 1, 5).Value If Cells(i, 15).Value = B Then valbase = Cells(i, 20).Value somme = valbase + somme Cells(i, 25).Value = valbase ElseIf Cells(i, 5).Value = Cells(i - 1, 5).Value And Cells(i, 15).Value = R Then somme = Cells(i, 21).Value + somme: Cells(i, 25).Value = somme ratio = valbase / somme Cells(i, 24).Value = ratio End If Loop Next i somme = 0: valbase = 0: ratio = 0 End Sub
Partager