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.
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.
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 "
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")
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")
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é.
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'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'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
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)
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.
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
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 ?