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 :

Problème Macro, checkbox


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Problème Macro, checkbox
    Bonjour,

    Je rencontre actuellement un problème sur l'élaboration d'un nouveau classeur comportant des macros.
    Je voudrais faire un système de check-box qui identifie une valeur de donnée dans la première colonne est qui après affiche ou non la valeur suivant que la case oui est coché ou la case non. J'ai codé de cette façon ci dessous, le problème est que les lignes du tableaux veulent parfois se cacher mais ne jamais s'afficher, je débute en VBA.

    Merci à tous d'avance pour vos conseils.

    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
    Private Sub CheckBox5_Click() 
    'CheckBox Oui Surmoulage
    'Label1 = Surmoulage
    Application.DisplayAlerts = False
    If CheckBox5.Value = True Then
    CheckBox6.Value = False
    End If
    'recherche et suppression de la ligne valeur ""
    i = 1
    While Sheets("Liste process Impactés").Cells(i, 1) = "Surmoulage"
                Sheets("Liste process Impactés").Rows(i & ":" & i).Hidden = False
            i = i + 1
     
     
    Wend
    End Sub
     
    Private Sub CheckBox6_Click()
    'non Surmoulage
    Application.DisplayAlerts = False
    If CheckBox6.Value = True Then
    CheckBox5.Value = False
     
    End If
    i = 1
    While Sheets("Liste process Impactés").Cells(i, 1) = "Surmoulage"
                Sheets("Liste process Impactés").Rows(i & ":" & i).Hidden = True
            i = i + 1
     
    Wend
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour

    Dans ces 2 macros, la boucle While s'arrête dès qu'il n'y a plus le mot "Surmoulage" dans une cellule de la colonne 1. Toutes le lignes ne sont donc pas analysées.

    Cordialement.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Que faut t'il donc faire pour que la fonction analyse l'onglet en entier même lorsque plusieurs cellules de la colonne comporte "Surmoulage" ?

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Je suppose que ce que vous voulez faire est de parcourir toute la colonne A jusqu'à tomber sur une cellule vide.
    Dans ce cas, c'est ceci qu'il faut faire:
    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
    Option Explicit
     
    Private Sub CheckBox5_Click()
        'CheckBox Oui Surmoulage
        'Label1 = Surmoulage
        Application.DisplayAlerts = False
        If CheckBox5.Value = True Then
            CheckBox6.Value = False
        End If
        'recherche et masque ligne marquée surmoulage
        i = 1
        With Sheets("Liste process Impactés")
            While .Cells(i, 1) <> ""  '--- tant que non vide
                If .Cells(i, 1) = "Surmoulage" Then
                    .Rows(i).Hidden = False
                End If
                i = i + 1
            Wend
        End With
    End Sub
     
    Private Sub CheckBox6_Click()
        'non Surmoulage
        Application.DisplayAlerts = False
        If CheckBox6.Value = True Then
            CheckBox5.Value = False
        End If
        'recherche et affiche ligne marquée surmoulage
        i = 1
        With Sheets("Liste process Impactés")
            While .Cells(i, 1) <> ""  '--- tant que non vide
                If .Cells(i, 1) = "Surmoulage" Then
                    .Rows(i).Hidden = True
                End If
                i = i + 1
            Wend
        End With
    End Sub
    Cordialement.

  5. #5
    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
    EricDgn bonsoir

    pour tes checkboxs tu n'a pas besoins de les modifier par vba il suffit de les grouper comme les optionbuttons
    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. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Je suppose que ce que vous voulez faire est de parcourir toute la colonne A jusqu'à tomber sur une cellule vide.
    Dans ce cas, c'est ceci qu'il faut faire:
    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
    Option Explicit
     
    Private Sub CheckBox5_Click()
        'CheckBox Oui Surmoulage
        'Label1 = Surmoulage
        Application.DisplayAlerts = False
        If CheckBox5.Value = True Then
            CheckBox6.Value = False
        End If
        'recherche et masque ligne marquée surmoulage
        i = 1
        With Sheets("Liste process Impactés")
            While .Cells(i, 1) <> ""  '--- tant que non vide
                If .Cells(i, 1) = "Surmoulage" Then
                    .Rows(i).Hidden = False
                End If
                i = i + 1
            Wend
        End With
    End Sub
     
    Private Sub CheckBox6_Click()
        'non Surmoulage
        Application.DisplayAlerts = False
        If CheckBox6.Value = True Then
            CheckBox5.Value = False
        End If
        'recherche et affiche ligne marquée surmoulage
        i = 1
        With Sheets("Liste process Impactés")
            While .Cells(i, 1) <> ""  '--- tant que non vide
                If .Cells(i, 1) = "Surmoulage" Then
                    .Rows(i).Hidden = True
                End If
                i = i + 1
            Wend
        End With
    End Sub
    Cordialement.
    Bonsoir, j'ai remplacé votre code dans le miens et lorsque j'active une des deux checkbox la oui ou la non alors rien ne passe.

  7. #7
    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

    déjà il faut savoir que quand tu change la valeur d'un checkbox par vba tu déclenche son évènement

    j'ai pris pour habitude (TOUJOURS) de mettre le code de l'evenement du checkbox dans une condition if activecontrol.name=ton checkbox then ...

    comme ca il n'y a pas d'ambiguïté

    parti de la !!!
    comme tu change la valeur de l'un par le click de l'autre et vise et versa
    comme le visible doit etre egal au checkbox5.value
    je te propose ceci

    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
    Private Sub CheckBox5_Click()
       MsgBox ActiveControl.Name
        mescheckboxs_Click CheckBox5
    End Sub
    '
    '
    Private Sub CheckBox6_Click()
       MsgBox ActiveControl.Name
       mescheckboxs_Click CheckBox6
    End Sub
    '
    '
    Private Sub mescheckboxs_Click(check)
        If check.Name = "CheckBox5" Then x = 5: CheckBox6.Value = Not CheckBox5.Value Else CheckBox5 = Not CheckBox6.Value: x = 6
        With Sheets("Liste process Impactés")
        .Cells.EntireRow.Hidden = False
          With Sheets("Liste process Impactés").Range("A1", Cells(Rows.Count, "A").End(xlUp))
             For Each cel In .Cells
                If ActiveControl.Name = check.Name Then 'tres important ca !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    If cel.Value = "Surmoulage" Then cel.EntireRow.Hidden = Not CheckBox5.Value
                End If
            Next
        End With
    End With
    End Sub
    j'ai mis des msgbox dans les deux évènements que tu pourra supprimer
    c'est juste pour te montrer que quand tu clique sur l'un tu clique sur l'autre tout de suite après
    voila la raison pour la quelle ca ne fonctionnait pas

    j'avais un doute aussi avec ton xldown j'ai utilisé xlup pour déterminer la plage utilisé
    démonstration
    Nom : demo2.gif
