IF + AND + OR

Bonjour,

J'ai une question trés orienté syntaxe.

J'aimerais faire une fonction avec quelques "if" et "else if", combiné avec des and et surtout des "or" dans les "and". Quelqu'un pourrait m'écrire la syntaxe adapté au VBA pour faire ça ?

Merci beaucoup !!

Sub ExempleIfOrAnd()

If condition1 = 1 Or (condition2 = 2 And condition3 = 3) Then
    MsgBox "Le message à afficher"
    Else
        If condition4 = 4 Or (condition5 = 5 And condition6 = 6) Then
            MsgBox "Le message à afficher"
        End If
End If

End Sub

Bonjour,

La question est vraiment très générale

Un exemple de syntaxe :

Public Sub Exemple()

    If a = 1 And (b = 12 Or b = 18) And (c = 13 Or c = 50) Then
        MsgBox "aaa"
    ElseIf a = 111 And (b = 144 Or b = 888) And (c = 12 Or c = 14) Then
        MsgBox "bbb"
    Else
        MsgBox "ccc"
    End If

End Sub

Bouben

EDIT : Bonjour melch, réponses synchro, qui semblent aller dans le même sens

Oui je suis d'accord

Voici une de mes lignes:

Elseif DE_01 = 10 And ( DC_01 = 4 Or DC_01 = 5+ Or DC_01 = 5 ) Then DH_01 = 5-

Que dois je modifier ???

DC DE DH sont les collones et 01 la ligne

Merci beaucoup !!

A tester en mettant toutes les valeurs entre guillemet.

5+ n'est pas un numérique => "5+"

Bouben

Merci,

Egalement les 5 sans + ni - ?

Si les valeurs peuvent contenir du texte, oui : tout mettre entre guillemet

"if toto = 3 "

=> marchera si la variable toto contient du numérique

=> entraînera une erreur si texte.

Bouben

Attention les yeux voilà ce que j'ai écris.

Apparemment il y a un problème au niveau du Then ?? Je vais mettre tout en guillemet pour pas prendre de risques

If DE_01 = 10 And (DC_1 = "3++" Or DC_1 = "3+" Or DC_1 = 3 Or DC_1 = "4+") Then DH_01 = 3

 ElseIf DE_01 = 10 And (DC_01 = 4 Or DC_01 = "5+" Or DC_01 = 5) Then DH_01 = "5-"
 ElseIf DE_01 = 10 And (DC_01 = 0 Or DC_01 = X) Then DH_01 = 4
 ElseIf DE_01 = 9 And (DC_01 = "3++" Or DC_01 = "3+" Or DC_01 = 3 Or DC_01 = "4+") Then DH_01 = 4
 ElseIf DE_01 = 9 And (DC_01 = 4 Or DC_01 = "5+") Then DH_01 = "5-"
 ElseIf DE_01 = 9 And DC_01 = 5 Then DH_01 = "6+"
 ElseIf DE_01 = 9 And (DC_01 = 0 Or DC_01 = "X") Then DH_01 = 4
 ElseIf DE_01 = 8 And (DC_01 = "3++" Or DC_01 = "3+" Or DC_01 = 3 Or DC_01 = "4+") Then DH_01 = 4
