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 :

Togglebutton colore les sélections


Sujet :

Macros et VBA Excel

  1. #1
    En attente de confirmation mail
    Femme Profil pro
    Magasinnière
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Magasinnière
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Togglebutton colore les sélections
    Bonjour,

    Je cherche à créer un planning pour mon service. Il calcule les rotations de chaque agent du service pour chaque mois selon les sélections mise dans le userform de saisie. Jusque là je m'en sortait ^^,
    Mais je bute sur une commande probablement très bête avec des ToggleButton. Mon but est que lorsque l'utilisateur clique sur un ToggleButton dans le userform "Saisie exceptions et congés", le pinceau (ou souris) applique une certaine mise en forme sur une sélection d'une ou plusieurs cellules sur la feuille excel.

    Par exemple :
    l'utilisateur clique sur le toggleButton"matin 1ère semaine" dans le userform1.
    Le fond des cellules qu'il sélectionne ensuite sur la feuille excel devraient se colorer en vert.
    Nom : feuille excel.png
Affichages : 1768
Taille : 314,3 Ko

    J'ai essayé avec ceci, mais rien ne se passe :
    (Les togglebutton sont déclarer en temps que "Boolean" en "Public" du début de macro)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public MATButton1 As Boolean, MATButton2 As Boolean, AMButton1 As Boolean, AMButton2 As Boolean, NUButton As Boolean, WEButton As Boolean, JOButton As Boolean, PRButton As Boolean, CPButton As Boolean, RTTButton As Boolean
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub clic_togglebutton()
     
    With MATButton1 'matin 1
        If .Value = True Then 'action quand bouton activé
            While MATButton1 = True
                Selection.Interior.ColorIndex = 43 'colore l'interieur des cases sélectionnées en vert
            Wend
        ElseIf .Value = False Then 'action quand bouton désactivé
            'rien
        End If
    End With
     
    End Sub

  2. #2
    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
    Il y a tellement de trucs anormaux dans ton code que je ne sais pas par où commencer.
    On va donc le faire chronologiquement :

    Pourquoi se compliquer à faire un With alors que tu n'utilises cette variable que deux fois (en fait, tu n'en as besoin que d'une fois, voir la suite).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If .Value = True Then 'action quand bouton activé
    Il ne sert à rien de mettre = True puisque en fait le If test si la condition est True.
    C'est un peu comme demander la couleur du cheval blanc d'Henry IV.
    Il suffit d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            While MATButton1 = True
                Selection.Interior.ColorIndex = 43 'colore l'interieur des cases sélectionnées en vert
            Wend
    Un bis pour le = True (idem que pour le If).

    Déjà, je ne comprends pas pourquoi tu veux faire une boucle.

    Tu fais une boucle avec un condition sur une variable qui n'est pas modifiée dans la boucle.
    Donc, soit l'exécution ne rentrera jamais dans la boucle, soit, si elle rentre, elle tournera à l'infini (puisque le contenu ne change pas la condition).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ElseIf .Value = False Then 'action quand bouton désactivé
            'rien
    On en remet un coup sur le = False qui n'est pas utile. Là, il suffit de mettre un Not devant la valeur booléenne.

    Le Else n'est pas utile puisque tu ne fait "rien" si la condition désignée dans le If n'est pas remplie.

    A Forciori, un ElseIf est encore moins utile.

    Et en plus, c'est un ElseIf pour la condition contraire du If, ce qui correspond à un simple Else.

    Je n'ai pas tout compris sur ta méthode utilisée pour obtenir ce que tu souhaites (en particulier la façon de renseigner MATButton1), mais ce code pourrait se résumer à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub clic_togglebutton()
       If MATButton1.Value Then Selection.Interior.ColorIndex = 43
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    En attente de confirmation mail
    Femme Profil pro
    Magasinnière
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Magasinnière
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse Menhir.

    C'est la première fois que j'utilise un toggleButton donc j'avoue avoir tourné le truc un peu trop dans tous les sens (ce qui donne un résultat effrayant :o)
    Je comprends tes explications et j'avais démarré sur un système similaire mais les cellules que je sélectionne sur la feuilles excel ne changent pas de couleur quand mon bouton est actif. (J'avais mis un système de boucle car j'avais eu espoir que l'action du togglebutton ne se faisait qu'au moment où l'utilisateur cliquait sur le bouton, mais ça n'a rien donné n'ont plus.)

    En résumé, même une action simple comme...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MATButton1.Value Then Selection.Interior.ColorIndex = 43
    ...ou encore...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MATButton1.Value Then Cells(1, 1).Select
    ...ne veut pas fonctionner. Je clique sur le toggleButton mais rien ne se passe.

    Le fait que mon togglebutton soit dans un userform_non_modal et non sur la feuille excel peut-il rendre la macro inefficace ?

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    C'est la première fois que j'utilise un toggleButton donc j'avoue avoir tourné le truc un peu trop dans tous les sens
    Et c'est également lka première fois que tu insères puis utilises un contrôle sur un userform, peut-être ?

    On n'invente pas les procédures évènementielles (qui se déclenchent lors d'évènements subis par un contrôle). La déclaration de ces procédures est prédéfinie (ainsi que le sont ses paramètres éventuels)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub clic_togglebutton()
    n'est pas une procédure évènementielle d'un contrôle togglebutton !
    Là, vraiment ....
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    En attente de confirmation mail
    Femme Profil pro
    Magasinnière
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Magasinnière
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par unparia Voir le message
    Et c'est également lka première fois que tu insères puis utilises un contrôle sur un userform, peut-être ?
    Oui. Je ne suis pas du tout issu du milieu informatique et ce projet est mon premier avec des userform. Grace au net, j'ai pu comprendre comment en créer et utiliser des ComBox dedans. Comme je disais jusque là je m'en sortais à tâtons mais concernant le togglebutton je ne saisis pas la subtilité et malgré plusieurs essais je n'arrive vraiment à rien quand j'active et désactive ce togglebutton. Désolé si mes questions vous frustre

    Citation Envoyé par unparia Voir le message
    n'est pas une procédure évènementielle d'un contrôle togglebutton !
    Là, vraiment ....
    Puisque que mon idée de départ semble complètement fausse, comment dois-je m'y prendre pour qu'une fois le togglebutton actif, les sélections sur la feuille excel se colorent ?
    J'ai joins mon fichier si cela peut rendre mon problème plus clair.
    Fichiers attachés Fichiers attachés

  6. #6
    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 Vélina Voir le message
    En résumé, même une action simple ne veut pas fonctionner. Je clique sur le toggleButton mais rien ne se passe.
    Il faut faire un travail de débugage rigoureux pour localiser le problème.

    Avec ce code, tu pourras déjà vérifier si le problème vient du déclenchement de la macro ou du test qu'elle contient.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub clic_togglebutton()
       Debug.Print "Déclenchement Ok ";Now()
       If MATButton1.Value Then Debug.Print "Test Ok ";Now()
    End Sub
    N'oublie pas d'ouvrir ta fenêtre d'exécution pour avoir les résultats des Debug.Print.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    En attente de confirmation mail
    Femme Profil pro
    Magasinnière
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Magasinnière
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Il faut faire un travail de débugage rigoureux pour localiser le problème.
    Merci de votre réponse

    J'ai tester avec votre macro et il semblerait que se soit le déclenchement de la macro qui pose problème. J'ai l'erreur "Qualificateur incorrect" qui me surligne le nom de mon togglebutton "MATButton1".
    Nom : togglebutton.jpg
Affichages : 1269
Taille : 75,7 Ko

    J'ai vérifié de ne pas avoir fait d'erreur de saisie en copiant le nom du bouton dans le userform, puis en le collant dans la macro mais cela n'a rien changé.
    J'ai ensuite essayé de cacher la déclaration de variable...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     'Public MATButton1 As Boolean, MATButton2 As Boolean, AMButton1 As Boolean, AMButton2 As Boolean, NUButton As Boolean, WEButton As Boolean, JOButton As Boolean, PRButton As Boolean, CPButton As Boolean, RTTButton As Boolean, ATButton As Boolean
    ...mais là l'erreur à changer. J'ai eu alors l'erreur '424' objet requis.

  8. #8
    En attente de confirmation mail
    Femme Profil pro
    Magasinnière
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Magasinnière
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Menhir,

    avec vos explications j'ai réussis à faire fonctionner mon togglebutton. Je n'avais pas saisis tout simplement que le code du togglebutton devait aller dans le code du userform et non dans un module, et que je ne pouvais faire une macro d'ensemble dans ce userform pour tous les togglebutton. Chacun doivent avoir leur propre macro dans le userform.

    Mon problème porte finalement sur le but premier de mon togglebutton. Avec le code ci-dessous inscrit dans le code du userform, je n'arrive qu'à colorer les cellules présélectionnées quand j'active le bouton et non toutes les cellules que je sélectionne après avoir activé le bouton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub MATButton1_Click()
     
    If MATButton1.Value = True Then
        MATButton1.BackColor = &HFF00& 'Vert
        Selection.Interior.ColorIndex = 43
        Else
        MATButton1.BackColor = &HE0E0E0 'gris
    End If
     
    End Sub

  9. #9
    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 Vélina Voir le message
    J'ai tester avec votre macro et il semblerait que se soit le déclenchement de la macro qui pose problème. J'ai l'erreur "Qualificateur incorrect" qui me surligne le nom de mon togglebutton "MATButton1".
    Euh... visiblement, c'est le contraire : ta macro se déclenche bien mais c'est le test qui pose problème (d'après ce que tu montres).

    J'ai vérifié de ne pas avoir fait d'erreur de saisie en copiant le nom du bouton dans le userform, puis en le collant dans la macro mais cela n'a rien changé.
    ...mais là l'erreur à changer. J'ai eu alors l'erreur '424' objet requis.
    Je ne comprends pas ton système.
    MATButton1 c'est quoi ? Ta déclaration Public semble laisser penser que c'est une variable booléenne mais l'usage que tu en fais dans le If ressemble à une variable objet dans laquelle tu aurais mis la référence du bouton et j'ai en plus l'impression d'après ton dernier message que c'est aussi le nom du bouton lui-même.
    Tu ne serais pas en train de tout mélanger ?...

    Citation Envoyé par Vélina Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MATButton1.Value = True Then
    Surtout ne perdons pas les mauvaises habitudes...

    je n'arrive qu'à colorer les cellules présélectionnées quand j'active le bouton et non toutes les cellules que je sélectionne après avoir activé le bouton.
    Ta macro n'est pas activée, elle est déclenchée.
    C'est-à-dire qu'au moment où tu appuies sur le bouton, elle réalise les actions de son code, avec les données dont elle dispose à cet instant (cellules sélectionnées) puis elle s'arrête.
    Elle ne reste pas active en boucle à attendre d'autres sélections.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    M'enfinj et sacré nom d'une pipe de chez pipe :
    La procédure évènementielle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub clic_togglebutton()
    n'existe tout simplement pas
    Tu la remplacerais par n'importe quelle procédure non évènementielle et donc jamais appelée, --->> le résultat serait toujours le même (sans aucun effet, puisque non appelée) ...
    Et ceci est vrai, qu'il s'agisse d'un contrôle togglebouton ou de n'importe quel autre contrôle !
    Il est très clair que ton mode de fonctionnement, limité à du copier/coller, consiste à mettre la charrue avant les boeufs et que tu n'es même pas au niveau du début de chez début de l'utilisation de ton interface de développement.
    Et tu veux quoi ? que l'on t'aide à continuer ainsi ? --->> ce ne sera pas moi, c'est certain.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  11. #11
    En attente de confirmation mail
    Femme Profil pro
    Magasinnière
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Magasinnière
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par unparia Voir le message
    M'enfinj et sacré nom d'une pipe de chez pipe :
    Il est très clair que ton mode de fonctionnement, limité à du copier/coller, consiste à mettre la charrue avant les boeufs et que tu n'es même pas au niveau du début de chez début de l'utilisation de ton interface de développement.
    Et tu veux quoi ? que l'on t'aide à continuer ainsi ? --->> ce ne sera pas moi, c'est certain.
    Alors arrêtez de vous énerver contre moi tout en restant bloqué sur mon premier post dont j'ai corrigé la macro. D'autant plus que je ne fais pas de copier/coller... Enfin bref.

    Comme je disais plus haut, grâce aux conseils de Menhir mon toggle bouton est fonctionnel mais ne colorent que les cellules présélectionnées. Existe-t-il une commande vba qui rend l'action d'un toggle button permanente tant qu'il est actif ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub MATButton1_Click()
     
    If MATButton1.Value Then
        MATButton1.BackColor = &HFF00& 'devient Vert quand actionné
        Selection.Interior.ColorIndex = 43 'colore les cellules sélectionnées
        Else
        MATButton1.BackColor = &HE0E0E0 'reprend sa couleur d'origine en gris
    End If
     
    End Sub
    Merci.

  12. #12
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Existe-t-il une commande vba qui rend l'action d'un toggle button permanente tant qu'il est actif
    Aucune "commande" (ah ! la terminologie et ce que sa mauvaise utilisation révèle ...).
    Ne pas confondre "commande" et "stratégie/mécanisme à mettre en oeuvre")

    Mais :
    - 1) lors de quel évènement ?
    - 2) si lors de l'évènement Worksheet_change ou d'un évènement de cellules : donner à chaque cellule sélectionnée la couleur de ton toggllebutton ?

    Et si la finalité est finalement réduite à cela, on peut légitimement s'interroger sur la nécessite d'encombrer/alourdir avec un Togglebutton, alors qu'une simple variable booléenne suffirait !
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  13. #13
    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 Vélina Voir le message
    Comme je disais plus haut, grâce aux conseils de Menhir mon toggle bouton est fonctionnel mais ne colorent que les cellules présélectionnées. Existe-t-il une commande vba qui rend l'action d'un toggle button permanente tant qu'il est actif ?
    J'ai un peu l'impression d'avoir perdu mon temps en te donnant une explication détaillée répondant à cette question.

    Lorsqu'elle est déclenchée, une macro exécute ce qu'on lui a demandé de faire dans le code puis s'arrête.
    Dans ton code, tu as demandé que lorsqu'on presse sur le bouton, les cellules sélectionnées changent de couleur. C'est ce qu'elle fait.

    Aucune macro (à ma connaissance) ne reste active pendant tout en laissant Excel disponible.

    Par contre, il existe des macros qui sont déclenchées par des évènements, comme par exemple le changement de sélection de cellule.
    Ca pourrait résoudre ton besoin mais ça va considérablement alourdir l'utilisation d'Excel.
    https://msdn.microsoft.com/fr-fr/lib.../ff194470.aspx
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  14. #14
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 435
    Points
    1 435
    Par défaut Pas de Togglebutton simplement des buttons qui pourraient être des label
    bonjour,
    dans un module : déclaration des variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        Public CouleurRGB As Long 'la couleur utilisée
        Public CouleurACTIVE As Boolean ' si on utilise ou pas la couleur
        Public CouleurANNULE As Boolean ' si on enleve la couleur
        Public USF_ACTIF As Boolean 'si on utilise le form
    dans le code du form : sélection de la couleur et action sur les cellules
    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
     
    Private Sub UserForm_Initialize()
        USF_ACTIF = True
    End Sub
    Private Sub UserForm_Terminate()
        USF_ACTIF = False
    End Sub
    Private Sub CmdRouge_Click()
        If Me.CmdRouge.BackColor = RGB(255, 0, 0) Then
            'ferme
            Call CouleurOFF
            Me.CmdRouge.BackColor = &H8000000F      'normal
        Else
            'ouvre
            Call CouleurOFF
            Me.CmdRouge.BackColor = RGB(255, 0, 0)  'actif
            CouleurRGB = Me.CmdRouge.BackColor
        End If
    End Sub
    Private Sub CmdVert_Click()
        If Me.CmdVert.BackColor = RGB(50, 131, 44) Then
            'ferme
            Call CouleurOFF
            Me.CmdVert.BackColor = &H8000000F       'normal
        Else
            'ouvre
            Call CouleurOFF
            Me.CmdVert.BackColor = RGB(50, 131, 44) 'actif
            CouleurRGB = Me.CmdVert.BackColor
        End If
    End Sub
    Private Sub CouleurOFF()
        'couleur blanc
        CouleurRGB = -1
        'couleur systeme "sommet du bouton"
        Me.CmdRouge.BackColor = &H8000000F
        Me.CmdVert.BackColor = &H8000000F
    End Sub
    Private Sub ChkCouleurANNULE_Click()
        CouleurANNULE = ChkCouleurANNULE.Value
    End Sub
    Private Sub CmdOnOff_Click()
        If Me.CmdOnOff.Caption = "ON" Then
            'ferme
            CouleurACTIVE = False
            Me.CmdOnOff.Caption = "OFF" 'normal
        Else
            'ouvre
            CouleurACTIVE = True
            Me.CmdOnOff.Caption = "ON"  'actif
        End If
    End Sub
    dans le code de l'onglet / la feuille : on sélectionne la cellule , on ne fait rien OU on met OU on enlève la couleur
    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
     
    Private Sub Worksheet_Activate()
        CouleurACTIVE = False
        CouleurANNULE = False
        CouleurRGB = -1
        USF.Show
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If USF_ACTIF Then
            If CouleurACTIVE And CouleurRGB > -1 Then
                Target.Interior.Color = CouleurRGB
            ElseIf CouleurANNULE Then
                With Target.Interior
                    .Pattern = xlNone
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End If
        End If
    End Sub
    Nom : Animation.gif
