conditions multiples en vba

  • Initiateur de la discussion Initiateur de la discussion decamps
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

decamps

Guest
comment faire pour faire un if then sur plusieurs conditions ?

Exemples if a=b and e=f and f=g

plusieurs and ne fonctione pas.

merci de me repondre par mail

decampsf@free.fr
 
si ça marche

a = 1: b = 1
e = 2: f = 2: g = 2

If a = b And e = f And f = g Then
MsgBox djdj
End If


pouravoir la preuve, change la valeur d'une des variables



tu peux aussi écrire
If Application.WorksheetFunction.And(a = b, e = f, f = g) Then
...
end if
 
Tu peux utiliser la fonction Select.

Select Case testexpression
[Case expressionlist-n
[statements-n]] ...
[Case Else
[elsestatements]]
End Select

Regarde dans l'aide vba, il y a un exemple.


nanor
 
Re : Re: conditions multiples en vba

Coucou,

J'ai le même souci, j'ai appliqué la fonction If then avec Or et And.
Je veux exécuter rien ne marche correction :

Si a="" ou b="" ou c="" then msgbox(pas bien)
sinon si a et b et c <> "" then msgbox (ça maaaaarche) 🙂

Quand je remplis une des conditions a ou b ou c, la vba fonctionne
Mais quand je remplis les 3 conditions, elle me met le meme message que quand lorsque je remplis ne des conditions...
a= cells(7,24)
b= cells(17,1)
c= cells(14,47)

Private Sub Validation_BcD()

'1 - Vérifier que les champs obligatoires sont bien remplis

If Cells(7, 24) = "" Or Cells(17, 1) = "" Or Cells(14, 47) = "" Then _
erreur = MsgBox("Impossible de valider!" & Chr(10) & Chr(10) & "Merci de vérifier :" & Chr(10) & _
"- l'adresse du fournisseur" & Chr(10) & _
"- l'adresse de livraison." & Chr(10) & _
"- le centre d'affectation" & Chr(10) & Chr(10) & "Ces champs sont OBLIGATOIRES.")
Range("X7").Select
Exit Sub

else : If Cells(7, 24) <> "" And Cells(17, 1) <> "" And Cells(14, 47) <> "" Then
resume_cde = MsgBox("Ci-dessous le résumé de votre commande :" & Chr(10) & Chr(10) _
& Range("A23").Value & Chr(10) & Range("a24").Value & Chr(10) & Range("a25").Value & Chr(10) & Range("a26").Value & Chr(10) _
& Range("a27").Value & Chr(10) & Range("a28").Value & Chr(10) & Range("a29").Value & Chr(10) & Range("a30").Value & Chr(10) _
& Range("a31").Value & Chr(10) & Range("a32").Value & Chr(10) & Range("a33").Value & Chr(10) & Range("a34").Value & Chr(10) _
& Range("a35").Value & Chr(10) & Range("a36").Value & Chr(10) & Range("a37").Value & Chr(10) & Range("a38").Value & Chr(10) _
& Range("a39").Value & Chr(10) & Range("a40").Value & Chr(10) & Chr(10) & "Montant Total HT de la commande : " _
& Range("ag41").Value & Chr(10) & Chr(10) & "La commande sera imputée sur le service " & Range("c9").Value & " " _
& Range("c10").Value & "." & Chr(10) & "Demandeur : " & Range("a44").Value & Chr(10) & "Approbateur : " & Range("x44"). _
Value & Chr(10) & Chr(10) & "Validez-vous la commande ?", vbYesNo, "RESUME DE COMMANDE AVANT VALIDATION")

end if

Merci
 
Re : conditions multiples en vba

Bonjour Gwendoline le forum

ta condition n'est pas bonne tu ne dois pas écrire si a et b et c <> "" then msgbox (ça maaaaarche) 🙂
mais