Affichages : 744
Taille : 191,7 Ko

    quand tu fait une bascule avec deux controls identiques(checkbox,optionbutton) n'oublie jamais la condition sur activecontrol
    sinon bien évidement tu fait et redéfait aussi tôt


    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. #8
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 181
    Points : 377
    Points
    377
    Par défaut
    Bonjour à tous,

    Est-ce obligation d'utiliser des controls CheckBox ? Car, à mon sens, il serait plus judicieux d'utiliser des controls OptionButton.

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    J'ai essayé d'instaurer les modifications pour mettre le code de l'évènement du checkbox dans une condition if activecontrol.name=ton checkbox then ... Mais la macro ne fonctionne pas je crois que je m'emmêle les pinceaux de plus en plus. Est il possible que ce code ne soit pas applicable à mon document ?
    Je propose de le joindre pour plus de compréhension de mon problème.

    La seule exigence est qu'il ne doit pas avoir d'userform. Toutes les checkbox doivent être accessible sur l'onglet directement. Il faut que toutes les cases commencent.

    Excusez-moi de mon ignorance, mais je travaille avec VBA que depuis peu et celui-ci m’intéresse beaucoup.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bonsoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
                If ActiveControl.Name = check.Name Then 'tres important ca !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    If cel.Value = "Surmoulage" Then cel.EntireRow.Hidden = Not CheckBox5.Value
                End If

    quand tu fait une bascule avec deux controls identiques(checkbox,optionbutton) n'oublie jamais la condition sur activecontrol
    sinon bien évidement tu fait et redéfait aussi tôt


    Je ne comprend pas bien comment utiliser la fonction ActiveControl.Name=check.Name.
    Il faut que pour chaque checkbox je duplique la macro ? Quand je lance la ligne de code Excel me dit que je n'ai pas d'objet attitré avec la ligne If ActiveControl.Name = check.Name Then surlignée.

    Je ne sais pas quoi faire cordialement.

  11. #11
    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
    bonjour
    il m'est difficile de faire plus simple que le modèle que je t'ai donné

    si tu en comprends pas le fonctionnement peut être devrais tu commencer par plus facile

    le principe est on ne peut plus simple
    tu a 2 checkboxs
    1. checkbox1
    2. checkbox2


    tu veux que le checkbox1 fasse quelque chose et le checkbox2 remette tout a l'inittial

    donc on va faire une sub globale

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    sub mescheckbox_click(check as msform.checkbox)
    if activecontrol.name=checkbox1 then 
    'blablabla
    'blablabla
    checkbox2.value=not checkbox1.value'le checkbox2prends la valeur contraire a celle du checkbox1
    else
    'blablabla
    'blablabla
     
    checkbox1.value=not checkbox2.value'le checkbox1prends la valeur contraire a celle du checkbox2
     
    end if 
     
    end sub
    et dans chaque click des checkbox1 et 2 tu code mescheckbox_click
    bref tu a un exemple plus haut
    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

  12. #12
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Avec Excel 2010, je n'ai pas réussi à obtenir ActiveControl.Name sur un contrôle ActiveX inséré dans une feuille.
    Cependant en partant du principe présenté par Patrick, il est possible de faire ainsi pour ce qui concerne les checkboxes SalleBlancheOui et SalleBlancheNon:
    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
    Private Sub SalleBlancheOui_Click()
        Salle_Blanche True
    End Sub
     
    Private Sub SalleBlancheNon_Click()
        Salle_Blanche False
    End Sub
     
    Private Sub Salle_Blanche(Oui As Boolean)
        If Oui Then
            Debug.Print "SalleBlancheOui_Click", "SalleBlancheOui = "; SalleBlancheOui.Value
            SalleBlancheNon.Value = Not SalleBlancheOui.Value
        Else
            Debug.Print "SalleBlancheNon_Click", "SalleBlancheNon = "; SalleBlancheNon.Value
            SalleBlancheOui.Value = Not SalleBlancheNon.Value
        End If
        SalleBlanche SalleBlancheOui.Value
    End Sub
     
    Private Sub SalleBlanche(Oui As Boolean)
        '--- Oui = True ou False suivant le cas !
        Debug.Print "SalleBlanche: ", Oui
        Drapage_ManNon.Visible = Oui
        Drapage_ManOui.Visible = Oui
        Drapage_Manuel.Visible = Oui
        CheckBox2.Visible = Oui
        CheckBox4.Visible = Oui
        Drapage_Auto.Visible = Oui
        CheckBox5.Visible = Oui
        CheckBox6.Visible = Oui
        Label1.Visible = Oui
        Label2.Visible = Oui
        CheckBox7.Visible = Oui
        CheckBox8.Visible = Oui
        CheckBox13.Visible = Oui
        CheckBox14.Visible = Oui
        Label5.Visible = Oui
        Label21.Visible = Oui
        CheckBox45.Visible = Oui
        CheckBox46.Visible = Oui
    End Sub
    Les Debug.Print permettent de voir que l'on passe 2 fois par la routine Salle_Blanche vu qu'il y a 2 checkboxes changées.

    Bonne continuation.

  13. #13
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    P.S. Il me semble qu'il y a un sac de noeuds au niveau des noms des contrôles.
    Ci-dessous, il est indiqué comme nom Label21 dans la zone de noms (en haut à gauche) mais quand on va sur propriétés c'est Label36. Il en est ainsi pour toute une série de labels (dans ma feuille en tous cas).

    Nom : Labels.png
