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 :

Décocher plusieurs Checkboxes avec une Checkbox


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Par défaut Décocher plusieurs Checkboxes avec une Checkbox
    Bonjour à tous,

    Je souhaite développer un petit programme Excel pour mon travail afin de faciliter la navigation sur le réseau informatique avec ses 170.000 dossiers (j'exagère à peine).
    J'en suis presque à la fin et là je suis surtout sur l'optimisation du code : j'ai pas mal de Checkboxes dans mon Userform1, et je souhaiterais que lorsque j'en coche une, toutes les autres soient décochées.

    Pour l'instant j'ai ça :
    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
    If CheckBox1.Value = True Then
    CheckBox2.Value = False
    CheckBox3.Value = False
    CheckBox4.Value = False
    CheckBox5.Value = False
    CheckBox6.Value = False
    CheckBox7.Value = False
    CheckBox8.Value = False
    CheckBox9.Value = False
    CheckBox10.Value = False
    CheckBox11.Value = False
    CheckBox12.Value = False
    CheckBox13.Value = False
    CheckBox14.Value = False
    CheckBox15.Value = False
    CheckBox16.Value = False
    End If
    Sauf que, si ce n'était que pour une seule case ça aurait été.. mais c'est chaque checkbox qui doit décocher toutes les autres : la ChckB1 doit décocher celles de 2 à 16, la ChckB2 doit décocher celles de 1 à 16 (sauf elle-même), la 3 doit décocher celles de 1 à 16 (sauf elle-même), et ainsi de suite jusqu'à 16..

    Auriez-vous une petite solution pour créer une boucle et éviter d'avoir autant de lignes ?
    Merki d'avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Bonjour,

    j'ai pas mal de Checkboxes dans mon Userform1, et je souhaiterais que lorsque j'en coche une, toutes les autres soient décochées.
    Dans ce cas il valait mieux utiliser des OptionButton qui ont de base cette propriété

    edit: pour la boucle, il y a pas mal d'exemple dans ce tuto: https://silkyroad.developpez.com/VBA...UserForm/#LI-B

    un autre exemple fait par moi, inspiré du tuto pour parcourir mes optionbutton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
    Dim Ctrl As Control
     
    For Each Ctrl In UserForm1.Controls
         If TypeOf Ctrl Is MSForms.OptionButton Then Ctrl.Object.Value = True
    Next Ctrl
    End Sub

  3. #3
    Candidat au Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Par défaut
    Bonjour,

    Merci pour la réponse, mais en fait j'avais déjà essayé avec des OptionButtons sauf que je n'avais pas réussi à faire ce que je souhaitais..

    En fait en cochant une de mes checkbox, j'ai une Combobox qui affiche directement la liste des fichiers qui se trouvent dans un dossier (que l'on choisit avec les checkboxes justement).

    Du coup le code donne
    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
    Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
    CheckBox2.Value = False
    CheckBox3.Value = False
    CheckBox4.Value = False
    CheckBox5.Value = False
    CheckBox6.Value = False
    CheckBox7.Value = False
    CheckBox8.Value = False
    CheckBox9.Value = False
    CheckBox10.Value = False
    CheckBox11.Value = False
    CheckBox12.Value = False
    CheckBox13.Value = False
    CheckBox14.Value = False
    CheckBox15.Value = False
    CheckBox16.Value = False
    End If
     
     
    Dim Chemin As String, Fichier As String
       Fichier = "14001453 AUTO\"
       Chemin = Dir(Sheets("Liens").Range("C6") & Fichier)
        Do While (Len(Chemin) > 0)
         Me.ComboBox2.AddItem Chemin
         Chemin = Dir()
        Loop
     
    If CheckBox1.Value = False Then ComboBox2.Clear
    End Sub
    Je ne sais pas pourquoi mais la fin de ce code ne fonctionnait pas avec des OptionButtons...

    EDIT: Ca ne fonctionnait pas car ça ne voulait pas clear la Combobox2, et derrière je n'arrivais pas à retrouver la valeur de l'OptionButton pour ouvrir le fichier sélectionné dans la ComboBox

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 680
    Par défaut
    Citation Envoyé par Arashian Voir le message
    je n'arrivais pas à retrouver la valeur de l'OptionButton pour ouvrir le fichier sélectionné dans la ComboBox
    La valeur d'un optionbutton c'est vrai/faux suivant qu'il soit coché ou non, si tu veux récupérer le texte affiché c'est caption qu'il faut utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox OptionButton1.Caption

  5. #5
    Candidat au Club
    Femme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2018
    Messages : 3
    Par défaut
    Parfait, j'ai réussi à trouver comment vider ma combobox au final, au début j'avais
    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 OptionButton1_Click()
     
    Dim Chemin As String, Fichier As String
       Fichier = "14001453 AUTO\"
       Chemin = Dir(Sheets("Liens").Range("C6") & Fichier)
        Do While (Len(Chemin) > 0)
         Me.ComboBox2.AddItem Chemin
         Chemin = Dir()
        Loop
     
    If OptionButton1.Value = False Then ComboBox2.Clear
     
    End Sub
    Sauf que ça ne fonctionnait pas, donc j'ai tenté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub OptionButton1_Click()
        ComboBox2.Clear
     
    Dim Chemin As String, Fichier As String
       Fichier = "14001453 AUTO\"
       Chemin = Dir(Sheets("Liens").Range("C6") & Fichier)
        Do While (Len(Chemin) > 0)
         Me.ComboBox2.AddItem Chemin
         Chemin = Dir()
        Loop
     
    End Sub
    Qui fonctionne, il fallait simplement passer le clear de la ComboBox au début et non à la fin

    Merci pour les réponses et bonne journée

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

Discussions similaires

  1. Mapper l'attribut name d'une checkbox avec une map
    Par FooFighters dans le forum Struts 2
    Réponses: 0
    Dernier message: 03/01/2015, 21h47
  2. Lier une checkbox avec une valeur de cellule d'un tableau
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/01/2013, 15h15
  3. bug avec une checkbox dans une datatable
    Par ekremyilmaz dans le forum JSF
    Réponses: 2
    Dernier message: 23/07/2010, 14h26
  4. Réponses: 10
    Dernier message: 06/05/2010, 20h51
  5. remplir plusieurs champs avec une checkbox Recherche :
    Par jules_diedhiou dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 31/01/2009, 12h58

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