Code:
If a<>"" and b<>"" and c<>"" then msgbox "Ca Marche"
donc dans ta macro 
 If Cells(7, 24) <> "" and  Cells(17, 1) <> "" and Cells(14, 47) <> "" Then ' là ton message
a+
papou🙂
 
Dernière édition:
Re : conditions multiples en vba

Salut Papou,

lol. Non non, j'ai bien écris la même chose que toi.
regardes :

Code:
If Cells(7, 24) <> "" And Cells(17, 1) <> "" And Cells(14, 47) <> "" Then
GoTo Correct
Else: GoTo Incorrect

Correct:
resume_cde = MsgBox("Ci-dessous le résumé de votre commande :" & Chr(10) & Chr(10) _
& Range("A23").Value & Chr(10) & Range("a24").Value & Chr(10) & Range("a25").Value & Chr(10) & Range("a26").Value & Chr(10) _
& Range("a27").Value & Chr(10) & Range("a28").Value & Chr(10) & Range("a29").Value & Chr(10) & Range("a30").Value & Chr(10) _
& Range("a31").Value & Chr(10) & Range("a32").Value & Chr(10) & Range("a33").Value & Chr(10) & Range("a34").Value & Chr(10) _
& Range("a35").Value & Chr(10) & Range("a36").Value & Chr(10) & Range("a37").Value & Chr(10) & Range("a38").Value & Chr(10) _
& Range("a39").Value & Chr(10) & Range("a40").Value & Chr(10) & Chr(10) & "Montant Total HT de la commande : " _
& Range("ag41").Value & Chr(10) & Chr(10) & "La commande sera imputée sur le service " & Range("c9").Value & " " _
& Range("c10").Value & "." & Chr(10) & "Demandeur : " & Range("a44").Value & Chr(10) & "Approbateur : " & Range("x44"). _
Value & Chr(10) & Chr(10) & "Validez-vous la commande ?", vbYesNo, "RESUME DE COMMANDE AVANT VALIDATION")

Incorrect:
erreur = MsgBox("Impossible de valider!" & Chr(10) & Chr(10) & "Merci de vérifier :" & Chr(10) & _
"- l'adresse du fournisseur" & Chr(10) & _
"- l'adresse de livraison." & Chr(10) & _
"- le centre d'affectation" & Chr(10) & Chr(10) & "Ces champs sont OBLIGATOIRES.")
Range("X7").Select

Je t'embête, je suis désolée
 
Re : conditions multiples en vba

Re Gwendoline le forum
bon alors je ne comprend pas ce que tu veux mais peut-être avec les modifications ci-dessous?
a+
papou🙂

Code:
If Cells(7, 24) <> "" And Cells(17, 1) <> "" And Cells(14, 47) <> "" Then
rep=MsgBox("Ci-dessous le résumé de votre commande :" & Chr(10) & Chr(10) _
& Range("A23").Value & Chr(10) & Range("a24").Value &  Chr(10) & Range("a25").Value & Chr(10) & Range("a26").Value  & Chr(10) _
& Range("a27").Value & Chr(10) & Range("a28").Value &  Chr(10) & Range("a29").Value & Chr(10) & Range("a30").Value  & Chr(10) _
& Range("a31").Value & Chr(10) & Range("a32").Value &  Chr(10) & Range("a33").Value & Chr(10) & Range("a34").Value  & Chr(10) _
& Range("a35").Value & Chr(10) & Range("a36").Value &  Chr(10) & Range("a37").Value & Chr(10) & Range("a38").Value  & Chr(10) _
& Range("a39").Value & Chr(10) & Range("a40").Value &  Chr(10) & Chr(10) & "Montant Total HT de la commande : " _
& Range("ag41").Value & Chr(10) & Chr(10) & "La commande  sera imputée sur le service " & Range("c9").Value & " " _
& Range("c10").Value & "." & Chr(10) & "Demandeur : "  & Range("a44").Value & Chr(10) & "Approbateur : " &  Range("x44"). _
Value & Chr(10) & Chr(10) & "Validez-vous la commande ?", vbYesNo, "RESUME DE COMMANDE AVANT VALIDATION")
if rep=vbno then exit sub
'là il faut mettre ce que tu vas faire quand tu auras dit oui au résumé de commande
else
MsgBox("Impossible de valider!" & Chr(10) & Chr(10) & "Merci de vérifier :" & Chr(10) & _
"- l'adresse du fournisseur" & Chr(10) & _
"- l'adresse de livraison." & Chr(10) & _
"- le centre d'affectation" & Chr(10) & Chr(10) & "Ces champs sont OBLIGATOIRES.")
Range("X7").Select
end if
 
