XL 2013 Fonction SI avec boucle en VBA

geekpok

XLDnaute Nouveau
Bonjour,

Je souhaiterais faire une macro en VBA qui dit que si il y a rien dans la cellule Q2 alors de mettre la valeur de X2 et que si il y a une valeur déjà inscrite dans Q2 de ne rien faire.
Je souhaiterais ensuite quel effectue une boucle pour vérifier toutes les cellules de la colonne Q.
Voici ce que j'ai essayé fonctionne sur la cellule Q2 met je n'arrive pas à bouclé sur les autres cellules Q3,Q4...

Je n'ai pas mis mon fichier en pièce jointe car il y a beaucoup de donné et macro dedans pour l’alléger

Sub test3()

Dim cellule As Range

For Each cellule In Range("Q:Q")

If Range("Q2") = "" Then ' => SI condition validée ALORS
Range("Q2") = Range("X2")

Next cellule

End If

End Sub
 

geekpok

XLDnaute Nouveau
Merci j'ai une erreur Next without For
macro.jpg
 

JBARBE

XLDnaute Barbatruc
Il manque un "End If" (je n'avais pas vérifié) :

Code:
  For Each cellule In Range("B1", Cells(Rows.Count, 2).End(xlUp))
    If Range("Q2") = "" Then ' => SI condition validée ALORS
      Range("Q2") = Range("X2")
    End If
  Next cellule

Daniel
Bonjour à tous,
Non seulement le Next cellule était mal placé ( avant le End if )
VB:
For Each cellule In Range("Q:Q")

If Range("Q2") = "" Then ' => SI condition validée ALORS
Range("Q2") = Range("X2")

Next cellule

End If
Erreur corrigée !
Bonne journée à tous !
 

geekpok

XLDnaute Nouveau
Je n'ai plus le message d'erreur mais il ne fait pas la boucle dans la cellule Q3 puis Q4 ..

Sub test3()

Dim cellule As Range

For Each cellule In Range("Q:Q")

If Range("Q2") = "" Then ' => SI condition validée ALORS
Range("Q2") = Range("X2")

End If

Next cellule

End Sub
 

JBARBE

XLDnaute Barbatruc
Re,
Bon sang, tu n'as rien compris !
Tu fais une analyse de la cellule Q2 !
Il n'y a pas besoin de vérifier toute la colonne Q !
Essai ceci qui revient à la même solution :
VB:
Sub test3()

Dim cellule As Range
If Range("Q2") = "" Then ' => SI condition validée ALORS
Range("Q2") = Range("X2")
End If
End Sub
 

JBARBE

XLDnaute Barbatruc
Essaie :

VB:
  For Each cellule In Range("X1", Cells(Rows.Count, "X").End(xlUp))
    If Cells(cellule.Row, "Q") = "" Then ' => SI condition validée ALORS
      Cells(cellule.Row, "Q") = Range("X2")
    End If
  Next cellule

Daniel
Bonjour danielco,
Dans ce code il n'est plus question de la cellule Q2 !
Donc Q2 ne servait à rien !
Erreur de geekpod qui c'est mal exprimé !
Bonne journée !
 

danielco

XLDnaute Accro
Pfff ! des fois, c'est dur, le matin...

VB:
  For Each cellule In Range("X2", Cells(Rows.Count, "X").End(xlUp))
    If Cells(cellule.Row, "Q") = "" Then ' => SI condition validée ALORS
      Cells(cellule.Row, "Q") = cellule
    End If
  Next cellule

Ca doit être correct, cette fois.

Daniel
 

Discussions similaires

Réponses
2
Affichages
148
Réponses
7
Affichages
321
Réponses
0
Affichages
148
Réponses
12
Affichages
563

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 210
Membres
103 158
dernier inscrit
laufin