ElseIf DE_01 = 8 And (DC_01 = 4 Or DC_01 = "5+") Then DH_01 = "5-"
ElseIf DE_01 = 8 And (DC_01 = 5) Then DH_01 = "6+"
ElseIf DE_01 = 8 And (DC_01 = 0 Or DC_01 = "X") Then DH_01 = "4-"
ElseIf DC_01 = "3++" And (DE_01 = 6 Or DE_01 = 5 Or DE_01 = 4 Or DE_01 = 3 Or DE_01 = 2) Then DH_01 = "4-"
ElseIf DC_01 = 3 And (DE_01 = 6 Or DE_01 = 5 Or DE_01 = 4 Or DE_01 = 3 Or DE_01 = 2) Then DH_01 = "4-"
ElseIf DC_01 = "3+" And (DE_01 = 4 Or DE_01 = 3 Or DE_01 = 2) Then DH_01 = "5+"
ElseIf (DC_01 = 4 Or DC_01 = "5+") And (DE_01 = 7 Or DE_01 = 6 Or DE_01 = 5) Then DH_01 = "5-"
ElseIf DC_01 = 5 And (DE_01 = 7 Or DE_01 = 6 Or DE_01 = 5) Then DH_01 = "6+"
ElseIf DC_01 = "4+" And (DE_01 = 7 Or DE_01 = 6 Or DE_01 = 5 Or DE_01 = 4 Or DE_01 = 3 Or DE_01 = 2) Then DH_01 = 5
ElseIf DC_01 = 4 And (DE_01 = 4 Or DE_01 = 3 Or DE_01 = 2) Then DH_01 = "6+"
ElseIf DE_01 = 4 And (DC_01 = 5 Or DC_01 = 0 Or DC_01 = "X") Then DH_01 = "6+"
ElseIf (DC_01 = "3++" Or DC_01 = "3+" Or DC_01 = 3) And DE_01 = 7 Then DH_01 = 4
ElseIf DC_01 = "3+" And (DE_01 = 6 Or DE_01 = 5) Then DH_01 = "4-"
ElseIf (DC_01 = 0 Or DC_01 = "X") And (DE_01 = 7 Or DE_01 = 6 Or DE_01 = 5) Then DH_01 = 5
ElseIf (DC_01 = 0 Or DC_01 = X) And DE_01 = 3 Then DH_01 = 6

Tout en guillemets.

If DE_01 = 10 And (DC_1 = "3++" Or DC_1 = "3+" Or DC_1 = 3 Or DC_1 = "4+") Then DH_01 = "3"

 ElseIf DE_01 = "10" And (DC_01 = "4" Or DC_01 = "5+" Or DC_01 = 5) Then DH_01 = "5-"
 ElseIf DE_01 = "10" And (DC_01 = "0" Or DC_01 = "X") Then DH_01 = "4"
 ElseIf DE_01 = "9" And (DC_01 = "3++" Or DC_01 = "3+" Or DC_01 = "3" Or DC_01 = "4+") Then DH_01 = "4"
 ElseIf DE_01 = "9" And (DC_01 = "4" Or DC_01 = "5+") Then DH_01 = "5-"
 ElseIf DE_01 = "9" And DC_01 = "5" Then DH_01 = "6+"
 ElseIf DE_01 = "9" And (DC_01 = "0" Or DC_01 = "X") Then DH_01 = "4"
 ElseIf DE_01 = "8" And (DC_01 = "3++" Or DC_01 = "3+" Or DC_01 = "3" Or DC_01 = "4+") Then DH_01 = "4"
