Excel Fonctions SI + OU
services15
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je cherche à faire une formule qui soit du type:
Si cellule O4 contient mot1 ou mot2 ou mot3 alors afficher resultat1
sinon
si cellule O4 contient mot5 ou mot6 ou mot7 alors afficher resultat2
sinon
si cellule O4 contient mot9 ou mot10 ou mot11 alors afficher resultat3
sinon afficher "a vérifier"
Merci beaucoup de votre aide
J'ai cherché par moi meme mais je galère !!
(excel 2007 FRANCAIS)
Je cherche à faire une formule qui soit du type:
Si cellule O4 contient mot1 ou mot2 ou mot3 alors afficher resultat1
sinon
si cellule O4 contient mot5 ou mot6 ou mot7 alors afficher resultat2
sinon
si cellule O4 contient mot9 ou mot10 ou mot11 alors afficher resultat3
sinon afficher "a vérifier"
Merci beaucoup de votre aide
J'ai cherché par moi meme mais je galère !!
(excel 2007 FRANCAIS)
A voir également:
- Excel Fonctions SI + OU
- Si ou excel - Guide
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Déplacer colonne excel - Guide
30 réponses
Re,
je sias pourquoi.
A la ligne 27 et 28 de la feuille cherche, tu n'as rien mis en colonne A. Ce qu'il fait que ma macro s'arrête à la 26 ème ligne.
De plus, si les lignes 27 et 28 sont vides, je dois revoir le fonctionnement de ma macro.
Peux-tu me confirmer que ces lignes de la feuille cherche doivent bien êtrevides?
je sias pourquoi.
A la ligne 27 et 28 de la feuille cherche, tu n'as rien mis en colonne A. Ce qu'il fait que ma macro s'arrête à la 26 ème ligne.
De plus, si les lignes 27 et 28 sont vides, je dois revoir le fonctionnement de ma macro.
Peux-tu me confirmer que ces lignes de la feuille cherche doivent bien êtrevides?
HEllo Mélanie,
Je confirme que pour les lignes 27 et 28 les conditions sont uniquement colonnes K et L et quelque soit le contenue O :)
Merci beaucoup !
Je confirme que pour les lignes 27 et 28 les conditions sont uniquement colonnes K et L et quelque soit le contenue O :)
Merci beaucoup !
Merci pour ce silence dédaigneux...
j'ai encore perdu mon temps à essayer d'aider
j'ai encore perdu mon temps à essayer d'aider
Hello Michel, rien de tel !
Simplement, la pièce jointe que je télécharge via ton lien ne fournie pas un fichier excel mais un fichier zip très bizarre qui, j'ai l'impression, ne contient rien me concernant...
C'est la raison pour laquelle je n'ai pas encore relevé ton message.
Mais peut etre que ça vient de moi ...
Merci en tout cas !
Simplement, la pièce jointe que je télécharge via ton lien ne fournie pas un fichier excel mais un fichier zip très bizarre qui, j'ai l'impression, ne contient rien me concernant...
C'est la raison pour laquelle je n'ai pas encore relevé ton message.
Mais peut etre que ça vient de moi ...
Merci en tout cas !
Je ne t'ai pas envoyé un fichier zip !!!!
mais un fichier Excel 2007 comportant une macro...
Le minimum aurait été de le signaler Le + tôt possible car peut-être est tu sous XL<2007
voici la macro:1 ou 2 modifs (dernière ligne col U au lieu de K)
et adjonction de commentaires montrant la modélisation rapide des objets à traiter , regroupement en bloc des règles de gestion...
ce pour faciliter la maintenance et/ou une évolution
Tu en fait ce que tu veux....
edit: modifié colonnes dans modélisation
mais un fichier Excel 2007 comportant une macro...
Le minimum aurait été de le signaler Le + tôt possible car peut-être est tu sous XL<2007
voici la macro:1 ou 2 modifs (dernière ligne col U au lieu de K)
et adjonction de commentaires montrant la modélisation rapide des objets à traiter , regroupement en bloc des règles de gestion...
ce pour faciliter la maintenance et/ou une évolution
Tu en fait ce que tu veux....
Option Explicit
Sub apprecier()
Dim derlig As Integer
Dim T_model, T_in, T_out
Dim c_in As Integer, c_m As Integer
Dim cond1 As Boolean, cond2 As Boolean, cond3 As Boolean
'-----------------MODELISATION OBJETS A TRAITER
With Sheets(2)
derlig = .Range("D1000").End(xlUp).Row
T_model = .Range("A2:D" & derlig)
End With
With Sheets(1)
derlig = .Range("K1000").End(xlUp).Row
T_in = .Range("K2:O" & derlig)
ReDim T_out(1 To derlig - 1)
End With
'-------ANALYSE
For c_in = 1 To UBound(T_in)
For c_m = 1 To UBound(T_model)
' -----gestion des conditions
' règle de gestion: si telle cellule feuille1colonne XXX est égale ou ressemble (like) à feuille2;celluleYYY ou la cellule feuille2 est vide==>VRAI
cond1 = (UCase(T_in(c_in, 5)) Like "*" & UCase(T_model(c_m, 1)) & "*") Or IsEmpty(T_model(c_m, 1)) 'colonneO
cond2 = (T_in(c_in, 1) = T_model(c_m, 2)) Or IsEmpty(T_model(c_m, 2)) 'colonne L
cond3 = (T_in(c_in, 2) = T_model(c_m, 3)) Or IsEmpty(T_model(c_m, 3)) 'colonne K
'si les 3 sont vraies alors tableau de sortie= analysis correspondant
If cond1 And cond2 And cond3 Then
T_out(c_in) = T_model(c_m, 4)
End If
Next c_m
'cas non trouvé
If IsEmpty(T_out(c_in)) Then T_out(c_in) = "OTHER"
Next c_in
'------RESTITUTION PROVISOIRE COL W
Application.ScreenUpdating = False
Range("W2").Resize(UBound(T_out), 1) = Application.Transpose(T_out)
End Sub
edit: modifié colonnes dans modélisation
Hello,
Plusieurs commentaires:
ligne 150 par exemple, ça devrait afficher KCI (car la cellule O contien KCI) hors ça affiche collect issue. (idem ligne 365 ça affiche Delivery issue au lieu de KCI)
Est ce que ta "formule VBA" est liée a la feuille "cherche" comme Melanie, ou bien estce que tout est à partir de ta formule ?
Merci de tes commentaires!
Plusieurs commentaires:
ligne 150 par exemple, ça devrait afficher KCI (car la cellule O contien KCI) hors ça affiche collect issue. (idem ligne 365 ça affiche Delivery issue au lieu de KCI)
Est ce que ta "formule VBA" est liée a la feuille "cherche" comme Melanie, ou bien estce que tout est à partir de ta formule ?
Merci de tes commentaires!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
copies et colls cette macro à la place de l'autre :
Sub cherche()
i = 2
Do While Cells(i, 15) <> "" 'va balayer ta colonne O
b = 2
Do While Sheets("cherche").Cells(b, 4) <> "" 'va balayer la feuille cherche, modifie cherche par ton nom de feuille si tu le modifies
If Sheets("cherche").Cells(b, 2) = "" Then
If a >= 1 Then
Cells(i, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
If Sheets("cherche").Cells(b, 3) = "" Then
c = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 2) & "*")
if Sheets("cherche").Cells(b, 1) & "*") =""
a=1
end if
If a >= 1 And c >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
if Sheets("cherche").Cells(b, 1) & "*") =""
a=1
end if
d = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 3) & "*")
If a >= 1 And c >= 1 And d >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
End If
End If
b = b + 1
Loop
i = i + 1
Loop
End Sub
copies et colls cette macro à la place de l'autre :
Sub cherche()
i = 2
Do While Cells(i, 15) <> "" 'va balayer ta colonne O
b = 2
Do While Sheets("cherche").Cells(b, 4) <> "" 'va balayer la feuille cherche, modifie cherche par ton nom de feuille si tu le modifies
If Sheets("cherche").Cells(b, 2) = "" Then
If a >= 1 Then
Cells(i, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
If Sheets("cherche").Cells(b, 3) = "" Then
c = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 2) & "*")
if Sheets("cherche").Cells(b, 1) & "*") =""
a=1
end if
If a >= 1 And c >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
if Sheets("cherche").Cells(b, 1) & "*") =""
a=1
end if
d = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 3) & "*")
If a >= 1 And c >= 1 And d >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
End If
End If
b = b + 1
Loop
i = i + 1
Loop
End Sub
pardon, erreur d'écriture,
remplace if Sheets("cherche").Cells(b, 1) & "*") =""
par if Sheets("cherche").Cells(b, 1) =""
remplace if Sheets("cherche").Cells(b, 1) & "*") =""
par if Sheets("cherche").Cells(b, 1) =""
Coucou Mélanie,
J'ai fait les modifs que tu as indiqué ci dessus Mais (!) du coup, ça donne toutes les lignes avec KCI comme résultats !!
Voila la formule telle que je l'ai modifiée avec ton aide:
Sub cherche()
i = 2
Do While Cells(i, 15) <> "" 'va balayer ta colonne O
b = 2
Do While Sheets("cherche").Cells(b, 4) <> "" 'va balayer la feuille cherche, modifie cherche par ton nom de feuille si tu le modifies
If Sheets("cherche").Cells(b, 2) = "" Then
If a >= 1 Then
Cells(i, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
If Sheets("cherche").Cells(b, 3) = "" Then
c = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 2) & "*")
If Sheets("cherche").Cells(b, 1) = "" Then
a = 1
End If
If a >= 1 And c >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
If Sheets("cherche").Cells(b, 1) = "" Then
a = 1
End If
d = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 3) & "*")
If a >= 1 And c >= 1 And d >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
End If
End If
b = b + 1
Loop
i = i + 1
Loop
End Sub
Merci !!
J'ai fait les modifs que tu as indiqué ci dessus Mais (!) du coup, ça donne toutes les lignes avec KCI comme résultats !!
Voila la formule telle que je l'ai modifiée avec ton aide:
Sub cherche()
i = 2
Do While Cells(i, 15) <> "" 'va balayer ta colonne O
b = 2
Do While Sheets("cherche").Cells(b, 4) <> "" 'va balayer la feuille cherche, modifie cherche par ton nom de feuille si tu le modifies
If Sheets("cherche").Cells(b, 2) = "" Then
If a >= 1 Then
Cells(i, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
If Sheets("cherche").Cells(b, 3) = "" Then
c = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 2) & "*")
If Sheets("cherche").Cells(b, 1) = "" Then
a = 1
End If
If a >= 1 And c >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
If Sheets("cherche").Cells(b, 1) = "" Then
a = 1
End If
d = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 3) & "*")
If a >= 1 And c >= 1 And d >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
End If
End If
b = b + 1
Loop
i = i + 1
Loop
End Sub
Merci !!
re,
ci joint
https://www.cjoint.com/?3cqsNZlmITe
pas trop de dégats à la macro avec mon système de blocs "règle de gestion" et quelques surprises à la sensibilité à la casse j'ai donc tout mis en Ucase(forcage en majuscules)
en rouge italique les discordances qui sauf erreur de ma part (ca, je sais faire)
viennent de "manques" dans la feuille dite "cherche"
a noter une faute de frappe (ligne 398) qui cause un "other": "de f" au lieu de "def"
ci joint
https://www.cjoint.com/?3cqsNZlmITe
pas trop de dégats à la macro avec mon système de blocs "règle de gestion" et quelques surprises à la sensibilité à la casse j'ai donc tout mis en Ucase(forcage en majuscules)
en rouge italique les discordances qui sauf erreur de ma part (ca, je sais faire)
viennent de "manques" dans la feuille dite "cherche"
a noter une faute de frappe (ligne 398) qui cause un "other": "de f" au lieu de "def"
Bonjour,
il manque une ligne en fait :
Sub cherche()
i = 2
Do While Cells(i, 15) <> "" 'va balayer ta colonne O
b = 2
Do While Sheets("cherche").Cells(b, 4) <> "" 'va balayer la feuille cherche, modifie cherche par ton nom de feuille si tu le modifies
If Sheets("cherche").Cells(b, 1) = "" Then
a=1
else
a = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 1) & "*")
end if
If Sheets("cherche").Cells(b, 2) = "" Then
If a >= 1 Then
Cells(i, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
If Sheets("cherche").Cells(b, 3) = "" Then
c = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 2) & "*")
If a >= 1 And c >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
end if
d = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 3) & "*")
If a >= 1 And c >= 1 And d >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
End If
End If
b = b + 1
Loop
i = i + 1
Loop
End Sub
il manque une ligne en fait :
Sub cherche()
i = 2
Do While Cells(i, 15) <> "" 'va balayer ta colonne O
b = 2
Do While Sheets("cherche").Cells(b, 4) <> "" 'va balayer la feuille cherche, modifie cherche par ton nom de feuille si tu le modifies
If Sheets("cherche").Cells(b, 1) = "" Then
a=1
else
a = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 1) & "*")
end if
If Sheets("cherche").Cells(b, 2) = "" Then
If a >= 1 Then
Cells(i, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
If Sheets("cherche").Cells(b, 3) = "" Then
c = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 2) & "*")
If a >= 1 And c >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
end if
d = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 3) & "*")
If a >= 1 And c >= 1 And d >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
End If
End If
b = b + 1
Loop
i = i + 1
Loop
End Sub