VBA: filtre critere rempli. cellule sur ligne
ERIC
-
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à Tous et bonne année,
Je débute en VBA et j'ai déjà résolu un certain nombre de cas mais là j'avoue que je suis vraiment bloqué sur celui ci, donc je me lance sur le forum:
colonne C : Numéro de livraison
colonne D : Service code (2 chiffres ou deux lettres, correspondant à la livraison)
colonne E : Type de livraison (DOC, TAX, CF, GOV)
colonne P : Commentaire
1er critère: le numéro de livraison (Col C) doit commencer par 2R
Maintenant je souhaiterais
- Si pour chaque livraison (Col. C filtrée 2R) le type de livraison (Col.D) est égal à 75, 77, 79, CP, CR et le type de livraison est différent de GOV (donc égal à DOC, TAX ou CF) alors la cellule de référence (Col P) en face du numéro de livraison correspondant se remplit du commentaire : "MAUVAIS TYPE DE LIVRAISON" sinon rien ne se passe.
Je présume qu'il faut utiliser entre autre if then else, for each next...
Mais je ne suis pas capable de rédiger la syntaxe.
Si en plus vous savez me mettre dan le code les lignes d'erreur (celles avec un mauvais code de livraison) en ROUGE et BOLD, ça serait vraiment le Pérou!
Je vous remercie de votre aide.
Je débute en VBA et j'ai déjà résolu un certain nombre de cas mais là j'avoue que je suis vraiment bloqué sur celui ci, donc je me lance sur le forum:
colonne C : Numéro de livraison
colonne D : Service code (2 chiffres ou deux lettres, correspondant à la livraison)
colonne E : Type de livraison (DOC, TAX, CF, GOV)
colonne P : Commentaire
1er critère: le numéro de livraison (Col C) doit commencer par 2R
Maintenant je souhaiterais
- Si pour chaque livraison (Col. C filtrée 2R) le type de livraison (Col.D) est égal à 75, 77, 79, CP, CR et le type de livraison est différent de GOV (donc égal à DOC, TAX ou CF) alors la cellule de référence (Col P) en face du numéro de livraison correspondant se remplit du commentaire : "MAUVAIS TYPE DE LIVRAISON" sinon rien ne se passe.
Je présume qu'il faut utiliser entre autre if then else, for each next...
Mais je ne suis pas capable de rédiger la syntaxe.
Si en plus vous savez me mettre dan le code les lignes d'erreur (celles avec un mauvais code de livraison) en ROUGE et BOLD, ça serait vraiment le Pérou!
Je vous remercie de votre aide.
A voir également:
- VBA: filtre critere rempli. cellule sur ligne
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
16 réponses
Bonsoir,
Désolé je n'ai pas la solution en VBA; mais par une formule, c'est sans doute plus simple:
dans la colonne P dans la ligne du premier N° de livraison (adapter C5 et D5 en conséquence):
a "tirer" vers le bas.
En espérant que ça peut répondre au problème.
Bonne soirée
Désolé je n'ai pas la solution en VBA; mais par une formule, c'est sans doute plus simple:
dans la colonne P dans la ligne du premier N° de livraison (adapter C5 et D5 en conséquence):
=SI(ET(OU(D5=75;D5=77;D5=79;D5="CP";D5="CR");E5<>"GOV");"MAUVAIS TYPE DE LIVRAISON";"")
a "tirer" vers le bas.
En espérant que ça peut répondre au problème.
Bonne soirée
Merci beaucoup pour ta réponse PAF.
En fait, il me faut ce code en VBA car il fait partie d'une longue série de codes me permettant d'automatiser l'exécution d'un rapport à l'aide d'un formulaire et de boutons codés.
Concernant le cas ELSE, il faut que le contenu de la cellule reste celui de départ (et non pas vide " " si la cellule ne l'était pas).
Quelqu'un pourrait il m'aidait pour le VBA?
Merci d'avance.
En fait, il me faut ce code en VBA car il fait partie d'une longue série de codes me permettant d'automatiser l'exécution d'un rapport à l'aide d'un formulaire et de boutons codés.
Concernant le cas ELSE, il faut que le contenu de la cellule reste celui de départ (et non pas vide " " si la cellule ne l'était pas).
Quelqu'un pourrait il m'aidait pour le VBA?
Merci d'avance.
ERRATUM
Maintenant je souhaiterais
- Si pour chaque livraison (Col. C filtrée 2R) le SERVICE CODE (Col.D) est égal à 75, 77, 79, CP, CR et le type de livraison est différent de GOV (donc égal à DOC, TAX ou CF) alors la cellule de référence (Col P) en face du numéro de livraison correspondant se remplit du commentaire : "MAUVAIS TYPE DE LIVRAISON" sinon rien ne se passe.
Maintenant je souhaiterais
- Si pour chaque livraison (Col. C filtrée 2R) le SERVICE CODE (Col.D) est égal à 75, 77, 79, CP, CR et le type de livraison est différent de GOV (donc égal à DOC, TAX ou CF) alors la cellule de référence (Col P) en face du numéro de livraison correspondant se remplit du commentaire : "MAUVAIS TYPE DE LIVRAISON" sinon rien ne se passe.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Bien que ton exposer soit bien rédiger ce n'est pas façile de comprendre ce que tu veux faire.
Pourait-tu créer un classeur exemple avec quelque données et sur une autre feuille mettre le résultat souhaiter.
Ou s'il n'y a pas de données confidentielles mettre ton classeur.
Sur CiJoint.fr
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Bien que ton exposer soit bien rédiger ce n'est pas façile de comprendre ce que tu veux faire.
Pourait-tu créer un classeur exemple avec quelque données et sur une autre feuille mettre le résultat souhaiter.
Ou s'il n'y a pas de données confidentielles mettre ton classeur.
Sur CiJoint.fr
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Merci pour l'intérêt que tu portes à ma demande Lermite222 ;)
Voici le lien
http://www.cijoint.fr/cjlink.php?file=cj201101/cijhPTIJ58.xlsx
Je ré explique simplement car je me suis trompé sur un critère:
colonne A : Numéro de livraison
colonne B : Service code (2 chiffres ou deux lettres, correspondant à la livraison)
colonne J : Commentaire
- Si une livraison (Col.a) commence par 1Z et son service code (Col.B) est égal à 75, 77, 79, CP, CR alors la cellule de référence (Col J) en face du numéro de livraison correspondant se remplit du commentaire : "WRONG SHIPMENT TYPE" (et en option la ligne se met en BOLD et RED) sinon rien ne se passe.
Dans le sheet1 les données à traiter, dans le sheet2 le resultat à atteindre.
Merci d'utiliser entre autre if then else et for each next
Merci de votre aide.
Voici le lien
http://www.cijoint.fr/cjlink.php?file=cj201101/cijhPTIJ58.xlsx
Je ré explique simplement car je me suis trompé sur un critère:
colonne A : Numéro de livraison
colonne B : Service code (2 chiffres ou deux lettres, correspondant à la livraison)
colonne J : Commentaire
- Si une livraison (Col.a) commence par 1Z et son service code (Col.B) est égal à 75, 77, 79, CP, CR alors la cellule de référence (Col J) en face du numéro de livraison correspondant se remplit du commentaire : "WRONG SHIPMENT TYPE" (et en option la ligne se met en BOLD et RED) sinon rien ne se passe.
Dans le sheet1 les données à traiter, dans le sheet2 le resultat à atteindre.
Merci d'utiliser entre autre if then else et for each next
Merci de votre aide.
Apparemment ça ne pose aucun problème, juste.. le repérage est déclencher comment ?
Un bouton ? une sélection ?
Un bouton ? une sélection ?
Un bouton dans un formulaire, mais comme j'ai 10 fois plus de code pour le même bouton ici je n'ai besoin que du code en tant que sub. Je l'intégrerai ensuite dans le reste de code.
Merci.
Sub WrongShipmentType () code End sub
Merci.
Comme ça ?
A+
Sub MarquerCOP() Dim Lig As Long, AR Dim i As Integer, B As Boolean AR = Array("75", "77", "79", "CP", "CR") With Sheets("Sheet1") For Lig = 2 To Range("A100000").End(xlUp).Row If Left(Cells(Lig, 1).Value, 2) = "1Z" Then For i = 0 To 4 If Cells(Lig, 2) = AR(i) Then B = True: Exit For Next If B Then Range("J" & Lig) = "Wrong Shipment Type" Range("J" & Lig).Font.ColorIndex = 3 Range(Cells(Lig, 1), Cells(Lig, 3)).Font.ColorIndex = 3 B = False End If End If Next End With End Sub
A+
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
1°) Simplifier les modif que tu à fait par
2°) Je comprend pas ce que tu veux, prochaine fois tâche de mettre un exemple qui reflète la réalité.
Remet un classeur exemple comme la première fois mais avec les bons emplacements.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
1°) Simplifier les modif que tu à fait par
If B Then Range("O" & Lig) = "Wrong Shipment Type" Rows(Lig).Font.ColorIndex = 3 Rows(Lig).Font.Bold = True B = False End If
2°) Je comprend pas ce que tu veux, prochaine fois tâche de mettre un exemple qui reflète la réalité.
Remet un classeur exemple comme la première fois mais avec les bons emplacements.
Ok pas de soucis Lermite :)
J'ai préparé le fichier mais je ne sais pas où l'héberger, ci-joint.fr semble hors service, aurais tu une autre solution?
J'ai préparé le fichier mais je ne sais pas où l'héberger, ci-joint.fr semble hors service, aurais tu une autre solution?
Pas moyen d'ouvrir le fichier su Cjoint.
Et tu doit le sauver en Xlsm (avec macro)
Remet le sur le même site que l'autre.
Et tu doit le sauver en Xlsm (avec macro)
Remet le sur le même site que l'autre.
J'ai enfin pu avoir le classeur.
Et ça m'étonne que tu puisse pas modifier la macro en fonction de ce que tu veux maintenant !!
Enfin... bon,
Je vois que tu n'a plus la colonne avec les "Nombres" alors supprimer ce test.
Les emplacements sont différents, modifier les emplacements.
J'ai mis les lettres des colonnes, tu comprendras mieux.
J'ai pas tester étant donner que tu t'évertues à mettre un classeur XlsX
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Et ça m'étonne que tu puisse pas modifier la macro en fonction de ce que tu veux maintenant !!
Enfin... bon,
Je vois que tu n'a plus la colonne avec les "Nombres" alors supprimer ce test.
Les emplacements sont différents, modifier les emplacements.
Sub MarquerCOP() Dim Lig As Long With Sheets("Sheet1") For Lig = 2 To Range("A100000").End(xlUp).Row If Left(Cells(Lig, "C").Value, 2) = "1Z" and Cells(Lig, "E") = "COP" Then Range("O" & Lig) = "Wrong Shipment Type" Rows(Lig).Font.ColorIndex = 3 Rows(Lig).Font.Bold = True End If Next End With End Sub
J'ai mis les lettres des colonnes, tu comprendras mieux.
J'ai pas tester étant donner que tu t'évertues à mettre un classeur XlsX
A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)