Excel Fonctions SI + OU
Fermé
services15
-
10 févr. 2011 à 11:00
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 21 févr. 2011 à 17:17
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 21 févr. 2011 à 17:17
A voir également:
- Excel Fonctions SI + OU
- Liste déroulante excel - Guide
- Si ou excel - Guide
- Formule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne excel - Guide
30 réponses
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
14 févr. 2011 à 14:35
14 févr. 2011 à 14:35
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 !
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
15 févr. 2011 à 10:14
15 févr. 2011 à 10:14
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 !
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
Modifié par michel_m le 15/02/2011 à 14:44
Modifié par michel_m le 15/02/2011 à 14:44
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!
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
16 févr. 2011 à 09:57
16 févr. 2011 à 09:57
Bonjour,
je n'ai pas de lignes 150 ni 365
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 ?
que veux tu dire ?
je n'ai pas de lignes 150 ni 365
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 ?
que veux tu dire ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
15 févr. 2011 à 11:56
15 févr. 2011 à 11:56
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
16 févr. 2011 à 09:28
16 févr. 2011 à 09:28
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 !!
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
16 févr. 2011 à 10:35
16 févr. 2011 à 10:35
tu rajoutes then derière la ligne que je t'aif aite modifiée
if ... then
if ... then
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
16 févr. 2011 à 18:52
16 févr. 2011 à 18:52
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"
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
21 févr. 2011 à 17:17
21 févr. 2011 à 17:17
Je viens de re-re-re-re- essayer: je n'ai pas de problème avec le fichier que je t'avais transmis il y a quelques jours déjà; c'était supprimé chez moi compte tenu de ton silence...
On te revoit la semaine prochaine ou dans 15 jours ?
On te revoit la semaine prochaine ou dans 15 jours ?
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
21 févr. 2011 à 14:17
21 févr. 2011 à 14:17
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
melanie1324
Messages postés
1505
Date d'inscription
vendredi 25 mai 2007
Statut
Membre
Dernière intervention
31 janvier 2018
154
21 févr. 2011 à 15:57
21 févr. 2011 à 15:57
normalement, j'ai fait les modifs pour que si ta colonne A est vide, ca fonctionne.
Ce n'est pas le cas?
Ce n'est pas le cas?