Effectuer une boucle sur une condition
Bonjour à tous
je suis actuellement novice en VBA et comme beaucoup de personnes je rencontre des problemes :
Ma problematique :
je voudrais copier une valeur d'une cellule que si deux conditions sont respectées et la coller dans une autre feuille
Exemple : je copie la cellule C1 que si dans la cellule A1 =manuel et la cellule B1=20
comment puis je faire deux conditions mais surtout effectuer une bloucle qui va tester les autres lignes ? A2,A3 etc
j'espere etre clair merci
loic
Bonjour,
1) Définir la feuille cible : ex. : variable wsC As Worksheet (déclaration), initialisée :
Set wsC = Worksheets("NomFeuil")2) Définir la première cellule cible dans cette feuille : ex. : variable nn% (déclaration var. Integer), initialisée :
nn = 2On peut l'initialiser sur la première ligne vide, etc.
3) Se situer dans la feuille source :
With ActiveSheet
'...
End WithCela si on opère par ex. à partir d'un bouton situé sur la feuille, sinon préférable utiliser le nom de feuille...
4) Définir le parcours dans la feuille source : ex. n% (var. Integer pour chercher la dernière ligne) et i% (var. compteur de boucle) :
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To n
If .Cells(i, 1) = "manuel" And .Cells(i, 2) = 20 Then
'Si condition vérifiée, on opèrera le transfert...
End If
Next i(Noter que les points devant .Cells font se référer l'expression à la feuille mise sous bloc With...)
5) Si la condition est vérifiée :
wsc.Cells(nn, 1) = .Cells(i, 3)
nn = nn + 1On n'a qu'une valeur de cellule à affecter à une autre cellule, on peut donc se dispenser de copier puis de coller, en affectant la valeur de la cellule source à la cellule cible, directement ! (Ce qui est toujours possible dès lors qu'il s'agit de reproduire des valeurs d'une plage à une autre : pas besoin de copier-coller, et c'est plus rapide !)
A la fin on aura transféré toutes les valeurs voulues...
Cordialement.
merci pour votre reactivité je vais donc tester et vous revenir