Affichages : 687
Taille : 20,5 Ko

    Je ne sais pas d'où cela provient.
    Bonne continuation.

  14. #14
    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
    d'accords les checkbox sont dans une feuille et non dans un UserForm alors non activecontrol ne fonctionnera pas
    et ben on est mal
    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. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2019
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci de vos conseils, j'ai enfin fini de réaliser mon panel de checkbox

  16. #16
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Comme le dit Hop hop hop, il serait bien plus judicieux d'utiliser des optionbutton que de monter du code pour réaliser la même chose avec des checkbox qui "basculent" Sur un plan ergonomique, c'est un non-sens d'utiliser des checkbox en lieu et place d'optionbutton.


    Citation Envoyé par patricktoulon Voir le message
    EricDgn bonsoir

    pour tes checkboxs tu n'a pas besoins de les modifier par vba il suffit de les grouper comme les optionbuttons
    Sauf astuce que je ne connais pas, je ne vois pas en quoi grouper les chekbox les amène à se comporter comme des optionbutton groupés. La propriété Groupe est inopérante pour les checkbox. Les mettre dans un frame ne change rien à l'affaire. Que veux-tu dire par grouper? As-tu testé ce que tu proposes?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  17. #17
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    EricDgn bonsoir

    pour tes checkboxs tu n'a pas besoins de les modifier par vba il suffit de les grouper comme les optionbuttons
    Bonjour,

    tu pourrais être plus explicite, car il me semble que tu dis n'importe quoi, comment peux-tu 'les grouper comme les optionbuttons' ?


    Le regroupement ne fonctionne que pour les options buttons.
    https://docs.microsoft.com/fr-fr/off...pname-property

    A trop vouloir en faire, on fait mal...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  18. #18
    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
    tu met tes checkbox(le nombre et le nom que tu veux )

    tu fait tes groupes en metant un nom(que tu veux dans la propriété "GroupName" dans vbe

    tu peux faire autant de groupe que tu veux par 2,3 10 20,100

    exemple
    ici j'ai 5 checkbox (1,2,3,4,5) les 4 premiers onT un groupe nommé "toto" le 5eme n'en fait pas partie OK


    le tout dans le module de la feuille

    évènement click

    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
    Private Sub CheckBox1_Click()
        mescheck_click CheckBox1
    End Sub
    Private Sub CheckBox2_Click()
        mescheck_click CheckBox2
    End Sub
    Private Sub CheckBox3_Click()
        mescheck_click CheckBox3
    End Sub
    Private Sub CheckBox4_Click()
        mescheck_click CheckBox4
    End Sub
    Private Sub CheckBox5_Click()
        mescheck_click CheckBox5
    End Sub

    LA MEME SUB POUR TOUS LES CHECKBOXS DE TOUS LES GROUPES


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub mescheck_click(check)
        If check.Value = True Then
            g = check.GroupName
            For Each ctrl In Me.OLEObjects
                If TypeName(ctrl.Object) = "CheckBox" Then
                    If ctrl.Object.GroupName = g And ctrl.Object.Value = True Then ctrl.Object.Value = False
                End If
            Next
            check.Value = True
        End If
    End Sub
    tu n'a ni besoins de connaitre leur nom ou même leur état et même pas le nombre de checkbox dans le groupe

    tu peux ajouter /supprimer un/des checkbox dans n'importe quel groupe tu change pas d'un yotat le code

    démonstration
    Nom : demo2.gif
Affichages : 693
Taille : 188,8 Ko
    voila
    et c'est encore plus facile dans un UserForm en gérant par le test "if activecontrol.name=check.name"
    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

  19. #19
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Et dire que cela se réalise nativement en utilisant les bons contrôles sans aucune ligne de code, à savoir des Optionbutton groupés

    Dans l'exemple ci-dessous, les Options de la première colonne sont dans le groupe G1, ceux de la seconde colonne dans le groupe G2. Dès lors, ceux du G1 s'excluent mutuellement, ceux du G2 également. On ajoute aussi autant de groupes qu'on veut, et on a pondu 0 lignes de codes pour une ergonomie attendue par l'utilisateur, à savoir des checkbox qui peuvent être remplis sans s'exclure (ce n'est pas leur fonctionnalité), et des optionbutton qui s'excluent (c'est leur fonctionnalité).

    Nom : 2019-07-10_065716.png
Affichages : 635
Taille : 23,7 Ko

    Je ne comprendrai jamais pourquoi des gens perdent du temps à réinventer (souvent en plus mal et en plus lourd) des trucs qui existent nativement
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    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 pierre
    il est certain que les optionbuttons fonctionne déjà comme cela
    c'était juste pour répondre a jean Philippe André
    comment peux-tu 'les grouper comme les optionbuttons' ?
    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

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VBA-E] Problème macro excel
    Par pontus21 dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 19/05/2006, 18h38
  2. problème contrôle checkbox cliqué ou non
    Par mussara dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/04/2006, 16h16
  3. [ASP3] Problème de checkbox
    Par beegees dans le forum ASP
    Réponses: 2
    Dernier message: 23/03/2006, 16h42
  4. [xsl] Probléme De checkbox
    Par dimkha dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/01/2006, 12h09
  5. Problème sur CHECKBOX
    Par dede92 dans le forum Windows
    Réponses: 6
    Dernier message: 22/02/2005, 10h48

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