XL 2021 And/Or dans If

thunder23

XLDnaute Occasionnel
Salut tous le monde,

Désolé d'avoir un peu quitté le forum mais un peu occupé mais je me remets dans vba et je crois qu'il y a besoin car quasi tout oublié...
Je bute depuis tout à l'heure sur la fonction if avec deux conditions (and et or). En fait j'ai un Userform qui rempli une base de donnée et je veux deux conditions, si une personne pourrais voler à mon secours ça serait super, merci !! ;)
VB:
If ComboBox_Poste.Value = "DEL" Or ComboBox_Poste.Value = "DELN" And OptionButton_del_yes Then 'Condition si la cbx a l'un ou l'autre et si le bouton est oui
        .Cells(Li, 30).Value = TextBox_del.Value 'rempli la colonne heures délégation
        .Cells(Li, 5).Value = TextBox_commentaire.Value 'rempli la colonne commentaire s'il y a
        ElseIf ComboBox_Poste.Value = "DEL" Or ComboBox_Poste.Value = "DELN" And OptionButton_no Then 'Condition si la cbx a l'un ou l'autre et si le bouton est non
        .Cells(Li, 2).Value = ComboBox_Poste.Value 'change la valeur dans la base de donnée pour le poste effectué
        .Cells(Li, 30).Value = TextBox_del.Value 'rempli la colonne heures délégation
        Else 'si le poste DEL/DELN et "bouton oui/non"
        .Cells(Li, 2).Value = ComboBox_Poste.Value
        .Cells(Li, 4).Value = TextBox_Heures.Value
        .Cells(Li, 5).Value = TextBox_commentaire.Value
        .Cells(Li, 6).Value = TextBox_Sdate.Value
        End If
 
Solution
Bonjour,

Je bute depuis tout à l'heure sur la fonction if avec deux conditions (and et or). En fait j'ai un Userform qui rempli une base de donnée et je veux deux conditions, si une personne pourrais voler à mon secours ça serait super, merci !! ;)
Peut-être ceci :
VB:
If ComboBox_Poste.Value = "DEL" Or ComboBox_Poste.Value = "DELN" Then

    If OptionButton_del_yes Then
        ' Condition si la cbx a l'un ou l'autre et si le bouton est oui
        .Cells(Li, 30).Value = TextBox_del.Value        ' Rempli la colonne heures délégation
        .Cells(Li, 5).Value = TextBox_commentaire.Value ' Rempli la colonne commentaire s'il y a
    Else
        ' Condition si la cbx a l'un ou l'autre et si le bouton est non
        .Cells(Li...

jurassic pork

XLDnaute Occasionnel

VBA IF Et/ou Priorité​

En VBA, lorsque vous utilisez plusieurs opérateurs (par exemple AND, OR) dans une seule expression, l'ordre d'évaluation est régi par la priorité de l'opérateur. Les règles sont les suivantes:
  1. Les opérateurs mathématiques (p. ex., +, -, *, /, ^): évalué de gauche à droite
  2. Opérateurs de comparaison (p. ex., =, <, >, <=, >=, <>): évalué de gauche à droite
  3. Les opérateurs logiques (p. ex., AND, OR, NOT): évalué de gauche à droite
Pour éviter toute ambiguïté, vous pouvez utiliser des parenthèses pour regrouper les expressions et remplacer la priorité par défaut.

Exemple: Utilisation AND et OR​

Supposons que vous ayez le code suivant:
If (origNum = "006260006" Or origNum = "30062600006") And creditOrDebit = "D" Then
' do something
End If

Sans parenthèses, l'ordre d'évaluation pourrait ne pas être ce que vous avez l'intention. Pour assurer une évaluation correcte, vous pouvez ajouter des parenthèses:
If ((origNum = "006260006" Or origNum = "30062600006") And creditOrDebit = "D") Then
' do something
End If

Dans cet exemple, le OR l'opération est évaluée d'abord, puis le résultat est combiné avec le AND opération.

Priorité des Conditions​

En VBA, lorsque plusieurs conditions sont combinées en utilisant AND ou OR, la priorité est la suivante:
  • AND a une priorité plus élevée que OR. Cela signifie que si plusieurs conditions sont liées à AND, toutes les conditions doivent être vraies pour que l'expression globale soit vraie.
  • OR a priorité inférieure à AND. Cela signifie que si plusieurs conditions sont liées à OR, l'expression sera vraie dès que l'une des conditions est vraie.
Gardez à l'esprit que ces priorités ne s'appliquent que lors de l'utilisation AND et OR combiner les conditions. Si vous utilisez d'autres opérateurs logiques (comme NOT), les priorités peuvent différer.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Je bute depuis tout à l'heure sur la fonction if avec deux conditions (and et or). En fait j'ai un Userform qui rempli une base de donnée et je veux deux conditions, si une personne pourrais voler à mon secours ça serait super, merci !! ;)
Peut-être ceci :
VB:
If ComboBox_Poste.Value = "DEL" Or ComboBox_Poste.Value = "DELN" Then

    If OptionButton_del_yes Then
        ' Condition si la cbx a l'un ou l'autre et si le bouton est oui
        .Cells(Li, 30).Value = TextBox_del.Value        ' Rempli la colonne heures délégation
        .Cells(Li, 5).Value = TextBox_commentaire.Value ' Rempli la colonne commentaire s'il y a
    Else
        ' Condition si la cbx a l'un ou l'autre et si le bouton est non
        .Cells(Li, 2).Value = ComboBox_Poste.Value      ' Change la valeur dans la base de données pour le poste effectué
        .Cells(Li, 30).Value = TextBox_del.Value        ' Rrempli la colonne heures délégation
    End If

Else

    ' Si le poste DEL/DELN et "bouton oui/non"
    .Cells(Li, 2).Value = ComboBox_Poste.Value
    .Cells(Li, 4).Value = TextBox_Heures.Value
    .Cells(Li, 5).Value = TextBox_commentaire.Value
    .Cells(Li, 6).Value = TextBox_Sdate.Value

End If
 
Dernière édition:

Discussions similaires

Réponses
9
Affichages
328

Statistiques des forums

Discussions
314 898
Messages
2 114 011
Membres
112 074
dernier inscrit
Belu81