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 :

modification de la couleur d'une cellule selon une check box


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    comptable
    Inscrit en
    Janvier 2024
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Janvier 2024
    Messages : 6
    Points : 7
    Points
    7
    Par défaut modification de la couleur d'une cellule selon une check box
    Slt tous le monde !

    Je préviens je suis une bille en codage VBA mais on s'accroche

    Dans mon nouveau projet d'automatisation excel je me retrouve bloqué...

    Contexte :

    En comptabilité je dois faire des vérifications de valeur entre mon logiciel et un tableau de bord excel
    J'ai une feuille qui me récapitule les valeurs qui m'interresse
    à côté de ses valeurs, j'ai un bouton qui me permet de remettre à zéro un compteur journalier pour avoir un suivi de quand a été faite le dernier contrôle des valeurs
    Au vu du grand nombre de valeurs à contrôler et du nombre possible de fausse corélation entre la velur logiciel et celle sur excel je souhaite mettre un nouvel outil en place...

    L'objectif :

    Je veux mettre une check box où quand je la valide une, une cellule défini à l'avance chance de couleur. Et quand je la décoche, elle redevient sans remplissage.

    Problème :

    j'arrive à faire en sorte que ma cellule voulu se colore mais cela dépend pas du fait que la check box soit coché ou non. Si je la décoche, elle reste coloré au lieu de redevenir sans remplissage...

    Voici monde actuel:

    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
     
     
    Sub TEST82()
    '
    ' TEST82 Macro
    '
        Range("C11").Select
        With Selection.Interior
        If .Pattern = xlSolid Then
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = -0.249977111117893
            .PatternTintAndShade = 0
        Else
            Selection.Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End If
        End With
        Range("H11").Select
    End Sub
    Merci à vous

  2. #2
    Membre expérimenté
    Inscrit en
    Décembre 2002
    Messages
    836
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 836
    Points : 1 320
    Points
    1 320
    Par défaut
    Bonjour, affectez cette macro à la checkbox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub CheckBoxChange()
        Dim chkBox As CheckBox
        Set chkBox = ActiveSheet.CheckBoxes("CheckBox1") ' Remplacer "CheckBox1" par le nom réel de votre case à cocher
     
        If chkBox.Value = 1 Then
            ' Si la case à cocher est cochée
            Range("C11").Interior.Color = RGB(255, 255, 0) ' Changez la couleur selon vos besoins
        Else
            ' Si la case à cocher est décochée
            Range("C11").Interior.ColorIndex = xlNone
        End If
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    comptable
    Inscrit en
    Janvier 2024
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Janvier 2024
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Nickel la code marche super mais trouver le nom de la check box fut vraiment difficile

    j'ai utilisé ce code pour dire d'y arriver si un jour quelqu'un à ce problème:

    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
     
    Sub ListeNomsCheckBox()
        Dim chkBox As CheckBox
        Dim listeNoms As String
        Dim cellule As Range
     
        ' Effacer la cellule ou la plage où les noms seront affichés
        Set cellule = ActiveSheet.Range("A1") ' Changez "A1" à la cellule souhaitée
        cellule.Clear
     
        ' Boucle à travers toutes les cases à cocher de la feuille active
        For Each chkBox In ActiveSheet.CheckBoxes
            ' Ajoute le nom de chaque case à cocher à la liste
            listeNoms = listeNoms & chkBox.Name & vbCrLf
        Next chkBox
     
        ' Affiche la liste des noms dans la cellule spécifiée
        cellule.Value = listeNoms
    End Sub
    Maintenant mon but est de réussir à la renommé pour dire d'avoir les check box numéroté à partir de 1...

    Merci de ton aide en tout cas

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 903
    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 : 12 903
    Points : 28 871
    Points
    28 871
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Un checkBox dans une feuille excel renvoie VRAI ou FAUX dans une cellule cible donc sans VBA, il suffit d'utiliser la mise en forme conditionnelle.

    Illustration


    Nom : 240620 dvp Contrôles formulaires.png
