XL 2010 Conditions multiples

cysalea

XLDnaute Nouveau
Bonjour à tous,

Je souhaite créer une formule (ou une macro) en colonne C (avis) pour mon fichier.
Par exemple, je veux que :
si condition 1 = A et condition 2 = AF, Excel me complète la colonne C avec "conforme"
si condition 1 = C et condition 2 = AF, Excel me complète la colonne C avec "non conforme"
etc ...
J'ai essayé avec des SI imbriqué mais ça ne marche pas (je dois pas faire comme il faut !)
Quelqu'un peut-il m'aider ?
D'avance merci.
 

Pièces jointes

  • test_IG.xlsx
    9.3 KB · Affichages: 36

ralph45

XLDnaute Impliqué
Bonjour le Forum, cysalea

A coller dans la cellule C2 :
=SI(ET(A2="A";B2="AF");"Conforme";"Non conforme")

Et la formule ne fonctionne pas !... car il y a une petite espace après AF en condition 2. Supprimez ces espaces inutiles et vous aurez un fichier nickel.

@+
 

vgendron

XLDnaute Barbatruc
Hello

un début de piste
=SI(OU(ET(A2="A";B2="AF");ET(A2="C";B2="AF"));"Conforme";"Non Conforme")

pour completer. il faut lister TOUS les cas "conforme"
cas1: Cond1=A ET Cond2=AF --> se traduit par: Et(A2="A";B2="AF")
cas2: Cond1=C ET Cond2=AF --> se traduit par: Et(A2="C";B2="AF")
Cas3....

puis completer la formule donnée
si (ou(cas1;cas2;cas3);"Conforme";"Non conforme")

Attention. dans ta colonne B les cellules contiennent un espace après AF: la formule ne va donc pas fonctionner .. il faut supprimer les espaces (ou alors, le rajoutter dans la formule
"AF" est différent de
"AF "



Hello Ralph ;-)
 

cysalea

XLDnaute Nouveau
formule qui colle exactement à ta colonne C..
=SI(OU(ET(A2="A";B2="AF");ET(A2="B";B2="AF");ET(A2="C";B2="ADM");ET(A2="D";B2="ATI"));"Conforme";"Non Conforme")


Merci beaucoup pour ton aide.

Je tourne dans tous les sens pour essayer de mettre cette formule en VBA.

J'y arrive mais je n'arrive pas à faire une formule du type :
tant que la cellule B... n'est pas vide, tu me fais mon calcul.

J'ai essayé avec :
Do Until IsEmpty(ActiveCell.Value)
ActiveCell.Offset(1, 0).Select
Loop
mais ça ne marche pas.

Je ne dois pas bien définir ma variable ActivCell.
Peux tu m'aider?
Merci
 

vgendron

XLDnaute Barbatruc
Hello,
que souhaites tu exactement?
coller la formule dans les cellules à partir du VBA
ou faire calculer à VBA et ne mettre que le résultat (conforme / Non conforme) dans la colonne C ?

pourrais tu poster ton fichier mis à jour avec le code que tu sembles avoir déjà commencé.
 

vgendron

XLDnaute Barbatruc
j'avais pensé au début à une macro. mais comme la formule semblait satisfaisante, je n'avais pas poursuivi..
mais maintenant :)

Code:
Sub calculeformule()
'dernière ligne de la feuille
fin = Range("A" & Rows.Count).End(xlUp).Row

'pour chaque ligne de la feuille (à partir de 2 car la ligne 1 contient les entetes)
For i = 2 To fin
    'on construit la varialbe cond1cond2 avec le contenu des colonnes A et B
    cond1cond2 = Range("A" & i) & " " & Range("B" & i)
  
    'selon le contenu = le IF à conditions multiples
    Select Case cond1cond2
    'lister tous les cas
    Case "A AF", "B AF", "C ADM", "D ATI"
        Range("E" & i) = "Conforme"
    Case Else
        Range("E" & i) = "Non Conforme"
     End Select
Next i
End Sub
 

cysalea

XLDnaute Nouveau
j'avais pensé au début à une macro. mais comme la formule semblait satisfaisante, je n'avais pas poursuivi..
mais maintenant :)

Code:
Sub calculeformule()
'dernière ligne de la feuille
fin = Range("A" & Rows.Count).End(xlUp).Row

'pour chaque ligne de la feuille (à partir de 2 car la ligne 1 contient les entetes)
For i = 2 To fin
    'on construit la varialbe cond1cond2 avec le contenu des colonnes A et B
    cond1cond2 = Range("A" & i) & " " & Range("B" & i)
 
    'selon le contenu = le IF à conditions multiples
    Select Case cond1cond2
    'lister tous les cas
    Case "A AF", "B AF", "C ADM", "D ATI"
        Range("E" & i) = "Conforme"
    Case Else
        Range("E" & i) = "Non Conforme"
     End Select
Next i
End Sub



Super, merci merci !!
J'ai adapté à mon tableau et ça fonctionne.
Encore merci pour ton partage de connaissance :):):):):):)
 

cysalea