ElseIf DE_01 = "8" And (DC_01 = "4" Or DC_01 = "5+") Then DH_01 = "5-"
ElseIf DE_01 = "8" And (DC_01 = "5") Then DH_01 = "6+"
ElseIf DE_01 = "8" And (DC_01 = "0" Or DC_01 = "X") Then DH_01 = "4-"
ElseIf DC_01 = "3++" And (DE_01 = "6" Or DE_01 = "5" Or DE_01 = "4" Or DE_01 = 3 Or DE_01 = "2") Then DH_01 = "4-"
ElseIf DC_01 = "3" And (DE_01 = "6" Or DE_01 = "5" Or DE_01 = "4" Or DE_01 = "3" Or DE_01 = "2") Then DH_01 = "4-"
ElseIf DC_01 = "3+" And (DE_01 = "4" Or DE_01 = "3" Or DE_01 = "2") Then DH_01 = "5+"
ElseIf (DC_01 = "4" Or DC_01 = "5+") And (DE_01 = "7" Or DE_01 = "6" Or DE_01 = "5") Then DH_01 = "5-"
ElseIf DC_01 = "5" And (DE_01 = 7 Or DE_01 = "6" Or DE_01 = "5") Then DH_01 = "6+"
ElseIf DC_01 = "4+" And (DE_01 = 7 Or DE_01 = "6" Or DE_01 = "5" Or DE_01 = "4" Or DE_01 = "3" Or DE_01 = 2) Then DH_01 = "5"
ElseIf DC_01 = "4" And (DE_01 = 4 Or DE_01 = "3" Or DE_01 = "2") Then DH_01 = "6+"
ElseIf DE_01 = "4" And (DC_01 = 5 Or DC_01 = "0" Or DC_01 = "X") Then DH_01 = "6+"
ElseIf (DC_01 = "3++" Or DC_01 = "3+" Or DC_01 = "3") And DE_01 = "7" Then DH_01 = "4"
ElseIf DC_01 = "3+" And (DE_01 = 6 Or DE_01 = "5") Then DH_01 = "4-"
ElseIf (DC_01 = "0" Or DC_01 = "X") And (DE_01 = "7" Or DE_01 = "6" Or DE_01 = "5") Then DH_01 = "5"
ElseIf (DC_01 = "0" Or DC_01 = "X") And DE_01 = "3" Then DH_01 = "6"

End If

Concernant l'erreur de syntaxe : il faut un retour à la ligne après chaque "then"

 If DE_01 = 10 And (DC_1 = "3++" Or DC_1 = "3+" Or DC_1 = 3 Or DC_1 = "4+") Then
        DH_01 = 3
    ElseIf DE_01 = 10 And (DC_01 = 4 Or DC_01 = "5+" Or DC_01 = 5) Then
        DH_01 = "5-"
    ElseIf DE_01 = 10 And (DC_01 = 0 Or DC_01 = X) Then
        DH_01 = 4

Et ajouter tout à la fin :

End If

Bouben

Voilà Tout, mais ... il ne se passe rien pour le moment en DH_119 ... cellule vide

Des idées?

Sub Essaie()

If DE_119 = 10 And (DC_119 = "3++" Or DC_1 = "3+" Or DC_119 = 3 Or DC_119 = "4+") Then
DH_119 = "3"
ElseIf DE_119 = "10" And (DC_119 = "4" Or DC_119 = "5+" Or DC_119 = 5) Then
DH_119 = "5-"
 ElseIf DE_119 = "10" And (DC_119 = "0" Or DC_119 = "X") Then
 DH_119 = "4"
 ElseIf DE_119 = "9" And (DC_119 = "3++" Or DC_119 = "3+" Or DC_119 = "3" Or DC_119 = "4+") Then
 DH_119 = "4"
 ElseIf DE_119 = "9" And (DC_119 = "4" Or DC_119 = "5+") Then
 DH_119 = "5-"
 ElseIf DE_119 = "9" And DC_119 = "5" Then
 DH_119 = "6+"
 ElseIf DE_119 = "9" And (DC_119 = "0" Or DC_119 = "X") Then
 DH_119 = "4"
 ElseIf DE_119 = "8" And (DC_119 = "3++" Or DC_119 = "3+" Or DC_119 = "3" Or DC_119 = "4+") Then
 DH_119 = "4"
