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 :

Mise en forme conditionnelle >3 par VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut Mise en forme conditionnelle >3 par VBA
    Bonjour,
    Je voudrais écrire mes mises en forme conditionnelle, parce qu'il y en a beaucoup, qu'elles risquent d'être modifiées de temps en temps, et que ça concerne plusieurs feuilles...
    ce que je voudrais, c'est qu'en fonction de plages (toujours les mêmes), si l'utilisateur tape des mots clés, la cellule se colore en fonction du mot clé (évidement sans avoir à lancer une macro).
    je suppose que pour commencer il convient d'écrire le code dans ThisWorkbook
    j'ai essayé avec votre tuto http://silkyroad.developpez.com/Exce...itionnelle/#LV
    mais ça manque d'informations, je n'y arrive pas
    J'ai essayé avec des select case, mais là encore, je n'ai rien d'automatique
    j'ai trouvé qq ch qui commence par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    mais je ne sais pas ce que c'est qu'une Target, ni comment cela s'utilise
    Je vous joins mon fichier, avec mes bouts de codes.
    Merci de bien vouloir m'expliquer comment m'y prendre.
    http://cjoint.com/?CBfsaqx1jff

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Que tu n'aies pas compris le chapitre du tutoriel dont tu parles est une chose, dire que cela manque d'information en est une autre.
    Dans la procédure événementielle Worksheet_Change l'argument Target est un objet Range qui représente la ou les cellules qui ont été modifiées
    Donc si tu changes la valeur de la cellule A8 en tapant 15, Target.Value sera égal à 15
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
     MsgBox Target.Value
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonjour Philippe,
    Merci de ta réponse, je ne voulais pas vexer qui que se soit, c'est le seul tuto que j'ai trouvé et je dis merci, mais j'aurais aimé avoir qq exemples d'utilisation avec d'autres opérateurs, d'autant plus que le tuto semble vraiment au plus proche de la boîte de dialogue des mises en forme conditionnelle.

    Comment dois-je donner la valeur $E$5avec xlEqual
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .FormatConditions.Add Type:=xlEqual, "=$E$5"
    ?
    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu peux t'aider de l'enregistreur de macro pour coder ce type d'opération.
    Pour appliquer une MFC à une cellule contenant une valeur égale à celle de E5.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=$E$5"
    Cordialement.

  5. #5
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonjour
    Merci pour ta réponse.
    J'ai bien commencé par faire un enregistrement, malheureusement, il reste vide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub MefCond1()
    '
    ' MefCond1 Macro
    End Sub
    Donc j'ai essayé ça, dans ThisWorkbook :
    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
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    With Range("A1:C3") ', A5:C10, A15:C20
        'Supprime les MFC existantes
        .FormatConditions.Delete
     
        'Ajoute une condition (Vrai lorsque la cellule est non vide)
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=$E$5"
     
        With .FormatConditions(1)
            'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
            .Interior.Color = 16771071       '.Interior.ColorIndex = 15 'Gris
     
        End With
    End With
    End Sub
    Tout fonctionne parfaitement sur les cellules déterminées.
    J'ai plus qu'à saisir mes 31 codes, ça va aller plus vite.
    Encore merci à tous

  6. #6
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    J'ai encore un pb, j'ai voulu dupliquer pour les autres codes ayant la même couleur, mais cela n'est pas pris en compte.
    J'ai également voulu ajouter une conversion des codes en majuscule, ça non plus ne fonctionne pas
    Voilà donc mon nouveau code :
    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
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    With Range("A1:C3, A6:C7, A11:C14") 'Plage devant pratiquer la MeF
        'Supprime les MFC existantes
        .FormatConditions.Delete
     
        'Ajoute une condition (Vrai lorsque la cellule est non vide)
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=$E$5"
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=$E$6"
     
        With .FormatConditions(1)
            'Définit la couleur de fond de la cellule lorsque la condition sera vraie.
            .Interior.Color = 16771071       '.Interior.ColorIndex = 15 'Gris
     
            'Converti les saisie en majuscule
            Target.Value = UCase(Target.Value)
        End With
    End With
    End Sub
    Est-ce qq'1 voit ce qui cloche ?

Discussions similaires

  1. Mise en forme conditionnelle adaptée à un code VBA
    Par rihab92 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/05/2015, 09h39
  2. [XL-2010] Peut-on programmer des Mises en Forme Conditionnelles par Vba ?
    Par Vad_18 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/04/2015, 10h42
  3. [XL-2010] Comment gérer les priorités de mise en forme conditionnelle dans un programme VBA
    Par Alain777 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2015, 22h26
  4. Réponses: 3
    Dernier message: 14/11/2011, 13h00
  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