Après avoir passé un certain temps à chercher sur un forum , je n'ai pas trouvé de réponse satisfaisante.
La question est toute bête. J'ai deux colonnes, une avec un montant, et je veux mettre la valeur absolue dans la deuxième collone. J'ai fait ce type de formule, qui ne marche pas:
ref = Range("G" & i) 'je déclare ma variable en disant que la colonne G (avec mon montant) va varier en fonction du i qui sera la position de la ligne
i = 2
While i < xl(down) 'boucle jusqu'à la dernière ligne de mon tableau
If ref < 0 Then
Range("F" & i).Value = -ref 'si le montant est inférieur à 0, alors je mets dans la colonne d'a côté - le montant => - par moins ca fait + ..
Else
Range("F" & i).Value = ref
End If
i = 2
ref = Range("G" & i) 'je déclare ma variable en disant que la colonne G (avec mon montant) va varier en fonction du i qui sera la position de la ligne
While i < Range("g1").End(xlDown) 'boucle jusqu'à la dernière ligne de mon tableau
If ref > 0 Then
Range("F" & i).Value = -ref 'si le montant est inférieur à 0, alors je mets dans la colonne d'a côté - le montant => - par moins ca fait + ..
Else
Range("F" & i).Value = ref
End If
i = i + 1
Wend
j'ai déplacé l'initialisation de la variable ref car i=2 était après et j'ai corrigé la condition de la boucle while range("g1").......
a plus
edit : méfie toi des boucles while, elles sont lentes et peuvent vite se transformer en boucle sans fin
préfère leur des boucles for...to...
for i=1 to range("a65536").end(xlup).row
if cells(7,i)>0 then
Range("F" & i).Value = -cells(7,i)'si le montant est inférieur à 0, alors je mets dans la colonne d'a côté - le montant => - par moins ca fait + ..
Else
Range("F" & i).Value = cells(7,i)
End If
next i
franchement un grannnnnd merci pour votre réactivité!
Par contre j'arrive pas à comprendre le fonctionnement . par exemple si je veux qu'il me recopie dans la colonne B les infos de la colonne A (ligne 1 à 10 par exemple), pourquoi est ce que ce genre de texte ne marche pas ?
i = 2
While i<10
Range("B" & i).Value = range ("A" & i). value
i=i+1
wend
J'aimerais vraiment comprendre pour la suite pour éviter de vous déranger à chaque fois..
de mémoire on ne peut sortir de ces boucles qu'a travers un violent exit sub
de plus on "double" les temps de traitement, lorsque que l'on compare i<10 et lors de l'incrémentation i=i+1
enfin, si on oublie de réinitialiser la variable i avant de lancer la boucle, on peut avoir des surprises, test le code suivant pour comprendre que tu ne passes jamais par la boucle while
ah ok je comprends l'idée. et exit sub c'est comme end sub, ca marque la fin de la macro ?
j'ai essayé mon code dans une feuille vierge et ca marche effectivement, alors que dans ma "grosse macro" ca ne marche pas, c'est peut etre du au fait que je n'ai pas réinitialisé mon i, comme tu me l'as justement fait remarqué.