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


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut Mise en forme conditionnelle
    Bonjour.
    Je cherche à attribuer une couleur aux cellules qui contiennent une chaîne de caractères.
    Les valeurs des cellules peuvent contenir un retour chariot.
    Dans mon exemple, le champ de recherche est le tableau (C4:J37)
    La chaîne de caractères à chercher est définie dans la cellule L1 (pour info, il s’agit d’une liste déroulante).

    Voici mon petit bout de code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For Each cel In Range("C4:J37")
    cel.Select
    Selection.FormatConditions.Add Type:=xlExpression, Formula1:= "=ESTNUM(CHERCHE(L1;cel))"
    Selection.FormatConditions(1).Interior.ColorIndex = 44
    Next
    Ce code ne fonctionne pas.
    Si je teste la formule sur une seule cellule (exemple : Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=ESTNUM(CHERCHE(L1;C4))
    ), ça marche donc je suppose que le problème vient de la boucle.
    Quelqu'un peut m'aider ?

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Essaye comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim cel As Range
    For Each cel In Range("C4:J37")
    If cel = Range("L1") Then
    cel.Interior.ColorIndex = 44
    Else
    cel.Interior.ColorIndex = xlNone
    End If
    Next

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut
    Ton code fonctionne pour les cellules égales à ma chaîne de caractères mais mon problème vient de là : je ne cherche pas à tester une égalité mais le fait que mes cellules contiennent ma chaîne de caractères.

    En parcourant le forum, j'ai l'impression que c'est le mix entre l'expression excel et le code VBA qui bloque (petite précision : je suis débutante).

    J'ai aussi essayé avec la fonction instr mais là, ça ne marche pas pour les cellules qui ont un retour charriot.

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    D'accord, dans ce cas essaye plutot ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test2()
    Dim cel As Range
    For Each cel In Range("C4:J37")
    If cel.Value Like "*" & Range("L1").Value & "*" Then
    cel.Interior.ColorIndex = 44
    Else
    cel.Interior.ColorIndex = xlNone
    End If
    Next
    End Sub

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 4
    Par défaut Mise en forme conditionnelle
    Avec ce code, ça fonctionne à condition de relancer la macro à chaque fois que je change de recherche (cellule L1).
    Par rapport à mon besoin, il faudrait que je cherche en plus à activer la macro automatiquement dès que le contenu de L1 change. Et là, ça se complique... pour moi en tout cas.

    C'est pour ça que ça m'intéressait de trouver une solution avec Selection.FormatConditions.Add Type:=xlExpression, Formula1:= ...
    Peut-être faut-il traduire en VBA mon expression ESTNUM(CHERCHE(L1;cel)) ?

    Dans tous les cas, merci pour ton aide.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonsoir

    si tu veux declenché ta macro a chaque fois qu un element de la liste change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub ListBox1_Change()
    ta macro
    End Sub

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

Discussions similaires

  1. mise en forme conditionnelle et vba
    Par malabar92 dans le forum Access
    Réponses: 4
    Dernier message: 26/04/2006, 15h18
  2. Mise en forme conditionnelle
    Par the big ben 5 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 23/12/2005, 16h20
  3. [VBA][Excel] mise en forme conditionnelle
    Par titflocon dans le forum Access
    Réponses: 9
    Dernier message: 19/12/2005, 11h13
  4. Réponses: 4
    Dernier message: 15/11/2005, 19h53
  5. Mise en forme conditionnelle en VBA / Cut-Paste
    Par priest69 dans le forum IHM
    Réponses: 4
    Dernier message: 03/09/2005, 14h54

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