Premier algo en VBA, ca bug!
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:
http://img21.imageshack.us/img21/371...0120702090.png
Code:
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 |