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 :

Peut-on programmer des Mises en Forme Conditionnelles par Vba ? [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Autre
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut Peut-on programmer des Mises en Forme Conditionnelles par Vba ?
    Bonjour à tous,

    Voici mon problème : mon classeur devient de plus en plus lent à effectuer chaque opération (insertion, enregistrement, validation etc…) au fur et à mesure que j'insère des lignes qui contiennent des mises en forme conditionnelles.

    Est-il possible de faire ces mises en forme conditionnelles en passant par une procédure Vba ?
    Cela rendrait-il le classeur plus fluide ?

    J'ai donc une feuille nommée "Listign Articles".
    En colonne B la liste de tous mes articles.
    Chaque article à une couleur de cellule différente.

    J'ai une autre feuille nommée "Vérif Articles".
    Quand j'ai besoin, j'insère par macro des nouvelles lignes (toujours en ligne 5 - les autres lignes se décalent d'autant).
    Cette macro insère entre autres, dans la cellule F5 la liste déroulante des articles de la feuille "Listing Articles" et suivant l'article choisi en F5, les cellules de A5 à W5 prennent la même couleur que la cellule du "listing articles" correspondant à l'article indiqué en F5 (la mise en forme reste après insertion d'une nouvelle ligne et doit pouvoir changer si le nom de l'article change colonne F et cela même dans toutes les lignes déjà créée). Et c'est, je pense, cela qui rend le classeur très, très lent !

    Merci par avance de vos réponses.

    Vad18

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Bonjour à tous,

    c'est tout à fait possible de réaliser ce que tu demandes, de la a dire que ce sera plus rapide, je n'en sais rien. Ce sera à toi de nous dire.

    Si on part du principe qu'il faut agir seulement sur la couleur de remplissage, essaie ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = "$F$5" Then
            Range("A5:W5").Interior.Color = Sheets("Listign Articles").UsedRange.Find(Target.Value, lookat:=xlWhole).Interior.Color
        End If
    End Sub
    à coller dans le code de la feuille "Vérif Articles".

    Vérifie le nom de la feuille "Listign Articles", je suppose que voulais dire "Listing Articles"

    N'hésites pas si tu as des questions.

  3. #3
    Membre averti
    Femme Profil pro
    Autre
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut
    Bonjour Aposto,
    Tout d'abord merci pour ta réponse.
    Je pense avoir bien suivi la procédure que tu as donnée.
    Mais rien ne se passe !
    (Avant de commencer, j'ai supprimé toutes les mises en forme conditionnelles existantes du classeur)

    Dans ton exemple comment Excel recherche-t-il la couleur colonne B de la feuille "Listing Articles" et l'impute-t-il aux cellules A5 à W5 suivant le contenu de la cellule de la colonne F5 de la feuille "Vérif articles" où j'ai collé dans Worksheet la procédure (donc pas dans module) ? (à noter que j'ai bien rectifié le nom de la feuille listing Articles…)
    Vad18

  4. #4
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Essaies de voir fonctionnement de mon fichier de test, si il fonctionne comme tu veut, essaie de reproduire ce que j'ai fait...

    ClasseurTestArticles.xlsm

    En fait "Find" cherche la valeur de la cellule F5 dans la feuille "listing article" et affecte la couleur de cette cellule aux cellules A5:W5

  5. #5
    Membre averti
    Femme Profil pro
    Autre
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut
    Super Aposto ! Ta procédure fonctionne très bien pour toutes les nouvelles lignes (Par contre, apparemment, elle ne tient pas compte des lignes créées avant…)

    Il faut simplement que j'adapte ma macro à ce changement de procédure…

    De plus cela ne reproduit plus de mises en forme conditionnelles dans chaque nouvelle ligne comme avant avec ma macro... Donc, théoriquement le fichier devrait rester fluide…
    Merci beaucoup pour ton aide.
    Vad_18

  6. #6
    Membre averti
    Femme Profil pro
    Autre
    Inscrit en
    Septembre 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Septembre 2014
    Messages : 18
    Par défaut
    Bonsoir Aposto,
    Je reviens vers toi, car j'ai un petit souci.
    Ta procédure fonctionne très bien lorsque l'on insère une nouvelle ligne et que l'on sélectionne un nom d'articles (les cellules prennent bien la bonne couleur)
    Donc lorsque j'insère une nouvelle ligne les infos qui était en ligne 5 se retrouve en ligne 6 et ainsi de suite à chaque nouvelle insertion…
    Si on ne touche à rien les lignes gardent bien la couleur que la procédure leur a attribuée quand elles étaient en ligne 5…
    Mais mon problème c'est que si je dois pouvoir changer le nom par exemple (dans la cellule F15 ou F352…) par un autre nom de la liste articles et la ligne doit changer et prendre la nouvelle couleur attribuée à la nouvelle référence. Et cela ne fonctionne pas…
    Existe-t-il une solution ?
    Merci de ton aide
    Vad

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

Discussions similaires

  1. [XL-2007] Compatibilité des mises en forme conditionnelles avec les macros
    Par DarkGriffin dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/01/2013, 08h53
  2. Propagation des mises en forme conditionnelles
    Par bakounine dans le forum Excel
    Réponses: 8
    Dernier message: 19/10/2012, 08h55
  3. [Formulaire] Mise en forme conditionnelle en VBA
    Par léti07 dans le forum IHM
    Réponses: 26
    Dernier message: 16/10/2006, 09h12
  4. mise en forme conditionnelle et vba
    Par malabar92 dans le forum Access
    Réponses: 4
    Dernier message: 26/04/2006, 14h18
  5. Mise en forme conditionnelle en VBA / Cut-Paste
    Par priest69 dans le forum IHM
    Réponses: 4
    Dernier message: 03/09/2005, 13h54

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