Appliquer une formule If...then à toute la colonne

Bonjour à tous !

Voila j'ai un petit problème ... il à l'air très simple mais je ne trouve pas la solution en VBA ...

J' ai le code :

Sub test()
If Range("I4") = "Soldé" Then
ElseIf Range("J4") = "" Then
    MsgBox ("Veuillez entrer la date de solde")
End If

End Sub

Cela fonctionne très bien mais que pour la ligne 4 .. je voudrais qu'il fonctionne pour tout le tableau ... Mais je ne trouve pas comment faire ... si vous avez une idée je suis preneuse

Merci d'avance pour votre temps

un essai le fichier excel aurait permis de tester)

Sub test()
for i = 4 to Range("I4").end(xldown).row
If Range("I" & i) = "Soldé" Then
ElseIf Range("J" & i") = "" Then
    MsgBox ("Veuillez entrer la date de solde")
End If 
next
End Sub

Bonjour kalista, Steelson,

Je crois qu'il y a peut-être des cellules vides en colonne I ; dans ce cas, je propose ce code VBA :

Option Explicit

Sub Vérif()
  Dim dlig&, lig&: dlig = Cells(Rows.Count, 9).End(xlUp).Row
  For lig = 4 To dlig
    With Cells(lig, 9)
      If .Value <> "Soldé" And .Value <> "" And .Offset(, 1) = "" Then
        Range(.Address).Offset(, 1).Select
        MsgBox "Veuillez entrer la date de solde en J" & lig
        Exit Sub
      End If
    End With
  Next lig
End Sub

Les lignes où la cellule I est vide sont ignorées ; quand c'est différent de soldé et vide juste à droite (en J) :

1) La cellule J de la ligne est sélectionnée : prêt à y saisir la date de solde (= date d'échéance)

2) Un message est affiché, mais ce serait mieux de l'enlever car on est positionné sur la bonne cellule

3) On sort de la sub pour que l'utilisateur puisse saisir la date ; après : il faudra relancer la macro !

Donc je conseille d'enlever la ligne MsgBox, tout en laissant le Exit Sub

En cas d'ajout de code VBA entre Next lig et End Sub, il faut impérativement remplacer Exit Sub par Exit For


Dans ce fichier Excel, j'ai mis la ligne MsgBox en commentaire (donc elle n'est pas exécutée) :

6exo-kalista.xlsm (13.92 Ko)

Ctrl e ➯ la bonne cellule est sélectionnée ; saisir la date

Ctrl e ➯ la bonne cellule suivante est sélectionnée ; saisir la date

etc...

(si la cellule active reste la même et que ça ne descend plus, c'est que tout est ok !)

dhany

un essai le fichier excel aurait permis de tester)

Sub test()
for i = 4 to Range("I4").end(xldown).row
If Range("I" & i) = "Soldé" Then
ElseIf Range("J" & i") = "" Then
    MsgBox ("Veuillez entrer la date de solde")
End If 
next
End Sub

Steelson, merci pour ton aide !

Lorsque je rentre ce code, j'ai une erreur de syntaxe sur la ligne

ElseIf Range ("J&i")="" Then

est ce que tu as une idée de l'erreur stp ?

Je joins un fichier pour exemple

8exemple.xlsm (162.24 Ko)

Bonjour kalista, Steelson,

Je crois qu'il y a peut-être des cellules vides en colonne I ; dans ce cas, je propose ce code VBA :

Option Explicit

Sub Vérif()
  Dim dlig&, lig&: dlig = Cells(Rows.Count, 9).End(xlUp).Row
  For lig = 4 To dlig
    With Cells(lig, 9)
      If .Value <> "Soldé" And .Value <> "" And .Offset(, 1) = "" Then
        Range(.Address).Offset(, 1).Select
        MsgBox "Veuillez entrer la date de solde en J" & lig
        Exit Sub
      End If
    End With
  Next lig
End Sub

Les lignes où la cellule I est vide sont ignorées ; quand c'est différent de soldé et vide juste à droite (en J) :

1) La cellule J de la ligne est sélectionnée : prêt à y saisir la date de solde (= date d'échéance)

2) Un message est affiché, mais ce serait mieux de l'enlever car on est positionné sur la bonne cellule

