Rempli le contenu d'une cellule avec VBA

arnaud75017

XLDnaute Junior
Bonjour à tous,

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 = i + 1
Wend



Pourriez vous m'éclairer ? merci par avance
 

Hervé

XLDnaute Barbatruc
Re : Rempli le contenu d'une cellule avec VBA

salut

j'ai pas testé, juste corrigé un peu ton code :

Code:
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

edit : salut pierrot :)
 
Dernière édition:

arnaud75017

XLDnaute Junior
Re : Rempli le contenu d'une cellule avec VBA

Les deux lignes de code de kjin sont parfaites.

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..

Bon we à vous
 
Dernière édition:

Hervé

XLDnaute Barbatruc
Re : Rempli le contenu d'une cellule avec VBA

re arnaud, salut paf et kjin :)

tu ne déranges personne.

il marche tres bien ton code, pas de souci

on est juste pas fan de ces boucles.

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

For i = 11 To 15
Next i

While i < 10
MsgBox "salut"
i = i + 1
Wend

a plus
 

arnaud75017

XLDnaute Junior
Re : Rempli le contenu d'une cellule avec VBA

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é.

bonnes fêtes de fin d'année!
 

Statistiques des forums

Discussions
312 453
Messages
2 088 551
Membres
103 881
dernier inscrit
malbousquet