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 :

Boucle sur MFC et sur condition de la MFC


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 21
    Par défaut Boucle sur MFC et sur condition de la MFC
    Bonjour à tous,

    Je cherche à faire une boucle de mises en forme conditionnelle sur des plages en fonction de la valeur d'une cellule de la plage sous VBA.
    J'ai réussi à créer la boucle et la mise en forme conditionnelle néanmoins je rencontre deux problèmes...

    J'ai

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub MFC()
    Range("D16:D26").Select
        For compteur = 1 To 28
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=d20=1" 'ici je n'arrive pas à changer la cellule de condition sur la plage suivante (ici k20 etc...)
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent2
            .TintAndShade = 0.799981688894314
        End With
        Selection.FormatConditions(1).StopIfTrue = True
        ActiveCell.Offset(0, 7).Select ' ici je n'arrive pas à selectionner toute la plage suivante mais seulement la première cellule de la plage...
        Next compteur
    End Sub
    La prochaine étape sera de créer une deuxième boucle pour décaler les plages de 10 lignes 5 fois de suite et d'arrêter la boucle... Mais ça se sera pour la prochaine fois ^^

    Merci pour votre aide!

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir
    Pour moi j'arrive pas à comprendre ta demande donc si tu peux expliquer davantage avec un exemple et/ou un capture écran des données de départ et une simulation du résultat souhaité
    Pour les règles de MFC je crois que vous pouvez sans VBA gérer ces règles
    BONNE CONTINUATION

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Si j'ai bien compris
    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
    20
    Sub MFC()
        Application.ScreenUpdating = False
        Col = 4
        Set Plage = Range("D16:D26")
        Plage.Select
        For compteur = 1 To 28
            Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=" & Cells(20, Col).Address & "=1"
            Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
            With Selection.FormatConditions(1).Interior
                .PatternColorIndex = xlAutomatic
                .ThemeColor = xlThemeColorAccent2
                .TintAndShade = 0.799981688894314
            End With
            Selection.FormatConditions(1).StopIfTrue = True
            ActiveCell.Offset(0, 7).Select
            Col = Col + 7
            Set Plage = Range(Cells(16, Col), Cells(26, Col))
            Plage.Select
        Next compteur
    End Sub
    Cdlt

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 21
    Par défaut
    Citation Envoyé par Le Marteau Voir le message
    ActiveCell.Offset(0, 7).Select ' ici je n'arrive pas à selectionner toute la plage suivante mais seulement la première cellule de la plage...
    ça j'ai reussi avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(ActiveCell.Offset(0, 7), ActiveCell.Offset(10, 7)).Select
    Seulement les plages ne se colorent pas.....

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 21
    Par défaut
    Bonjour vous deux,
    Tout d'abord merci beaucoup pour vos réponses!

    Arturo ta solution fonctionne super bien! Sauriez vous comment faire pour répéter la même opération pour passer de la plage D16 : D26 à D27 : D37 puis D38 : D48 etc et ça six fois de suite?

    Merci beaucoup à vous!!!!

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonsoir,

    En ce qui concerne la ligne à tester, pour la 1ère ligne c'est la 20, mais pour les autres??

    cdlt

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    si j'ai bien compris ton code tu peux remplacer ta boucle de 28 par un =nb.si(ta_plage;1)>0 (en anglais en vba)
    eric

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Novembre 2018
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 21
    Par défaut
    Bonjour à tous!!

    Encore merci pour vos réponses!!
    Eric je suis désolé mais je ne suis pas sur de bien comprendre...

    Arturo, je remarque qu'il n'y a pas qu'en VBA que je suis débutant mais aussi pour expliquer mes problématiques .
    La cellule de condition se déplace également donc : Pour D16 : D26 c'est donc 20 . Pour D27 : D37 c'est 31 puis D38 : D48 c'est 42 etc... donc +11 à chaque fois si je ne me trompe pas.

    J'espère avoir été assez clair...

    Merci pour tout votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Difficultés sur: multipage activeX sur feuille + setfocus sur textbox avec touche enter
    Par PlastiBE dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 28/06/2017, 14h14
  2. Boucle sur plusieurs feuilles avec conditions
    Par Kulka dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/03/2016, 19h40
  3. [XL-2003] Macro avec boucle sur une colonne et condition sur une autre
    Par Isabelle86 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/10/2010, 10h31
  4. Réponses: 3
    Dernier message: 16/02/2007, 12h35
  5. Réponses: 3
    Dernier message: 11/06/2006, 12h09

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