Dernière édition:
Re : conditions multiples en vba

Je le savais, je ne sais pas m'exprimer.

Alors qu'est-ce je veux?

Je veux que si les 3 conditions ne sont pas réunies, le message suivant doit s'afficher puis quitter la vba.
Code:
MsgBox("Impossible de valider!" & Chr(10) & Chr(10) & "Merci de vérifier :" & Chr(10) & _
"- l'adresse du fournisseur" & Chr(10) & _
"- l'adresse de livraison." & Chr(10) & _
"- le centre d'affectation" & Chr(10) & Chr(10) & "Ces champs sont OBLIGATOIRES.")
Range("X7").Select

Par contre, si les 3 conditions sont réunies, là il me fait le résumé de ma commande :
Code:
rep=MsgBox("Ci-dessous le résumé de votre commande :" & Chr(10) & Chr(10) _
& Range("A23").Value & Chr(10) & Range("a24").Value &  Chr(10) & Range("a25").Value & Chr(10) & Range("a26").Value  & Chr(10) _
& Range("a27").Value & Chr(10) & Range("a28").Value &  Chr(10) & Range("a29").Value & Chr(10) & Range("a30").Value  & Chr(10) _
& Range("a31").Value & Chr(10) & Range("a32").Value &  Chr(10) & Range("a33").Value & Chr(10) & Range("a34").Value  & Chr(10) _
& Range("a35").Value & Chr(10) & Range("a36").Value &  Chr(10) & Range("a37").Value & Chr(10) & Range("a38").Value  & Chr(10) _
& Range("a39").Value & Chr(10) & Range("a40").Value &  Chr(10) & Chr(10) & "Montant Total HT de la commande : " _
& Range("ag41").Value & Chr(10) & Chr(10) & "La commande  sera imputée sur le service " & Range("c9").Value & " " _
& Range("c10").Value & "." & Chr(10) & "Demandeur : "  & Range("a44").Value & Chr(10) & "Approbateur : " &  Range("x44"). _
Value & Chr(10) & Chr(10) & "Validez-vous la commande ?", vbYesNo, "RESUME DE COMMANDE AVANT VALIDATION")
if rep=vbno then exit sub

Si oui, je vais travailler ma vba pour l'enregistrement. Ben oui il faut que je bosse aussi, tu ne vas pas tout faire 😉

Avec le fichier, ça pourrait être plus compréhensible, nan?

Merci encore!
 

Pièces jointes

Re : conditions multiples en vba

Re Gwendoline le forum
bon alors si tu n'essayes pas les solutions proposées fatalement tu n'avanceras pas
voilà ton fichier en retour mais une des conditions n'est pas bonne enfin je pense car la cells(14,47) à mon avis c'est une erreur
pour le test j'ai changé et j'ai mis la cells(18,1) donc 18eme ligne et colonne A
ouvres le fichier et teste
a+
papou🙂
 

Pièces jointes

Re : conditions multiples en vba

Re Gwendoline le forum
j'ai compris la condition était mauvaise car je suppose que la validation c'est si tu as le demandeur de rempli et là tu as inversée ligne et colonne
voilà à tester
a+
papou🙂
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
117
Réponses
4
Affichages
116
Réponses
4
Affichages
489
Réponses
2
Affichages
69
Retour