IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Double Condition IF


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 3
    Par défaut Double Condition IF
    Bonjour,

    Je débute en VBA et j'aimerais de l'aide sur une macro, je souhaite colorier une ligne en bleu si et seulement si on retrouve dans la colonne D le terme "GP et dans la colonne E le terme "P145"

    Une fois cela fais j'aimerais qu'une fois que l'on rencontre une ligne coloriée on copie a partir de cette ligne toute les lignes en dessous jusqu'au retour d'une nouvelle ligne coloriée.

    Je bloque déjà sur la première étape

    Si quelqu'un pourrait me venir en aide, s'il vous plaît

    Merci d'avance

    Cordialement
    --------------------------------------

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub MACROBOUCLE()
    Dim ObjCell As Range
     
     
     
    Mot = InputBox("DesignControl", "DesignControl souhaité", "P145")
    Mot2 = InputBox("DesignControl", "DesignControl souhaité", "GP")
     
    For Each ObjCell in range ("A1:E500")
     
        If ObjCell.Range("E1:E500").Value = Mot And ObjCell.Range("D1:D500").Value = Mot2 Then
            ObjCell.EntireRow.Interior.ColorIndex = 33
        End If
    Next 
     
     
    End Sub

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour,
    en faisant une recherche du mot "GP" dans la colonne D, si je le trouve on vérifie le 2eme critère en colonne E

    ça pourrait donner ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Sub MACROBOUCLE()
    Dim Macell As Range, ligne As Integer
    Dim Mot1 As String, Mot2 As String
     
    Mot1 = "GP"
    Mot2 = "P145"
    'Je recherche dans la colonne D
    For Each Macell In Range("D1:D500")
        If Macell.Value = Mot1 And Macell.Offset(0, 1).Value = Mot2 Then
            'je donne a ligne le num?ro de ligne correspondant
            ligne = Macell.Row
     
            'je colorie la plage correspondant au crit?re
            Range("A" & ligne & ":E" & ligne).Interior.ColorIndex = 33
        End If
    Next
     
    End Sub

  3. #3
    Membre émérite Avatar de Tippa
    Homme Profil pro
    Consultant Formateur en Business Intelligence
    Inscrit en
    Mars 2010
    Messages
    334
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant Formateur en Business Intelligence
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2010
    Messages : 334
    Par défaut MEFC
    Bonjour,

    Une mise en forme conditionnelle basée sur une fonction ET(), permet de résoudre la question sans même utiliser le VBA.
    J'ai ajouté un classeur exemple, à part les colonnes à modifier sinon c'est du prêt à l'emploi.
    =ET($D2="GP";$E2="P145") en formule de mise en forme conditionnelle
    et à recopier avec le pinceau par exemple sur les autres cellules du tableau (verticalement et horizontalement pour avoir toute la ligne en couleur)

    Enfin si tu souhaites que tes valeurs GP et P145 soient faciles à changer,
    tu peux les inscrire sur une feuille, et nommer tes cellules, Code1 et Code2 par exemple, ce qui donne :
    =ET($D2=Code1;$E2=Code2) en formule de mise en forme conditionnelle.

    Pas de VBA, donc plus simple à maintenir surtout si tu débutes ;-)

    Sinon bien sûr cette une belle occasion de faire une boucle VBA...

    A toi de voir
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    D'accord avec Tippa : inutile de faire un code VBA pour colorer une ligne selon une condition, une MFC fait ça beaucoup plus simplement.
    Pour plus d'info sur le sujet : http://silkyroad.developpez.com/Exce...onditionnelle/

    Citation Envoyé par Hayr0x Voir le message
    Une fois cela fais j'aimerais qu'une fois que l'on rencontre une ligne coloriée on copie a partir de cette ligne toute les lignes en dessous jusqu'au retour d'une nouvelle ligne coloriée.
    On copie où ?
    Pour faire une copie, il faut une source (que tu indiques) ET une destination (que tu n'indiques pas).
    A moins que tu veuilles uniquement dupliquer ces lignes dans le même tableau.

  5. #5
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Septembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2018
    Messages : 3
    Par défaut
    Tout d'abord merci de vos réponses rapides,

    Pour la suite je souhaite copier ses lignes dans une autre sheet "Retour" par exemple. Je souhaiterais que lorsque on détecte un "GP" "P145", toutes les lignes à partir de celle ci soit copié dans la sheet retour jusqu'à la detection d'un nouveau groupe GP P145 qui copiera une nouvelle fois toutes ses lignes etc...

    Je voulais inclure la coloration dans la macro pour tout effectuer en un seul coup.

    Merci pour votre aide

Discussions similaires

  1. Double condition: question
    Par El-Diablo- dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/04/2007, 20h24
  2. ouverture d'un formulaire sur une double condition
    Par mat75019 dans le forum Access
    Réponses: 6
    Dernier message: 27/10/2006, 16h13
  3. Double condition sur une date
    Par Olivier95 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 26/06/2006, 13h34
  4. Double condition !!
    Par calimero642 dans le forum Langage
    Réponses: 2
    Dernier message: 14/06/2006, 13h49
  5. Réponses: 8
    Dernier message: 02/05/2006, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo