Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2012, 13h58   #1
Membre du Club
 
Inscription : novembre 2007
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 182
Points : 67
Points : 67
Par défaut utiliser les checkbox crées par macro

bonjour,

j' ai un pb assez difficile car je n'arrive pas à trouver de solutions dans les forums

je crée dans un userforms des checkbox de façon dynamique, qui dépendent de l'existence ou non de fichiers dans un répertoire.

l'utilisateur doit cocher les cases correspondantes pour lister les fichiers qu'il veut integrer.

comme j' ai créer les CB par vba, je n'arrive pas à les voir en temps d'objets dans le userform, donc je ne peux pas récupérer la liste des cases cochées.

ci joint le code pour créer mes CB

Code :
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
 
 
' construire le formulaire Cem
If Configuration.CheckBox_Cem = True Then
    CEM.Show 0
   max_ecarte = 100
  CEM.StartUpPosition = 3
  CEM.Left = 400
  CEM.Top = max_clim * 12 + 140
 
    max_CEM = UBound(list_cem)
    CEM.Height = max_CEM * 18 + 50
 
    For i = 1 To max_CEM
 
    Set NewCheckBox_CEM = CEM.Controls.Add("Forms.checkbox.1", list_cem(i), True)
    ecarte = Len(list_cem(i)) * 5
 
   If ecarte > max_ecarte Then max_ecarte = ecarte
   CEM.Width = max_ecarte + 10
 
     With NewCheckBox_CEM
            .Name = "CEM" & i
            .Caption = list_cem(i)
            .Top = 12 * i
            .Width = ecarte
            .Height = 12
            .Font.Size = 7
            .Font.Name = "Tahoma"
            '.BackColor = &HFF00&
            .Visible = True
        End With
 
    Next i
 
    ' bouton de validation
 
        With CEM.Valid_CEM
            .Top = max_CEM * 12 + 20
            .Left = 20
        End With
 
 
     ' bouton d'abandon
 
        With CEM.Abandon_CEM
            .Top = max_CEM * 12 + 20
            .Left = 120
        End With
 
End If
le formulaire CEM, avec les boutons validation et abandon a été créé "à la main", avec l'éditeur de userforms, donc ceux là je peux les gérer,

mais je ne vois pas les NewCheckBox_CEM

merci d'avance à qui peut m'aider.
Patnel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h27   #2
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 775
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 775
Points : 2 095
Points : 2 095
Bonjour,

Il te faut parcourir les contrôles à la recherche des CheckBox et savoir leur valeur :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Sub Cocher()
 
    Dim Ctrl As Object
 
    For Each Ctrl In Me.Controls
 
            'si c'est une case à cocher et qu'elle est true
            If TypeName(Ctrl) = "CheckBox" And Ctrl.Value = True Then
 
                MsgBox Ctrl.Name
 
            End If
 
    Next
 
End Sub
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h53   #3
Membre du Club
 
Inscription : novembre 2007
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 182
Points : 67
Points : 67
merci mais ça cole pas
j'ai essayé mais ça ne me renvoie que les controls créés à la main
car c'est bien ça le sens de ma question.

les controls créés par vba doivent avoir une propriété supplémentaire que je ne connais pas,
Patnel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 15h29   #4
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 775
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 775
Points : 2 095
Points : 2 095
Re,

Ce code doit te renvoyer les noms des CheckBox cocher qu'elles soient manuelles ou dynamiques. Fait un test en ajoutant une form sur laquelle tu pose un bouton de commande et ensuite, tu colle ce code dans le module de la form et tu teste :
Code :
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 UserForm_Initialize()
 
    Dim NewCheckBox_CEM As MSForms.CheckBox
    Dim I As Integer
 
    'crée 10 cases à cocher
    For I = 1 To 10
 
    Set NewCheckBox_CEM = Me.Controls.Add("Forms.checkbox.1", "Case" & I, True)
 
        With NewCheckBox_CEM
 
            .Name = "CEM" & I
            .Caption = .Name
            .Top = 20 * I
            .Width = 100
            .Height = 20
 
        End With
 
    Next I
 
End Sub
 
Private Sub CommandButton1_Click()
 
    Dim Ctrl As Object
 
    For Each Ctrl In Me.Controls
 
            'si c'est une case à cocher et qu'elle est true
            If TypeName(Ctrl) = "CheckBox" And Ctrl.Value = True Then
 
                MsgBox Ctrl.Name
 
            End If
 
    Next
 
End Sub
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 15h43   #5
Membre du Club
 
Inscription : novembre 2007
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 182
Points : 67
Points : 67
dommage

j'ai porté ton code dans un fichier neuf,
j'ai crée un userform

j' ai lancé ta macro

et je n'ai eu aucun résultat

je suis ( boulot oblige) encore en office 2000.

je crois vraiment qu'il ya qqch en plus à faire pour rendre actif les CB créés.
mais j'arrive pas à savoir ce que c'est.
Patnel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 16h00   #6
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 775
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 775
Points : 2 095
Points : 2 095
Re,

Avant de poster le code tu pense bien que je l'ai testé ! Je ne vois pas ce qui cloche, je suis au boulot sur Excel 2003 donc quasi identique à 2000.
As-tu coché au moins une des cases ?

Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 07h49   #7
Membre du Club
 
Inscription : novembre 2007
Messages : 182
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 182
Points : 67
Points : 67
ok merci ton code marche si on rajoute

Me.show 0 au début de ton prog appelé par le bouton.

je vais essayé de l'utiliser pour mon projet

merci encore Theze & à plus
Pat
Patnel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h26.


 
 
 
 
Partenaires

Hébergement Web