3) On sort de la sub pour que l'utilisateur puisse saisir la date ; après : il faudra relancer la macro !

Donc je conseille d'enlever la ligne MsgBox, tout en laissant le Exit Sub

En cas d'ajout de code VBA entre Next lig et End Sub, il faut impérativement remplacer Exit Sub par Exit For


Dans ce fichier Excel, j'ai mis la ligne MsgBox en commentaire (donc elle n'est pas exécutée) :

Exo kalista.xlsm

Ctrl e ➯ la bonne cellule est sélectionnée ; saisir la date

Ctrl e ➯ la bonne cellule suivante est sélectionnée ; saisir la date

etc...

(si la cellule active reste la même et que ça ne descend plus, c'est que tout est ok !)

dhany

Merci dhany pour ta réponse !

Je vois ce que tu me propose et je t'en remercie mais l'idée est vraiment que la message box apparaisse ... Il y a près de 40 personnes qui auront accès à ce fichier, il faut que cela soit très carré. Mais cela est un détail.

Quand j'utilise le fichier que tu as joins, si j'écris dans la cellule I14 par exemple, je ne vais pas directement sur la cellule J14 à moins de lancer la macro manuellement ... Je suis désolée je suis vraiment pas très douée en VBA, je pense que c'est tout bête pour qu'elle soit automatique ... Ou alors il faut passer par un bouton ..

En tous les cas merci de ton aide

Merci pour toutes les infos de ta réponse ; pour ce que tu as demandé à Steelson :

Ce n'est pas : ElseIf Range ("J&i")="" Then ; c'est : ElseIf Range("J" & i) = "" Then

attention à l'emplacement des guillemets, et pas de guillemet après le i (n'est-ce pas, Steelson ? )

dhany

exact

ElseIf Range("J" & i) = "" Then

ben oui il manquait le fichier pour tester

Merci à tous les deux.

attention à l'emplacement des guillemets, et pas de guillemet après le i (n'est-ce pas, Steelson ? )

dhany

oui oui papa je ne le ferai plus

c'est en effet une erreur de débutant même à main levée

Steelson a écrit :

oui oui papa je ne le ferai plus

C'est bien, fiston, pour t'récompenser, j't'emmènerai au cirque et au zoo c't'après-midi.

t'auras même droit à des et à une barbe à papa (= Yvouille-barbidule)


Pour ton nouvel avatar QR-Code, comme j'l'avais dit à LouReeD, ça fait un peu mal aux yeux ? j'aimerai bien qu'tu remette ton ancien avatar qui était super génial : l'indien qui fumait un calumet de la paix ! en récompense pour avoir détecté et corrigé ta coquille, tu pourrais m'passer cette superbe image en MP, stp ?

dhany

Est-ce que vous pourriez aussi discuter en MP s'il vous plait ?

Merci

@kalista

Dans ton message de 08:24, tu as écrit : « Merci à tous les deux. » ; j'croyais qu'c'était fini, moi !

tu as besoin d'autre chose ? (si oui, j'laisse Steelson te répondre car j'dois sortir faire des courses)

dhany

C'est fini effectivement mais c'est simplement par rapport aux notifications ... Je reçois un mail à chaque fois qu'un nouveau message est écrit sur le sujet ...

Steelson a écrit :

oui oui papa je ne le ferai plus

C'est bien, fiston, pour t'récompenser, j't'emmènerai au cirque et au zoo c't'après-midi.

t'auras même droit à des et à une barbe à papa (= Yvouille-barbidule)

pas de fessée alors ? d'ailleurs c'est bientôt interdit !

Est-ce que vous pourriez aussi discuter en MP s'il vous plait ?

Merci

ok

Pour ton nouvel avatar QR-Code, comme j'l'avais dit à LouReeD, ça fait un peu mal aux yeux ? j'aimerai bien qu'tu remette ton ancien avatar qui était super génial : l'indien qui fumait un calumet de la paix ! en récompense pour avoir détecté et corrigé ta coquille, tu pourrais m'passer cette superbe image en MP, stp ?

dhany

tu dois pouvoir la copier à partir du site !

Rechercher des sujets similaires à "appliquer formule then toute colonne"