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

Excel Discussion :

VBA: mise en forme conditionnelle sous excel


Sujet :

Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut VBA: mise en forme conditionnelle sous excel
    Bonjour,

    Je souhaite mettre en place une mise en forme conditionnelle sur toute une colonne du tableau excel créé par mon prog VBA.

    Via un script VBA, j'arrive bien à créer mes colonnes, à les renseigner, faire les bordures, etc...

    Par contre je n'arrive pas à établir des règles sur une colonne en fonction de ce que l'on renseignera plus tard dans cette colonne.
    Suivant ce que l'utilisateur écrira sur cette colonne, je veux appliquer différentes couleurs.

    Voici mon code pour établir ces règles sur la colonne D:
    (J'appelle ce bout de code lorsque j'ai renseigné tout mon tableau, c'est la dernière action de mon code VBA)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        With XlSheet.Cells(1, 4).Range("D2" & ":D" & nRow)
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:="=""en cours"""
            .FormatConditions(1).Interior.ColorIndex = 23
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:="=""à faire"""
            .FormatConditions(2).Interior.ColorIndex = 3
            .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:="=""terminer"""
            .FormatConditions(3).Interior.ColorIndex = 4
        End With
    Lorsque j'arrive sur ce code, ça plante sur la 1ère ligne dans le With.
    Mon FormatConditions n'a pas l'air correct.

    Qqu'un peut-il m'aider svp ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut
    qd je dis ça plante, j'ai un message de ce style:

    "Erreur d'Exécution '1004': Erreur définie par l'application ou par l'objet"

  3. #3
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Je ne comprends pas ce que tu essayes de faire en mettant un Range comme objet d'un Cells ?

    A mon avis ton problème vient de là : je ne vois pas comment une plage pourrait être l'objet d'une cellule unique.

    Ca peut aussi venir de la nature ou du contenu de la variable XlSheet, la partie que tu montres n'indiquant rien à ce sujet.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut
    Set Xl = CreateObject("Excel.Sheet")
    Xl.Application.Visible = True

    Set XlBook = Xl.Application.Workbooks.Add
    With XlBook
    .SaveAs FileName:="c:\temp\toto.xls"
    End With

    Set XlSheet = XlBook.ActiveSheet
    Même en faisant ceci et en mettant mon range sur le XlSheet (sans un Cell spécifique), celà fait pareil:
    With XlSheet.Range("D2" & "" & nRow)
    .FormatConditions.Add Type:=1, Operator:=xlEqual, _
    Formula1:="en cours"
    .FormatConditions(1).Interior.ColorIndex = 23
    End With
    En gros ce que je veux faire c'est mettre des règles sur toute la colonne D.
    Si la cellule vaut "en cours" => affecter une couleur à cette cellule
    Si la cellule vaut "terminer" => affecter une autre couleur à cette cellule etc

  5. #5
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par steph_1 Voir le message
    En gros ce que je veux faire c'est mettre des règles sur toute la colonne D.
    Effectivement, le Cells était inutile.
    Qu'y a-t-il dans le nRow ? Essaye de l'enlever (ainsi que le & qui précède) et d'ajouter un 10 entre le D qui précède et le " ). Qu'est-ce que ça donne ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 139
    Points : 56
    Points
    56
    Par défaut
    Voici une solution qui marche:

    With XlSheet.Range("D2" & "" & nRow)
    .FormatConditions.Add Type:=9, _
    String:="en cours", _
    TextOperator:=0
    .FormatConditions(1).Interior.ColorIndex = 23

    .FormatConditions.Add Type:=9, _
    String:="à faire", _
    TextOperator:=0
    .FormatConditions(2).Interior.ColorIndex = 3

    .FormatConditions.Add Type:=9, _
    String:="terminer", _
    TextOperator:=0
    .FormatConditions(3).Interior.ColorIndex = 4
    End With
    Type := 9 => xlTextString
    TextOperator := 0 => xlContains

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

Discussions similaires

  1. Mise en forme conditionnelles sous Excel 2003
    Par AF001 dans le forum Excel
    Réponses: 4
    Dernier message: 27/12/2011, 12h10
  2. Mise en forme conditionnelle sous Access 2007
    Par dsolheid dans le forum IHM
    Réponses: 8
    Dernier message: 18/12/2007, 15h26
  3. Mise en forme conditionnelle sous 2003
    Par renkanaan dans le forum IHM
    Réponses: 0
    Dernier message: 18/09/2007, 17h34
  4. [VBA]Mise en forme conditionnelle variable
    Par emilie31 dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/04/2007, 13h44
  5. Mise en forme conditionnelle sous Excel
    Par crosse9 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 21/09/2006, 00h50

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