ElseIf DE_119 = "8" And (DC_119 = "4" Or DC_119 = "5+") Then
DH_119 = "5-"
ElseIf DE_119 = "8" And (DC_119 = "5") Then
DH_119 = "6+"
ElseIf DE_119 = "8" And (DC_119 = "0" Or DC_119 = "X") Then
DH_119 = "4-"
ElseIf DC_119 = "3++" And (DE_119 = "6" Or DE_119 = "5" Or DE_119 = "4" Or DE_119 = 3 Or DE_119 = "2") Then
DH_119 = "4-"
ElseIf DC_119 = "3" And (DE_119 = "6" Or DE_119 = "5" Or DE_119 = "4" Or DE_119 = "3" Or DE_119 = "2") Then
DH_119 = "4-"
ElseIf DC_119 = "3+" And (DE_119 = "4" Or DE_119 = "3" Or DE_119 = "2") Then
DH_119 = "5+"
ElseIf (DC_119 = "4" Or DC_119 = "5+") And (DE_119 = "7" Or DE_119 = "6" Or DE_119 = "5") Then
DH_119 = "5-"
ElseIf DC_119 = "5" And (DE_119 = 7 Or DE_119 = "6" Or DE_119 = "5") Then
DH_119 = "6+"
ElseIf DC_119 = "4+" And (DE_119 = 7 Or DE_119 = "6" Or DE_119 = "5" Or DE_119 = "4" Or DE_119 = "3" Or DE_119 = 2) Then
DH_119 = "5"
ElseIf DC_119 = "4" And (DE_119 = 4 Or DE_119 = "3" Or DE_119 = "2") Then
DH_119 = "6+"
ElseIf DE_119 = "4" And (DC_119 = 5 Or DC_119 = "0" Or DC_119 = "X") Then
DH_119 = "6+"
ElseIf (DC_119 = "3++" Or DC_119 = "3+" Or DC_119 = "3") And DE_119 = "7" Then
DH_119 = "4"
ElseIf DC_119 = "3+" And (DE_119 = 6 Or DE_119 = "5") Then
DH_119 = "4-"
ElseIf (DC_119 = "0" Or DC_119 = "X") And (DE_119 = "7" Or DE_119 = "6" Or DE_119 = "5") Then
DH_119 = "5"
ElseIf (DC_119 = "0" Or DC_119 = "X") And DE_119 = "3" Then
DH_119 = "6"

End If

End Sub

J'ai créé une nouvelle feuille EXCEL pour voir si le problème pouvait venir du classeur mais non, je pense que ça vient bien du code, puisque le code ne marche pas sur la nouvelle feuille non plus.

On n'est plus sur des problèmes de syntaxe, mais sur de la programmation générale en VBA.

Joins un fichier Excel, ce sera plus simple

Bouben

Voilà le classeur ou je n'ai mis que certaines valeurs, mais il y a celles qui nous interessent, exactement au même endroit que dans le classeur original.

Merci encore

4classeur1.xlsm (62.90 Ko)

2 points :

  • Pas de code VBA dans le fichier => à ajouter
  • Dans l'extrait de code, tu utilises des variables "DE_119", etc. Où est fait le lien entre ces variables et les cellules ?

Bouben

Je pensais que c'était comme ça qu'il fallait nommer une cellule non renommé (colonne DE ligne 119 ...)

Puis je voulais ensuite transférer cela a toutes les lignes de la colonne DE.

En gros, je veux qu'à partir des cellules DC119 ET DE119, il y ait un résultat en cellule DH119. Puis je veux appliquer cela à toute la colonne DH.

On part de loin

Ci-joint une première version à tester

Bouben

14alimcolonnedh.xlsm (93.06 Ko)

Oui désole j'ai jamais fais de VBA quasiment, juste c++...

Je ne pourrai essayer ce soir mais je reviens vers vous demain matin

Merci encore

Merci beaucoup !!! ça m'a l'air bon !!!

Je vais analyser ce que tu as fais

Petite question:

J'aimerais mettre trois couleurs (verte foncé, verte clair et rouge) selon les notes, et je pense qu'un if pourrait faire l'affaire. Mais je ne sais pas quelle est la commande pour surligner. Peux tu m'aider?

Bonjour,

Conseil : utiliser la mise en forme conditionnelle (pas besoin de VBA).

Cdlt

Bouben

Abilys38 a écrit :

J'aimerais mettre trois couleurs (verte foncé, verte clair et rouge) selon les notes, et je pense qu'un if pourrait faire l'affaire. Mais je ne sais pas quelle est la commande pour surligner. Peux tu m'aider?

Si tu veux absolument en VBA, pour la couleur de la cellule c'est :

Range(Ta cellule).Interior.color=LaCouleurQueTuVeux