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 :

Pouvoir sélectionner toutes les CheckBox en un seul clic


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2012
    Messages : 22
    Points : 15
    Points
    15
    Par défaut Pouvoir sélectionner toutes les CheckBox en un seul clic
    Bonjour,

    Je me tourne vers vous car je souhaiterai perfectionner un petit outil que j'ai réalisé sur Excel, mais je n'ai aucune idée de la manière.

    J'ai conçu un questionnaire (132 questions) dont les réponses sont "Oui", "Non", "Sans Objet" sous forme d'"OptionButton" (par conséquent 3 par question donc 396 "OptionButton").

    En fonction de la réponse, deux "ComboBox" apparaissent avec un Contenu (une analyse et une préconisation donc 264 "ComboBox"au total) .

    A la suite de cela, j'ai inséré une "CheckBox", qui permet de transferer le contenu des "ComboBox" vers d'autres pages (que j'ai intitulé fiches de constats) il y à donc 132 "CheckBox".

    Je souhaiterai disposer d'un bouton (par exemple) qui me permettrai de selectionner ou déselectionner l'ensemble des CheckBox (pour éviter de cliquer 132 fois...)
    De plus je souhaiterai pouvoir faire la même chose avec les "OptionButton" correspondant à la reponse "Sans Objet".

    N'étant pas trés "BON" pour le langage VBA, j'ai rédiger le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Option Explicit
     
    Private Sub CheckBox1_Change()
     
    'Si la checkbox est cochée
    If CheckBox1.Value = True Then
        'Si le optionbutton3 est sélectionné
        If OptionButton3.Value = False Then
            Sheets("Fiche de constat 1").Range("E7") = ComboBox1.Value
            Sheets("Fiche de constat 1").Range("H7") = ComboBox2.Value
        Else
        'Si le optionbutton3 n'est pas sélectionné (donc un des 2 autres l'est)
            Sheets("Fiche de constat 1").Range("E7") = Sheets("Trame p1").Range("G3")
            Sheets("Fiche de constat 1").Range("H7") = Sheets("Trame p1").Range("H3")
        End If
    Else
    'Si la checkbox est décochée
        Sheets("Fiche de constat 1").Range("E7") = ""
        Sheets("Fiche de constat 1").Range("H7") = ""
     
    End If
        If CheckBox1.Value = True Then
            Sheets("Tableau récapitulatif NC").Range("A3") = Sheets("fiche de constat 1").Range("I8")
            Sheets("Tableau récapitulatif NC").Range("B3") = Sheets("fiche de constat 1").Range("F7")
            Sheets("Tableau récapitulatif NC").Range("C3") = Sheets("fiche de constat 1").Range("H7")
            Sheets("Tableau récapitulatif NC").Range("D3") = Sheets("fiche de constat 1").Range("E4")
            Sheets("Tableau récapitulatif NC").Range("E3") = Sheets("fiche de constat 1").Range("L7")
        Else
            Sheets("Tableau récapitulatif NC").Range("A3") = ""
            Sheets("Tableau récapitulatif NC").Range("B3") = ""
            Sheets("Tableau récapitulatif NC").Range("C3") = ""
            Sheets("Tableau récapitulatif NC").Range("D3") = ""
            Sheets("Tableau récapitulatif NC").Range("E3") = ""
        End If
     
    End Sub
     
     
     
    Private Sub OptionButton1_Click()
    'Suppression du contenu des Combobox
    ComboBox1.Value = ""
    ComboBox2.Value = ""
    Range("G3") = ""
    Range("H3") = ""
     
    'Définition des plages de données à afficher dans les combobox
    ComboBox1.ListFillRange = "SIPE5!B7:B40"
    ComboBox2.ListFillRange = "SIPE5!D7:D40"
     
    'affichage des combobox
    ComboBox1.Visible = True
    ComboBox2.Visible = True
     
    End Sub
     
    Private Sub OptionButton2_Click()
    'Suppression du contenu des Combobox et des cellules
    ComboBox1.Value = ""
    ComboBox2.Value = ""
    Range("G3") = ""
    Range("H3") = ""
     
    'Définition des plages de données à afficher dans les combobox
    ComboBox1.ListFillRange = ""
    ComboBox2.ListFillRange = ""
     
    'affichage des combobox
    ComboBox1.Visible = True
    ComboBox2.Visible = True
     
    End Sub
     
    Private Sub OptionButton3_Click()
    'Suppression du contenu des Combobox
    ComboBox1.Visible = False
    ComboBox2.Visible = False
     
    'On affiche un message dans la cellule G3
    Range("G3") = "Sans objet"
     
    'On affiche un message dans la cellule H3
    Range("H3") = "Sans objet"
     
    End Sub
    J'ai répété ce code 132 fois pour les 132 questions (ce fut un peu long et redondant)

    Pouvez vous m'aider

  2. #2
    Membre actif
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Points : 205
    Points
    205
    Par défaut
    Bonjour,

    Une solution pourrait être de faire une boucle ?
    Dans l'exemple si dessous je fais varier x et je modifie la valeur du control en l'appelant par Me.Controls("NomDuControl" & x)

    L'exemple suppose des OptionButton nommés OptionButton1, OptionButton2, ..., OptionButton6 placés par 3 dans des cadres d'un UserForm


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
     
    For x = 0 To 1
        Me.Controls("OptionButton" & x * 3 + 1).Value = True
    Next x
     
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2012
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Merci

    du coup cela implique d'écrire ce message pour chacune des questions?

    Serait il possible de créer un bouton qui aurait pour seul utilité que de cocher ou décocher l'ensemble des OptionButton. En sachant que je veux bien entrer manuellement le nom des OptionButton concernés.

    Et de même pour les CheckBox?

  4. #4
    Membre actif
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Points : 205
    Points
    205
    Par défaut
    Le code précédent n'était qu'un exemple pour montrer que justement on peut désigner un controle en jouant sur une variable ... et qu'il est possible donc de faire une boucle pour agir sur un ensemble de controles.

    En imaginant que ces OptionButton soient placés dans un UserForm et que les noms commencent par OptionButton : le code suivant va les decocher ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
     
    Dim Ctrl As Control
     
    For Each Ctrl In Me.Controls
        If Left(Ctrl.Name, 12) = "OptionButton" Then
            Ctrl.Value = False ' ou True
        End If
     
    Next Ctrl
     
    End Sub

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Août 2012
    Messages : 22
    Points : 15
    Points
    15
    Par défaut
    Je vois le principe,

    le seul soucis est pour creer le UserForm, mon questionnaire n'est pas prévu à cet effet

    Je le mets en pièce jointe sous le format jpeg car le fichier excel est trop gros
    Images attachées Images attachées  

  6. #6
    Membre actif
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Points : 205
    Points
    205
    Par défaut
    Voivi un ex de code qui permet de modifier les valeurs des OptionButton situés ds une feuille (Cas de controles ActiveX) :

    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 CommandButton1_Click()
     
     
    Dim Ctrl As OLEObject
     
    For Each Ctrl In Me.OLEObjects
        If Left(Ctrl.Name, 12) = "OptionButton" Then
            Ctrl.Object.Value = True ' ou False
        End If
     
    Next Ctrl
     
    End Sub

Discussions similaires

  1. [JSF]Cocher toutes les checkbox d'une colonne
    Par Shivan dans le forum JSF
    Réponses: 6
    Dernier message: 14/07/2009, 20h09
  2. DBGrid sélectionner toutes les rows ?
    Par Orthonic dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 12/05/2007, 20h26
  3. [VBA-E] Sélectionner toutes les dates correspondantes à un mois choisit
    Par c_ffiiffii dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 10/06/2006, 12h00
  4. [checkbox] Sélectionner tous les checkbox
    Par GLDavid dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/05/2006, 18h05
  5. [Formulaire][Javascript] Décocher toutes les checkbox
    Par Salam59 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/03/2006, 15h28

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