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 :

creation de checkbox dynamiquement en fonction d'une liste de produit


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Par défaut creation de checkbox dynamiquement en fonction d'une liste de produit
    bonjour,

    je souhaiterai qu'une macro puisse créer autant de checkbox (en verticale) qu'il y aurait de "produits" définis dans une feuille excel.
    Dans le fichier excel attaché, la macro devrait créer 5 Checkbox car les produits vont de A à F avec les noms associés...

    Si quelqu'un a une idée je suis preneur.

    Merci,

    Chrystobale
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour chrystobale le forum..une macro a adapter

    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
    Option Explicit
     Sub es()
    Dim Obj As OLEObject, V As New Collection, c As Range
    Dim Level As Integer, i As Integer, j As Integer, z As Integer
    Dim L As Single, T As Single, W As Single, H As Single
    On Error Resume Next
    Application.ScreenUpdating = False
    For Each c In Range("d7", [d65000].End(xlUp))
    If c <> "" Then V.Add c.Value, CStr([c])
    Next c
    i = 7
    For Level = V.Count To 1 Step -1
        j = i + 4
        Cells(i, 2) = Level
        L = Cells(i, 5).Left
        T = Cells(i, 5).Top
        W = Cells(i, 5).Width
        H = Cells(i, 5).Height
           Set Obj = Sheets(1).OLEObjects.Add("Forms.Checkbox.1", _
        Left:=L, Top:=T, Height:=H + 5, Width:=W + 5)
        Obj.Name = "Level" & i
        i = i + 1
    Next Level
    Application.ScreenUpdating = True
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Par défaut
    bonjour Leatitia,

    Merci pour le code, j'en suis encore 'scotché" !
    Par contre comme puis je le mettre dans un userform1 par exemple ?

    Mais merci tout de même ==> 100% efficace !

    Chris

  4. #4
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re un exemple de silky road
    tu cree un module de classe
    code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    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
    dans un module standard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    Public Collect As Collection
    code userform tu mets un bouton

    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
    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
    oubli pas de rajouter ta condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    On Error Resume Next
    Application.ScreenUpdating = False
    For Each c In Range("d7", [d65000].End(xlUp))
    If c <> "" Then V.Add c.Value, CStr([c])
    Next c
    a adapter

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Par défaut
    LEatitia,

    Merci pour les info , en appliquant betement ce que tu m'a envoyé j'ai bien 3 checkbox qui apparaissent en appuyant sur le bouton.
    je tente maintenant d'adapter le code selon tes précedentes infos mais lorsque je lance le code - rien ne se passe :-)
    voici la partie du code avec modif.

    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
    Private Sub CommandButton1_Click()
    Dim Obj As Control
    Dim Cl As Classe1
    Dim i As Integer
    Dim V As New Collection           'added
    Dim Level As Integer              'added
    Set Collect = New Collection
    ' -------------------------------
    On Error Resume Next
    Application.ScreenUpdating = False
    For Each c In Range("d7", [d65000].End(xlUp))
    If c <> "" Then V.Add c.Value, CStr([c])
    Next c
    i = 7
    ' -------------------------------
    'For i = 1 To 3 'boucle pour la création des CheckBox
    For Level = V.Count To 1 Step -1 '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
        i = i + 1   'added
    'Next i
    Next Level      'added
    Application.ScreenUpdating = True
    End Sub
    Merci beaucoup pour ton aide !

    chris

  6. #6
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re,rajoute la variable v & c

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CommandButton1_Click()
    Dim Obj As Control, c As Range, V As New Collection, Cl As Classe1, i As Integer
    Set Collect = New Collection
    On Error Resume Next
    Application.ScreenUpdating = False
    For Each c In Range("d7", [d65000].End(xlUp))
    If c <> "" Then V.Add c.Value, CStr([c])
    Next c
    For i = 1 To V.Count' ici la variable v
        Set Obj = Me.Controls.Add("forms.Checkbox.1")
        With Obj
    'ect...le reste du code

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/12/2009, 17h12
  2. Creation de clips dynamiques et fonctions
    Par Kaimann dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 20/09/2007, 08h51
  3. Modifier une image dynamiquement en fonction d'une liste
    Par metatron dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/11/2006, 17h33
  4. [Conception] creation de fiche dynamique a partir d'une base de données
    Par badnane2 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/06/2006, 16h50
  5. Réponses: 10
    Dernier message: 25/11/2005, 17h12

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