conditions multiples en vba

  • Initiateur de la discussion decamps
  • Date de début
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
 
A

A_binouze_drinker_among_others

Guest
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
 
N

nanor

Guest
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
 

Gwendoline

XLDnaute Junior
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
 

Paritec

XLDnaute Barbatruc
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:

Gwendoline

XLDnaute Junior
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
 

Paritec

XLDnaute Barbatruc
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:

Gwendoline

XLDnaute Junior
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

  • GWEN.xlsm
    54 KB · Affichages: 162

Paritec

XLDnaute Barbatruc
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

  • Gwendoline V1.xlsm
    51.6 KB · Affichages: 161

Paritec

XLDnaute Barbatruc
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

  • Gwendoline V2.xlsm
    51.9 KB · Affichages: 222

Paritec

XLDnaute Barbatruc
Re : conditions multiples en vba

Re Gwendoline le forum
une petite modification dans la présentation de ton résumé de commande, pour ne pas avoir un pavé vide et des éléments qui se promènent partout
a+
papou:)
 

Pièces jointes

  • Gwendoline V3.xlsm
    51.1 KB · Affichages: 347

Statistiques des forums

Discussions
312 304
Messages
2 087 069
Membres
103 453
dernier inscrit
Choupi