XLDnaute Nouveau
j'avais pensé au début à une macro. mais comme la formule semblait satisfaisante, je n'avais pas poursuivi..
mais maintenant :)

Code:
Sub calculeformule()
'dernière ligne de la feuille
fin = Range("A" & Rows.Count).End(xlUp).Row

'pour chaque ligne de la feuille (à partir de 2 car la ligne 1 contient les entetes)
For i = 2 To fin
    'on construit la varialbe cond1cond2 avec le contenu des colonnes A et B
    cond1cond2 = Range("A" & i) & " " & Range("B" & i)
 
    'selon le contenu = le IF à conditions multiples
    Select Case cond1cond2
    'lister tous les cas
    Case "A AF", "B AF", "C ADM", "D ATI"
        Range("E" & i) = "Conforme"
    Case Else
        Range("E" & i) = "Non Conforme"
     End Select
Next i
End Sub


J'ai voulu remplacé le A par une chaine de caractère et du coup, ça ne marche plus.
(mon A = chaine de caractère A,en fait c'est du texte, est en colonne O et AF en colonne R)
J'ai mis un & mais ça ne doit pas être ça

Dim i As Byte
Dim fin As String
Dim cond1cond2 As String

fin = Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To fin

cond1cond2 = Range("O" & i) & "&" & Range("R" & i)

Select Case cond1cond2
Case "Chaine de caractère A & AF"
Range("W" & i) = "Conforme"
Case Else
Range("W" & i) = "Non Conforme"
End Select
Next i

End Sub

Peux tu encore me dépanner?
Merci
 

vgendron

XLDnaute Barbatruc
Hello

principe pour écrire une chaine de caractères.. il faut la mettre entre guillemets "chainedecaractère"
si tu veux insérer le contenu d'une cellule, (A1 par exemple) il suffit de mettre le nom de la cellule ex:
en A1: 3

cond1cond2= "le contenu de la cellule A1 est: " &A1
msgbox cond1cond2


dans ton code modifié, tu as oublié un guillemet pour encadrer l'espace entre les cellules de colonne O et R
cond1cond2 = Range("O" & i) & " " & Range("R" & i)
 

cysalea

XLDnaute Nouveau
Hello

principe pour écrire une chaine de caractères.. il faut la mettre entre guillemets "chainedecaractère"
si tu veux insérer le contenu d'une cellule, (A1 par exemple) il suffit de mettre le nom de la cellule ex:
en A1: 3

cond1cond2= "le contenu de la cellule A1 est: " &A1
msgbox cond1cond2


dans ton code modifié, tu as oublié un guillemet pour encadrer l'espace entre les cellules de colonne O et R
cond1cond2 = Range("O" & i) & " " & Range("R" & i)


Bonjour,
Je n'ai pas compris ta réponse.
J'ai réessayé en mettant des " mais la macro ne fonctionne plus.
Elle ne me trouve que des Non conforme
Je suis perdue !!:(
Je voudrais que dans ma colonne C (AVIS) apparaissent Conforme et Non Conforme comme indiqué dans mon petit tableau récapitulatif.
Par exemple : si "chaine de caractère A" et "AF" => Conforme
si "chaine de caractère B" et "AF" => Non Conforme
et ainsi de suite.

Merci d'avance pour l'aide que tu voudras bien encore !!! m'apporter.
 

Pièces jointes

  • test_IG_V2.xlsx
    10.2 KB · Affichages: 30

vgendron

XLDnaute Barbatruc
Hello

Vu que tu as fait un tableau de correspondance pour lister tous les cas et leurs conclusions associées, tu peux te passer de VBA
donc. juste une formule
en C2
Code:
=SIERREUR(INDEX($G$4:$J$7;EQUIV(A2;$F$4:$F$7;0);EQUIV(B2;$G$3:$J$3;0));"Pas de sanction")

PS: tu noteras qu'il apparait parfois "Pas de sanction". alors que le cas est décrit dans le tableau:
--> tu as encore des espaces qui trainent à la fin de AF
 

cysalea

XLDnaute Nouveau
Hello

Vu que tu as fait un tableau de correspondance pour lister tous les cas et leurs conclusions associées, tu peux te passer de VBA
donc. juste une formule
en C2
Code:
=SIERREUR(INDEX($G$4:$J$7;EQUIV(A2;$F$4:$F$7;0);EQUIV(B2;$G$3:$J$3;0));"Pas de sanction")

PS: tu noteras qu'il apparait parfois "Pas de sanction". alors que le cas est décrit dans le tableau:
--> tu as encore des espaces qui trainent à la fin de AF



Merci pour ton aide,
ça marche bien sur le petit exemple mais je voudrais pouvoir l'adapter en mettant mon petit tableau récap dans une autre feuille du même classeur.
J'ai rajouter Feuil1! devant $G$4:$J$7 ... etc.
Le but est d'avoir quand même une macro qui irait insérer ce petit tableau en feuille 2 et qui me mettrait "conforme" ou "non conforme" dans la colonne C (AVIS) de la feuille 1.
J'ai modifié mais je suis encore perdue !!!:(
Peux tu m'aider ?
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 981
Membres
101 855
dernier inscrit
alexis345