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 conditinnelle avec VB


Sujet :

Macros et VBA Excel

  1. #21
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Oui c'est bien ça!

    Je veux colorer dans les colonnes C à F seulement si dans les cellules de C à F ne sont pas vide.

    Merci!

  2. #22
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    De cette façon alors :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Dim Cel As Range
     
        'si sélection de plus d'une cellule, fin !
        If Target.Count > 1 Then Exit Sub
     
        'si la modif est faite en colonne B...
        If Target.Column = 2 Then
     
            'les quatres colonne de droite (C, D, E et F)
            'vont prendre la couleur qui est fonction de la lettre entrée en cellule B
            With Target.Offset(0, 1).Resize(, 4)
     
                On Error Resume Next
                Set Cel = .SpecialCells(xlCellTypeBlanks)
     
                If Err.Number = 0 Then
     
                    .Interior.ColorIndex = xlNone 'rien
                    Exit Sub
     
                End If
     
                Select Case Target.Value 'UCase(Target.Value)<-- si on veut I et i concidéré comme identique
     
                    Case "I": .Interior.ColorIndex = 3 'Rouge
                    Case "P": .Interior.ColorIndex = 33 'Bleu
                    Case "E": .Interior.ColorIndex = 43 'Vert
                    Case "F": .Interior.ColorIndex = 44 'Orange
                    Case Else: .Interior.ColorIndex = xlNone 'rien
     
                End Select
     
            End With
     
        End If
     
    End Sub

  3. #23
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut RE
    SALUT THEZE
    ca ne serait pas plutôt après non?
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
        Dim Cel As Range
     
        'si sélection de plus d'une cellule, fin !
        If Target.Count > 1 Then Exit Sub
     
        'si la modif est faite en colonne B...
        If Target.Column = 2 Then
     
            'les quatres colonne de droite (C, D, E et F)
            'vont prendre la couleur qui est fonction de la lettre entrée en cellule B
            With Target.Offset(0, 1).Resize(, 4)
     
     
     
                Select Case Target.Value 'UCase(Target.Value)<-- si on veut I et i concidéré comme identique
     
                    Case "I": .Interior.ColorIndex = 3 'Rouge
                    Case "P": .Interior.ColorIndex = 33 'Bleu
                    Case "E": .Interior.ColorIndex = 43 'Vert
                    Case "F": .Interior.ColorIndex = 44 'Orange
                    Case Else: .Interior.ColorIndex = xlNone 'rien
     
                End Select
                On Error Resume Next
                Set Cel = .SpecialCells(xlCellTypeBlanks)
     
                If Err.Number = 0 Then
     
                    .Interior.ColorIndex = xlNone 'rien
                    Exit Sub
     
                End If
            End With
     
        End If
     
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #24
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Presque!
    Bonjour,

    Dans vos deux cas, ce que j'observe c'est que la ligne entière ne se colore pas.
    Ce que je cherche à faire c'est de colorer uniquement les cellules de la place C1 à F pour lesquelles il y a une valeur.
    Si la cellule est vide alors elle doit être blanche.

    Merci encore

  5. #25
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    autant pour moi
    j'ai copier betement le code de theze
    met cel devant .Interior.ColorIndex = xlNone 'rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cel.Interior.ColorIndex = xlNone 'rien
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #26
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Super, ça fonctionne...

    Et si je veux que la couleur s'applique également lors d'un changement dans une cellule C à F, est-ce que je peux ajouter une condition comme ce qui suit?
    Ça ne semble pas fonctionner...

    Actuel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'si la modif est faite en colonne B...
        If Target.Column = 2 Then
    Souhaité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        'si la modif est faite en colonne B... ou C ou D ou E ou F
        If Target.Column = 2 or Target.Column = 3 or Target.Column = 4.... Then
    Après ceci ce sera parfait!
    Merci

  7. #27
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonsoir

    oui tu peux exactement comme ca
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #28
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Rebonjour,

    J'ai fait les ajustements et mon code fonctionne à merveille! Un gros merci!
    Je me questionne sur la façon de pouvoir répéter mon code sur N cellule sans avoir a l'écrire pour toutes les colonnes.
    SVP voir mon commentaire dans le milieu du code... il doit y avoir une façon de répéter pour les colonnes.
    Le hic c'est que j'ai une section dans mes colonnes que je ne veux pas mettre de MFC.
    Mon vrai fichier de travail contient près de 150 colonnes.
    Encore merci!



    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
        Dim Cel As Range
     
        If Target.Count > 1 Then Exit Sub
        If Target.Column = 1 Then
     
            With Target.Offset(0, 0).Resize(, 6)
     
                Select Case Target.Value
     
                    Case "Vide": .Interior.ColorIndex = 44
                    Case Else: .Interior.ColorIndex = xlNone
     
                End Select
                On Error Resume Next
                Set Cel = .SpecialCells(xlCellTypeConstants, 23)
     
                If Err.Number = 0 Then
     
                    Cel.Interior.ColorIndex = xlNone
                    Exit Sub
     
                End If
            End With
     
        End If
     
     
     
        If Target.Count > 1 Then Exit Sub
     
        'Ici, je voudrais que ma condition s'applique sur les colonnes 2 à 4 et 12 à 15. Sans avoir à codifier pour toutes les colonnes une à la fois.
        'Est-ce possible d'intégrer une constante?
     
        If Target.Column = 2 Then
     
            With Target.Offset(0, 0).Resize(, 6)
     
                 Select Case Target.Offset(0, -1).Value
     
                    Case "Vide": .Interior.ColorIndex = 44
                    Case Else: .Interior.ColorIndex = xlNone
     
                End Select
                On Error Resume Next
                Set Cel = .SpecialCells(xlCellTypeConstants, 23)
     
                If Err.Number = 0 Then
     
                    Cel.Interior.ColorIndex = xlNone
                    Exit Sub
     
                End If
            End With
        End If
     
    End Sub

  9. #29
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour
    puré pose tes questions une bonne fois pour toutes entiererement sinon tu va jamais y arriver

    bon je récapitule

    MFC pour bcdef ca ok si colonne b contient "blablabla")

    pour la 12 a 15 cela doit etre declenché par quoi par la colonne b aussi ?????
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #30
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    OK je n'étais pas très clair...

    J'ai fait évoluer le code pour que si dans la colonne A la valeur est "vide" alors les cellules vides doivent être orange. Et lorsqu'elle n'est plus vide elle redevient blanche.
    Je veux que ceci soit applicable à toutes mes colonnes sauf pour les colonnes 7 à 11.

    Je ne veux pas avoir à coder pour mes 150 colonnes... et le nombre peut varier. Donc je me questionne à savoir si nous pouvons mettre une ligne de code pour l'appliquer à toutes.

    Merci

  11. #31
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Bon j'ai trouvé une solution avec For Next mais il me manque une info...

    Est-ce que l'on peut ajouter une formule dans un target.offset pour déterminer la colonne a utiliser... (activecell.column - 1 -i)???

    voir code ici..




    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    For i = 2 To 12
     
        If Target.Count > 1 Then Exit Sub
     
        If Target.Column = i Then
     
            With Target.Offset(0, 0)      '.Resize(, 0)
     
     
     'ici je dois mettre la colonne référence.
     'est-ce que l'on peut ajouter une formule dans un target.offset pour déterminer la colonne a utiliser... (activecell.column - 1 -i)???
     
                 Select Case Target.Offset(0, (ActiveCell.Column - 1 - i)).Value
     
     
                    Case "Vide": .Interior.ColorIndex = 44
                    Case Else: .Interior.ColorIndex = xlNone
     
                End Select
                On Error Resume Next
                Set Cel = .SpecialCells(xlCellTypeConstants, 23)
     
                If Err.Number = 0 Then
     
                    Cel.Interior.ColorIndex = xlNone
                    Exit Sub
     
                End If
            End With
        End If
     Next
    End Sub

  12. #32
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut r
    Bonjour
    c'est un peu cahotique comme code ca manque de precision

    donc si j'aibien compris maintenant on a plus plusieures couleur mais une seule et ca n'est plaus la colonne B mais A et la MFC doit se faire sur 150 colonnes avec des colonnes exceptées c'est bien ca
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #33
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Points : 8
    Points
    8
    Par défaut
    Oui c'est ça! Seulement si la valeur de la colonne 1 est "vide".
    Et lorsque je saisie une information dans une cellule alors celle-ci redevient blanche.

  14. #34
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bon la je crois que ca depasse toute absurdité je te comprends plus et je suis pas sur que tu comprenne toi meme

    tu me dis oui c'est ca !! et tu me dis quand je change une cellule celle ci doit redevenir blanche c'est completement incohérent
    alors
    fait une pose
    refléchi bien
    et dis nous une derniere fois ce que tu veux le plus clairement possible
    la en l'etat on aurait plus envie de passer le sujet

    on en est quand meme a 2 pages pour ce post et on sait toujours pas ce que tu veux !!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #35
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Septembre 2015
    Messages : 20
    Points : 8
    Points
    8
    Par défaut Euhhh
    M. Patrick, vous commencez à être insolent.

    C'était très clair dans mon post. Il faut les lire....

    Bon j'ai trouvé une solution avec For Next mais il me manque une info...
    Est-ce que l'on peut ajouter une formule dans un target.offset pour déterminer la colonne a utiliser... (activecell.column - 1 -i)???

    voir code ici..
    Une simple réponse par oui ou non aurait pu suffire!
    Peut-être me suggères-tu d'ouvrir un autre post pour cette question?

  16. #36
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut RE
    RE
    INSOLENT !!! ca c'est la meilleure je dois avoir au minimum 30 ans de plus que toi

    relis toi avant de valider ton message


    bon soit ...........
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. [E-03] : Mise en forme conditionnelle avec 5 choix
    Par basto dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2008, 12h40
  2. mise en forme conditionnelle avec date
    Par jeff192 dans le forum Excel
    Réponses: 1
    Dernier message: 20/03/2008, 16h08
  3. Mise en forme conditionnelle avec Access 97
    Par soso78 dans le forum IHM
    Réponses: 4
    Dernier message: 22/11/2007, 20h25
  4. Réponses: 4
    Dernier message: 29/03/2007, 09h10
  5. [Report 6i] Mise en forme champs avec du texte
    Par Invité dans le forum Reports
    Réponses: 5
    Dernier message: 13/10/2005, 15h00

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