Affichages : 30
Taille : 44,4 Ko
    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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    comptable
    Inscrit en
    Janvier 2024
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : comptable

    Informations forums :
    Inscription : Janvier 2024
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Slt, j'avoue que j'ai pas tout compris à ta démonstration mais c'est vrai qu'il ma parut bizarre de devoir forcement passer paru vba pour mon projet... Mais au moins j'ai bien poncé le sujet

    Sinon j'ai abandonné de réussir à changer le nom de check box.
    Vu que j'ai pas réussi à trouver comment récupérer le nom par les paramètres du logiciel, alors j'ai fait un programme qui retrouve le nom des checks box coché :

    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
     
    Sub NomsCasesCochees()
        Dim chkBox As CheckBox
        Dim cellule As Range
        Dim casesCochees As String
     
        ' Effacer la cellule ou la plage où les noms seront affichés
        Set cellule = ActiveSheet.Range("A1") ' Changez "A1" à la cellule souhaitée
        cellule.Clear
     
        ' Parcourir toutes les cases à cocher de la feuille active
        For Each chkBox In ActiveSheet.CheckBoxes
            ' Vérifier si la case à cocher est cochée
            If chkBox.Value = 1 Then
                ' Ajouter le nom de la case à cocher cochée à la liste
                casesCochees = casesCochees & chkBox.Name & vbCrLf
            End If
        Next chkBox
     
        ' Afficher la liste des noms des cases à cocher cochées dans la cellule spécifiée
        cellule.Value = casesCochees
     
        ' Message si aucune case à cocher n'est cochée
        If casesCochees = "" Then
            MsgBox "Aucune case à cocher n'est cochée sur cette feuille."
        End If
    End Sub
    de la j'ai cherché à mettre en lien une check box et une cellule... Mais avec une trentaine, il a fallut factoriser

    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
     
    Sub Ecart(ByVal checkBoxName As String, ByVal targetCellAddress As String)
        Dim chkBox As CheckBox
        Dim targetRange As Range
     
        ' Définit la case à cocher spécifiée
        Set chkBox = ActiveSheet.CheckBoxes(checkBoxName)
     
        ' Définit la plage cible spécifiée
        Set targetRange = Range(targetCellAddress)
     
        ' Vérifie l'état de la case à cocher
        If chkBox.Value = 1 Then
            ' Si la case à cocher est cochée, applique la couleur
            targetRange.Interior.Color = RGB(190, 190, 190) ' Changez la couleur selon vos besoins
        Else
            ' Si la case à cocher est décochée, supprime la couleur
            targetRange.Interior.ColorIndex = xlNone
        End If
    End Sub
    Sub CaseEcart()
        ' Appel de la procédure Ecart avec les configurations spécifiques
        Ecart "Check Box 50", "C4"
        Ecart "Check Box 95", "C5"
        Ecart "Check Box 97", "C6"
        Ecart "Check Box 98", "C7"
        Ecart "Check Box 100", "C8"
        Ecart "Check Box 101", "C11"
        Ecart "Check Box 102", "C12"
        Ecart "Check Box 103", "C13"
        Ecart "Check Box 104", "C14"
        Ecart "Check Box 105", "C15"
        Ecart "Check Box 106", "C18"
        Ecart "Check Box 107", "C19"
        Ecart "Check Box 108", "C20"
        Ecart "Check Box 109", "C21"
        Ecart "Check Box 110", "C22"
        Ecart "Check Box 111", "C25"
        Ecart "Check Box 112", "C26"
        Ecart "Check Box 113", "C27"
        Ecart "Check Box 114", "C28"
        Ecart "Check Box 115", "C29"
        Ecart "Check Box 116", "C32"
        Ecart "Check Box 117", "C33"
        Ecart "Check Box 118", "C34"
        Ecart "Check Box 119", "C35"
        Ecart "Check Box 120", "C36"
        Ecart "Check Box 121", "C39"
        Ecart "Check Box 122", "C40"
        Ecart "Check Box 123", "C41"
        Ecart "Check Box 124", "C42"
        Ecart "Check Box 125", "C43"
    End Sub
    Du coup si je comprends tout, la fonction CaseEcart sert en sorte de base de donnée pour permettre à la fonction Ecart d'être factorisé... Au lieu d'en avoir une trentaine...

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 903
    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 : 12 903
    Points : 28 871
    Points
    28 871
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A l'exception du CommandButton, tous les boutons formulaires ont une cellule cible. C'est également valable pour les ActiveX

    La cellule cible ne doit pas être obligatoirement être dans la même feuille que le bouton et peut être nommée à l'aide du gestionnaire des noms

    Nom : 240621 dvp Bouton Formulaire.png
Affichages : 13
Taille : 54,9 Ko
    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

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/07/2018, 18h35
  2. Changer la couleur d'une texte box en fonction du temps
    Par levasseur62 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 17/03/2013, 22h39
  3. Changer la couleur de texte d'une check box
    Par Julgood dans le forum MFC
    Réponses: 2
    Dernier message: 05/03/2010, 10h11
  4. Modification de la couleur d'une barre dans un graphique
    Par mat-tech dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/08/2008, 19h19
  5. Modif d'un ini dans une combo box
    Par Julien.alkaza dans le forum C++Builder
    Réponses: 5
    Dernier message: 03/04/2005, 23h39

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