Affichages : 1192
Taille : 365,7 Ko


    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  15. #15
    En attente de confirmation mail
    Femme Profil pro
    Magasinnière
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Magasinnière
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse MJ,

    Dans votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If USF_ACTIF Then
            If CouleurACTIVE And CouleurRGB > -1 Then
                Target.Interior.Color = CouleurRGB
            ElseIf CouleurANNULE Then
                With Target.Interior
                    .Pattern = xlNone
                    .TintAndShade = 0
                    .PatternTintAndShade = 0
                End With
            End If
        End If
    End Sub
    Si je comprend bien, la partie : And CouleurRGB > -1 ; vérifie que la cellule n'est pas colorée ?
    Donc cela empêche de colorer une cellule si celle-ci l'est déjà ? En retirant cette partie cela me permettrait-il de colorer une cellule déjà colorisée sans être obligé de cocher la case ANNULER ?

  16. #16
    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 Vélina Voir le message
    En retirant cette partie cela me permettrait-il de colorer une cellule déjà colorisée sans être obligé de cocher la case ANNULER ?
    Je pense que faire le test par toi-même t'aurais pris moins de temps que d'écrire ce message.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  17. #17
    En attente de confirmation mail
    Femme Profil pro
    Magasinnière
    Inscrit en
    Novembre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Magasinnière
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Novembre 2017
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Je pense que faire le test par toi-même t'aurais pris moins de temps que d'écrire ce message.
    Il est possible de consulter des forums et en étudier les réponses sans avoir accès à un ordinateur pendant des heures...

  18. #18
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Il est possible de consulter des forums et en étudier les réponses sans avoir accès à un ordinateur pendant des heures..
    Il est également possible de passer son temps à autre chose que d' "aider" en répondant à des questions diverses et variées qui :
    - pourraient ainsi aller à l'infini
    - relèveraient plus de la discussion de salon que de toute autre chose

    Une proposition de solution t'a été faite ? --->> Merci de bien vouloir attendre de pouvoir la tester. Viens ensuite dire si elle te convient ou non.

    Tu es ici sur un forum technique.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  19. #19
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 435
    Points
    1 435
    Par défaut
    bonjour,
    If CouleurACTIVE And CouleurRGB > -1 Then
    CouleurACTIVE = true ...................c'est le pinceau que tu as dans la main
    CouleurRGB > -1 .......... à partir de 0 (qui est couleur noir) et donc >-1 tu as de la peinture sur ton pinceau

    si tu as le pinceau dans la main (CouleurACTIVE = true) et que tu as de la peinture sur ton pinceau (CouleurRGB > -1) alors...
    tu peu peindre l' intérieur de ta cellule (Target)
    ou alors si tu n'as pas tout çà, si tu as la gomme (CouleurANNULE = true ) dans la main et donc pas le pinceau (CouleurACTIVE = false) alors...
    tu peu gommer l' intérieur de ta cellule (Target)

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  20. #20
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 435
    Points
    1 435
    Par défaut
    re,
    ce qui est le plus important, ce n'est pas le code que j'ai écrit, unparia pourrait l'améliorer facilement...
    ce qui est important c'est le concept , la stratégie ,...

    rappelle toi ,
    dans le code du form : sélection de la couleur et action sur les cellules
    ICI , on ne parle pas de cellule à peindre....
    ICI , on parle de couleur...
    ICI , on parle de si on se sert ou pas de cette couleur...
    ICI , on parle de si on annule la couleur (qui à déjà été utilisée)

    rappelle toi ,
    dans le code de l'onglet / la feuille : on sélectionne la cellule , on ne fait rien OU on met OU on enlève la couleur
    ICI , on est sur le chantier , avec la couleur ou le diluant pour annuler la couleur , et les ordres du chef qui indiquent si on doit mettre ou enlever la couleur
    ICI , on à la cellule sur laquelle on doit travailler

    alors au boulot ....

    en résumé ,
    le form sert à indiquer la couleur , si on veut annuler la couleur et si on utilise ou pas cet outil
    la feuille indique la cellule sélectionnée et teste si on peu ou pas utiliser le nouvel outil

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

Discussions similaires

  1. Colorer les Scrollbars
    Par 306vh dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 21/03/2007, 11h24
  2. Réponses: 1
    Dernier message: 12/07/2006, 10h51
  3. [VBA-E] Colorer les lignes sous-total
    Par steps5ive dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/07/2006, 19h47
  4. Réponses: 29
    Dernier message: 03/11/2005, 11h37
  5. colorer les scrollbars
    Par reg11 dans le forum Composants VCL
    Réponses: 19
    Dernier message: 06/06/2005, 21h42

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