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 :

UserForm+Checkbox+CaptionVariable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2012
    Messages : 27
    Par défaut UserForm+Checkbox+CaptionVariable
    Bonjour à tous,

    J'ai quelques notions de VBA (très empiriques) pour l'avoir utilisé plusieurs fois sur plusieurs projets, mais ce coup-ci je cale. J'aurais besoin d'aide pour:

    1) Utiliser un form (ou le créer via vba).
    2) Utiliser sur ce form des checkboxs (nombre de checkbox définit par avance:25) mais dont la 'caption' serait une variable (ex: checkbox1.caption=A1;checkbox1.caption=A2; etc), j'ai cru comprendre qu'il faut donc automatiquement créer ces checkboxs à chaque fois que l'on active le formulaire via vba, et jusque là ça peut aller (en fouillant j'ai trouvé des bouts de syntaxe ici et là).
    3) A chaque fois qu'une checkbox est cochée, elle renvoie dans une plage une certaine valeur (la même valeur que la caption de la checkbox).

    Mes problèmes sont que n'ayant jamais utilisé les forms ni checkbox auparavant (et encore moins via VBA), je ne comprends pas comment structurer une macro qui intéragisse à la fois avec le userform, ses controles, et avec les différentes feuilles du classeur.

    J'ai trouvé plusieurs styles de codes relativement explicites qui permettaient chacun, en l'adaptant, de faire une partie du travail.
    Mais dès que j'insère mes boucles avec variables dans le code et veux insérer les macros sur événements (quand on clique sur une checkbox plutôt qu'une autre), cela ne marche qu'à moitié ou se bloque, j'ai par exemple remarqué que je n'arrive pas à designer telle action sur TELLE checkbox plutôt qu'une autre, même avec le "Name" de la checkbox.
    Je suis tombé sur un code qui faisait appel à un module de classe (que j'ai donc créé) mais que je n'ai jamais réussi à adapter à mes besoins même si le code en lui même fonctionne parfaitement. En outre, il y a dans ce dernier code plusieurs lignes dont je ne comprends ni l'utilité, ni le fonctionnement, tout en sachant que si je les enlève plus rien ne fonctionne...

    En voici quelques exemples:

    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
     
    '--------------------------------------
    'Procédure de création des CheckBoxs à placer dans l'UserForm.
    'L'UserForm doit préalablement contenir un bouton nommé CommandButton1
     
    Option Explicit
     
    Private Sub CommandButton1_Click()
    Dim Obj As Control
    Dim Cl As Classe1
    Dim i As Integer
     
    Set Collect = New Collection
     
    For i = 1 To 3 'boucle pour la création des CheckBox
        Set Obj = Me.Controls.Add("forms.Checkbox.1")
        With Obj
            .Name = "moncheckbox" & i
            .Object.Caption = "le texte" & i
            .Left = 140
            .Top = 30 * i + 10
            .Width = 50
            .Height = 20
        End With
     
        'ajout de l'objet dans la classe
        Set Cl = New Classe1
        Set Cl.ChkBx = Obj
        Collect.Add Cl
    Next i
     
    End Sub
    '--------------------------------------
    A quoi sert cette ligne ?
    Set Collect = New Collection
    et celle là ?
    Set Cl = New Classe1
    Set Cl.ChkBx = Obj
    Collect.Add Cl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    '--------------------------------------
    'A placer dans un module standard
    Option Explicit
     
    Public Collect As Collection
    '--------------------------------------
    A quoi sert ce bout de code ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    '--------------------------------------
    'A placer dans un module de classe nommé "Classe1"
    '
    Option Explicit
     
    Public WithEvents ChkBx As MSForms.CheckBox
     
    'Exemple pour gérer l'évènement clic sur les objets type CheckBox
    Private Sub ChkBx_Click()
        'cet exemple affiche le nom et la valeur de l'objet cliqué
        MsgBox ChkBx.Name & ": " & ChkBx.Value
    End Sub
    '--------------------------------------
    Public WithEvents ChkBx As MSForms.CheckBox
    Que veut dire cette ligne ?


    J'ai créé le module de classe, mais je n'arrive pas à comprendre comment lui désigner d'autres checkbox auxquelles assigner des actions...
    Bref plus j'en lis, moi j'ai les idées claires :/


    J'ai beaucoup testé pour rien, et je n'ai pas trouvé (ou su cherché) de tutos qui me permetteraient de rendre un code fonctionnant et sans incohérence.
    Ca fait plusieurs jours que je cherche et que je teste mais rien n'avance donc je viens chercher de l'aide parmi les pros!

    J'espère avoir été aussi clair que possible,
    D'avance merci à ceux qui prendront la peine de me lire
    Max

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    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 : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avant de t'attaquer aux modules de classes et surtout si tu n'as jamais utilisé de formulaire , je te conseille de commencer pas effectuer des petits tests avec un formulaire et deux ou trois contrôles CheckBox afin de visualiser les résultats et mieux appréhender.
    A lire Utiliser les UserForm en VBA Excel et Utiliser les contrôles dans un UserForm, en VBA Excel.
    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

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2012
    Messages : 27
    Par défaut
    Pour info pour ceux que ça intéresserait, les tutos ont suffi à créer tout ce dont j'avais besoin dans l'énoncé, en partant de zéro ce coup-ci, ils sont très complets. Maintenant ça marche parfaitement.

    Merci encore Philippe pour ton aide
    Bonne journée

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

Discussions similaires

  1. Pb userform checkbox mot de passe
    Par jeremV dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/01/2014, 16h05
  2. [XL-2007] userform checkbox pour filtrer un TCD
    Par axou977 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/11/2013, 17h42
  3. Garder en mémoire des UserForm.CheckBox
    Par LimsWolf dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/07/2012, 15h02
  4. Réponses: 2
    Dernier message: 16/03/2007, 16h44
  5. [VBA Excel]. Pb de mise à jour de UserForm (checkBox)
    Par ExecelMans dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2006, 12h06

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