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 :

Remplir une combobox en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut Remplir une combobox en VBA
    Bonjour forum,

    J'ai besoin d'aide pour mon code VBA:

    Dans mon formulaire j'ai une liste déroulante (Combo box) et mon soucis est que j'aimerais bien mettre une liste de choix justement dans cette Combo box. Comment dois-je m'y prendre et à quel endroit dans le code VBA?

    De même, est-il possible de trier dans mon formulaire? En sélectionnant un choix dans ma combobox 1, cela réduit les possibilités dans ma combobox 2...

    Enfin, dernière question, j'ai adressé l'ébauche de mon fichier à mon supérieur qui ne peut ouvrir la macro pour raison de sécurité. Les modifications à faire pour qu'il puisse l'ouvrir sont elles a effectuer sur mon fichier ou sur ses paramètres de sécurité à lui? Le problème est que plusieurs personnes utiliseront se fichier au futur donc si chacun doit modifier ses paramètres de sécurité pour pouvoir ouvrir mon fichier, je vais devoir faire une communication interne très intense...

    Merci de votre aide

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Par défaut
    je devrais pouvoir t'aider =)



    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 UserForm_Initialize()
    CB_cells.Clear 'vide la liste
    CB_cells.AddItem "N1" 'initialisation des elements de la liste
    CB_cells.AddItem "N2" 'voila comment on rempli une combo box
    CB_cells.AddItem "N3"
    CB_cells.AddItem "N4"
    CB_cells.AddItem "S1"
    CB_cells.AddItem "S2"
    CB_cells.AddItem "S3"
    CB_cells.AddItem "S4"
    CB_cells.AddItem "S5"
    CB_cells.AddItem "Choisissez votre cellule" ' cas 9 neutre, choix obligatoire
    CB_cells.BoundColumn = 0 'les valeurs deviennent des valeurs listindex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CB_cells_Change() 'action lors d'un changement
    Select Case CB_cells.ListIndex 'on fait un select case pour savoir dans quel dossier chercher selon le banc choisi
    case 0 ' on a choisi le premier element de la liste
    combobox.clear
    combobox.aditem' ... bref tes instructions =)
    case 1 
    case 2 
    '...
    case else 
    end select
    end sub
    normalement quand tu ouvre excel une notification de sécurité apparait, chaque poste definit sa propre securité il me semble, et la macro ne peut rien changer (sinon ce serait trop simple =)
    edit : je travaille dans une entreprise ou je ne peux meme pas autoriser toutes les macro, il faut les accepter au cas par cas, normal, car une macro peut faire tout et n'importe quoi avec ton ordinateur
    bye
    end sub

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut
    Après un peu d'acharnement, j'ai réussi à créer ma liste de choix.
    Sur Excel, dans mon formulaire, je sélectionne mon choix dans ma liste de choix et là:

    Erreur d'éxecution '91': Variable objet ou variable de bloc With non définie.
    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
        BOBOBOX.RowSource = "U5:U8"    
    End Sub
    (BOBOBOX étant mon nom de Combobox vous l'aurez compris)

    Qu'est ce qui se passe?

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Par défaut
    je crois que ce n'est pas vraiment comme ça qu'on ajoute un élément dans une liste

    tu as essayé mon code ?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    Bonjour

    tu devrais trouver ton bonheur dans ce tutoriel comboBox

    à +

  6. #6
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut
    J'avais pas vu ton message avant de publier mon second message mais là, j'ai essayé ton code ifset et je ne comprends pas pourquoi ça ne marche pas et il me met que le nom est ambigu... Je suis vraiment une brel ! Quelqu'un peut m'aider?

    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
    Private Sub UserForm_Activate()
    Me.BOBOBOX.SetFocus
    End Sub
     
    Private Sub UserForm_Initialize()
        BOBOBOX.AddItem "U5" 'initialisation des elements de la liste
        BOBOBOX.AddItem "U6"
        BOBOBOX.AddItem "U7"
        BOBOBOX.AddItem "Choisissez votre cellule" ' cas 9 neutre, choix obligatoire
        BOBOBOX.BoundColumn = 0 'les valeurs deviennent des valeurs listindex
    End Sub
     
    Private Sub BOBOBOX_Change() 'action lors d'un changement
    Select Case BOBOBOX.ListIndex 'on fait un select case pour savoir dans quel dossier chercher selon le banc choisi
    Case 0 ' on a choisi le premier element de la liste
    ComboBox.Clear
    ComboBox.aditem ' ... bref tes instructions =)
    Case 1
    Case 2
    '...
    Case Else
    End Select
    End Sub
    Merci à celui qui répondra

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    A un moment tu as écris

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BOBOBOX.RowSource = "U5:U8"
    question, c'est le texte "U5" ou le contenu de la cellule "U5" que tu veux voir dans la comboBox?

    car si c'est le contenu de la cellule il faudrai remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        BOBOBOX.AddItem "U5" 'initialisation des elements de la liste
        BOBOBOX.AddItem "U6"
        BOBOBOX.AddItem "U7"
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        BOBOBOX.AddItem Range("U5") 'initialisation des elements de la liste
        BOBOBOX.AddItem Range("U6")
        BOBOBOX.AddItem Range("U7")

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Par défaut
    tu as surement deux fonction comportant un nom identique

  9. #9
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut
    Alors, j'avance en faisant tout ce que je trouve mais ça ne marche toujours pas:

    Quand je mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
     
            BOBOBOX.AddItem "Ingrédients"
            BOBOBOX.AddItem "Emballages"
            BOBOBOX.AddItem "Techniques"
     
    End Sub
    J'ai ce code d'erreur: Erreur d'exécution '91' : Variable objet ou variable bloc WITH non- definie

    Alors j'essaye avec un with:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Initialize()
     
            BOBOBOX.AddItem "Ingrédients"
            BOBOBOX.AddItem "Emballages"
            BOBOBOX.AddItem "Techniques"
       With BOBOBOX
            BOBOBOX.AddItem "Ingrédients"
            BOBOBOX.AddItem "Emballages"
            BOBOBOX.AddItem "Techniques"  
    End With
    End Sub
    Si je fais ça j'obtiens le même message d'erreur. Alors déjà je ne vois pas à quoi il sert ce "with"...
    Et quand je mets que le with

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
     
       With BOBOBOX
            BOBOBOX.AddItem "Ingrédients"
            BOBOBOX.AddItem "Emballages"
            BOBOBOX.AddItem "Techniques"
    End With
    End Sub
    ...j'ai toujours le même message d'erreur!
    Ca m'enerve! Je n'arrive pas à comprendre ce langage! Suis-je perdu et voué à subir echec sur echec dans mes tentatives VBA?

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Par défaut
    est-ce que tu as crée ta bobobox avec l'editeur vba ?

    (mon code est correcte, copié collé de ma macro)

    avant de changer les nom, crée tes objets graphiquement avec l'editeur, puis change les noms une fois que cela fonctionne =)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
     
       With BOBOBOX
            .AddItem "Ingrédients"
            .AddItem "Emballages"
            .AddItem "Techniques"
    End With
    End Sub
    c'est comme ça qu'on utilise un with

  11. #11
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut
    Oui, j'ai tout créé via l'éditeur VBA. Voici mon code complet. La Bobobox est à la fin du code. Peux tu s'il te plait et si tu as un peu de temps, m'aider à trouver mon erreur?

    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
     
    Option Explicit
    Dim WS As Worksheet   'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de ce UserForm
    Dim Nom As String     'Variable poyr récupérer l'ancienne valeur pour le Bouton Modif
    Dim rgan As Range
    Const T As String = "Base Clients"
     
    Private Sub BOBOBOX_Change()
     
    End Sub
     
    Private Sub BoutQuitte_Click()
    Unload Me
    Feuil1.Activate
    End Sub
     
    Private Sub BOBOBOX_Click()
    If Me.BOBOBOX.ListIndex = -1 Then Exit Sub 'ON sort si pas de sélection
    Txt11 = WS.Range("B" & Me.BOBOBOX.ListIndex + 2) 'On alimente les données correspondant à la ligne
    Txt12 = WS.Range("C" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt1 = WS.Range("D" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt2 = WS.Range("E" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt3 = WS.Range("B" & Me.BOBOBOX.ListIndex + 2) 'On alimente les données correspondant à la ligne
    Txt4 = WS.Range("C" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt5 = WS.Range("D" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt6 = WS.Range("E" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt7 = WS.Range("B" & Me.BOBOBOX.ListIndex + 2) 'On alimente les données correspondant à la ligne
    Txt8 = WS.Range("C" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt9 = WS.Range("D" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt10 = WS.Range("E" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox6 = WS.Range("E" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox2 = WS.Range("E" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox7 = WS.Range("E" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox4 = WS.Range("E" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox5 = WS.Range("E" & Me.BOBOBOX.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
     
     
    'ici on initialise les Variable pour mémoriser le valeur précédente en cas de Modif
    With Me
    Nom = .BOBOBOX
    End With
    End Sub
     
    Private Sub CmdAjout_Click()
    Dim CTRL As Control 'Variable pour la collection des controls
    Dim L As Integer 'Variable pour connaitre le numéro de derniere ligne vide
    Dim X As Integer, i As Integer 'Variables pour faire la boucle de checking de Duplication
    Dim Response As Byte
    Dim Match As Byte
     
     
    L = WS.Range("A65536").End(xlUp).Row + 1 ' On identifie la dernière ligne vide en partant du bas
     
    'ici un Control de Duplication
    For X = 2 To L
    If BOBOBOX = WS.Range("A" & X) Then
    Match = Match + 1: i = X
    End If
    Next X
     
    'Si il y a Duplication on demande en montrant les détails de la Duplication
    If Match > 0 Then
        Response = MsgBox("Duplication trouvée dans la Database pour : " & BOBOBOX & vbCrLf & _
                      "Nom : " & vbTab & vbTab & WS.Cells(i, 1) & vbCrLf & _
                      "Voulez-Vous Intégrer cet enregistrement ?", vbQuestion + vbOKCancel, T)
     
                If Response = 1 Then
                GoTo Suite 'On suit le déroulement si réponse OK
                Else: GoTo Fin                  'Sinon On sort
                End If
    End If
     
    Suite:
    'ici avec la Feuille on va faire :
    With WS
        .Range("A" & L) = BOBOBOX            ' On écrit dans chaque colonne les valeurs des différents controls
        .Range("B" & L) = Txt11              ' Idem
        .Range("C" & L) = Txt12             ' Idem
        .Range("D" & L) = Txt1
        .Range("E" & L) = Txt2             ' Idem
        .Range("f" & L) = Txt3              ' Idem
        .Range("G" & L) = Txt4             ' Idem
        .Range("H" & L) = Txt5
        .Range("I" & L) = Txt6             ' Idem
        .Range("J" & L) = Txt7              ' Idem
        .Range("K" & L) = Txt8            ' Idem
        .Range("L" & L) = Txt9
        .Range("M" & L) = Txt10             ' Idem
        .Range("N" & L) = TextBox3
        .Range("O" & L) = TextBox6
        .Range("P" & L) = TextBox2
        .Range("Q" & L) = TextBox7
        .Range("R" & L) = TextBox4
        .Range("S" & L) = TextBox5
     
    End With
    Ini 'On lance la réinitialisation du UserForm (Macro en haut du Module)
     
    Fin:
     
    End Sub
     
    Private Sub CmdEdit_Click()
    Dim CTRL As Control 'Variable pour la collection des controls
    Dim i As Integer
    Dim Response As Byte
     
     
     
    'Si le User tente de change le nom de la ComboBox en Mode Modification
    If Me.BOBOBOX.ListIndex = -1 Then
    Exit Sub 'ON sort si pas de sélection
    End If
     
    'Ici un message demandant d'accepter les changement en les listant
    Response = MsgBox("Acceptez vous les changements ? ", vbQuestion + vbOKCancel, T & " Modification de : " & Nom)
    'Si Réponse OK on continue
    If Response = 1 Then
     
        'ici avec la Feuille on va faire :
    With WS
         .Range("A" & Me.BOBOBOX.ListIndex + 2) = BOBOBOX            ' On écrit dans chaque colonne les valeurs des différents controls
         .Range("B" & Me.BOBOBOX.ListIndex + 2) = Txt11              ' Idem
         .Range("C" & Me.BOBOBOX.ListIndex + 2) = Txt12             ' Idem
         .Range("D" & Me.BOBOBOX.ListIndex + 2) = Txt1
         .Range("E" & Me.BOBOBOX.ListIndex + 2) = Txt2             ' Idem
         .Range("F" & Me.BOBOBOX.ListIndex + 2) = Txt3              ' Idem
         .Range("G" & Me.BOBOBOX.ListIndex + 2) = Txt4             ' Idem
         .Range("H" & Me.BOBOBOX.ListIndex + 2) = Txt5
         .Range("I" & Me.BOBOBOX.ListIndex + 2) = Txt6             ' Idem
         .Range("J" & Me.BOBOBOX.ListIndex + 2) = Txt7              ' Idem
         .Range("K" & Me.BOBOBOX.ListIndex + 2) = Txt8             ' Idem
         .Range("L" & Me.BOBOBOX.ListIndex + 2) = Txt9
         .Range("M" & Me.BOBOBOX.ListIndex + 2) = TextBox3             ' Idem
         .Range("N" & Me.BOBOBOX.ListIndex + 2) = TextBox6
         .Range("O" & Me.BOBOBOX.ListIndex + 2) = TextBox2
         .Range("P" & Me.BOBOBOX.ListIndex + 2) = TextBox7
         .Range("Q" & Me.BOBOBOX.ListIndex + 2) = TextBox4
         .Range("R" & Me.BOBOBOX.ListIndex + 2) = TextBox5
     
    End With 'On evoie un message de confirmation
    MsgBox "Opération accomplie", vbInformation, T
     
    Ini 'On lance la réinitialisation du UserForm (Macro en haut du Module)
     
    'Si Réponse Annulation on envoie un message et on a rien fait
    Else: MsgBox "Opération annulée", vbInformation, T
    End If
     
    End Sub
     
    Private Sub CmdSup_Click()
    Dim CTRL As Control 'Variable pour la collection des controls
    Dim i As Integer
    Dim Response As Byte
    If Me.BOBOBOX.ListIndex = -1 Then Exit Sub
     
    'Ici un message demandant d'accepter la suppression en les listant
    Response = MsgBox("Les coordonnées de " & vbCrLf & vbCrLf & _
                       "Nom : " & vbTab & vbTab & BOBOBOX & vbCrLf & vbCrLf & _
                       "Vont être définitivement Supprimées ? ", vbCritical + vbOKCancel, T)
     
    'Si Réponse OK on continue
    If Response = 1 Then
     
        'ici avec la Feuille on va faire :
        With WS
         .Rows(Me.BOBOBOX.ListIndex + 2).EntireRow.Delete
        End With
    'On evoie un message de confirmation
    MsgBox "Opération accomplie", vbInformation, T
    Ini 'On lance la réinitialisation du UserForm (Macro en haut du Module)
     
    'Si Réponse Annulation on envoie un message et on a rien fait
    Else: MsgBox "Opération annulée", vbInformation, T
    End If
     
    End Sub
     
    Private Sub CommandButton1_Click()
    Ini
    End Sub
     
     
     
    Private Sub Label39_Click()
     
    End Sub
     
    Private Sub TextBox2_Change()
     
    End Sub
     
    Private Sub TextBox3_Change()
     
    End Sub
     
    Private Sub TextBox4_Change()
     
    End Sub
     
    Private Sub TextBox6_Change()
     
    End Sub
     
    Private Sub TextBox7_Change()
     
    End Sub
     
    Private Sub Txt1_Change()
     
    End Sub
     
    Private Sub Txt11_Change()
     
    End Sub
     
    Private Sub Txt3_Change()
     
    End Sub
     
    Private Sub Txt5_Change()
     
    End Sub
     
    Private Sub Txt7_Change()
     
    End Sub
     
    Private Sub Txt8_Change()
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
       With BOBOBOX
            BOBOBOX.AddItem "Ingrédients"
            BOBOBOX.AddItem "Emballages"
            BOBOBOX.AddItem "Techniques"
    End With
    End Sub
     
    Private Sub Ini()
    Dim CTRL As Control 'Variable pour la collection des controls
    Dim L As Integer    'Variable pour connaitre le numéro de derniere ligne
    Dim i As Integer    'Variable pour connaitre incrémenter les Data
    'On Vide tous les Controls
    For Each CTRL In Me.Controls
    If TypeOf CTRL Is MSForms.TextBox Or TypeOf CTRL Is MSForms.ComboBox Then
    CTRL = ""
    End If
    Next CTRL
    Me.BOBOBOX.Clear 'On vide les précédentes données
    Set WS = ThisWorkbook.Sheets("Base") 'On identifie l'objet pour la feuille de travail
    L = WS.Range("A65536").End(xlUp).Row    'On identifie la dernière ligne en partant du bas
     
    'Pour éviter les fash d'écran pour le select ci dessous
    Application.ScreenUpdating = False
        WS.Select 'On sélectionne la feuille sinon bug si elle ne l'est pas
        WS.Range("A6").Sort Key1:=Range("A6"), Order1:=xlAscending, Header:=xlGuess 'Le Sort
     
     
    For i = 2 To L             'Boucle départ 2 (Ligne 2 de la feuille, jusqu'à dernière
     
    Next i                     'Next pour poursuivre la boucle pour le i suivant
     
     
    Application.ScreenUpdating = True
    End Sub

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Par défaut
    je suis vraiment debutant en vba, si tu ne m'en dit pas plus je ne pourrais pas t'aider plus

  13. #13
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    J'ai ce code d'erreur: Erreur d'exécution '91' : Variable objet ou variable bloc WITH non- definie
    quand tu as eu ce message d'erreur tu est sur que ça venais précisément de cet endroit?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
     
       With BOBOBOX
            BOBOBOX.AddItem "Ingrédients"
            BOBOBOX.AddItem "Emballages"
            BOBOBOX.AddItem "Techniques"
    End With
    End Sub

  14. #14
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut
    Oui quasiment car c'est en changeant ça que j'ai eu cette erreur. Néanmoins, je n'ai jamais réussi à passer cette étape dans mon formulaire en simulation. Je selectionne mon choix dans ma première liste déroulante et j'ai à chaque fois un message d'erreur différent selon que je change des choses... Je dois avoir une_voire plusieurs_erreurs dans mon code. Moi je n'arrive plus. Je sais plus quoi faire. Je passe mes journées à lire des tuto et à chercher sur les forums et là je comprends plus. J'ai pas trouver un seul exemple concret qui marche.. Il faudrait qu'un petit génie du VBA regarde mon code. Il y verrait les erreurs de suite je pense mais moi je n'arrive plus à la cerner.

    Si tu t'y connais bien et que tu pouvais regarder, je t'en serai vraiment très reconnaissant.

    Ifset, j'aimerais bien te renseigner davantage mais comme je viens de le dire, je suis trop perdu maintenant. J'ai du accumuler plusieurs erreurs donc...

    Cordialement,

  15. #15
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 68
    Par défaut
    le mieux c'est de partir depuis le départ, le code que je t'ai donné fonctionne a coup sur, crée d'abord tes listes, regarde si elle fonctionnent, et ensuite rajoute du code, petit a petit

  16. #16
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Sans aller plus loin, juste en tenant compte de votre message initial, un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
    With Sheets("Feuil1")
    For i = 5 To 8
    BOBOBOX.AddItem .Range("U" & i)
    Next i
    End With
    End Sub

  17. #17
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut
    Là il me dit que l'erreur vient de cette partie là:

    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
     
    Private Sub CmbNom_Click()
    If Me.CmbNom.ListIndex = -1 Then Exit Sub 'ON sort si pas de sélection
     
    Txt11 = WS.Range("B" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
    Txt12 = WS.Range("C" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt1 = WS.Range("D" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt2 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt3 = WS.Range("F" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
    Txt4 = WS.Range("G" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt5 = WS.Range("H" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt6 = WS.Range("I" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt7 = WS.Range("J" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
    Txt8 = WS.Range("K" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt9 = WS.Range("L" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt10 = WS.Range("M" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox6 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox2 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox7 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox4 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox5 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
     
    .Range("A" & L) = CmbNom            ' On écrit dans chaque colonne les valeurs des différents controls
     
    'ici on initialise les Variable pour mémoriser le valeur précédente en cas de Modif
    With Me
    Nom = .CmbNom
    End With
    End Sub
    Vous voyez une erreur là dedans?

  18. #18
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    633
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 633
    Par défaut
    je pense que tu as un problème avec ta variable WS ecrite dans ini() que tu n'appel que par des bouton

    essaye de déplacer cette ligne qui ce trouve dans Sub ini()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set WS = ThisWorkbook.Sheets("Base") 'On identifie l'objet pour la feuille de travail
    dans Private Sub UserForm_Initialize()

  19. #19
    Invité
    Invité(e)
    Par défaut
    Cette déclaration de variable se trouve sur votre Userform ou dans un module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Option Explicit
    Dim WS As Worksheet   'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de ce UserForm
    Si vous la mettez dans un module, en indiquant "Public" et non "Dim".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     Option Explicit
     Public WS As Worksheet

  20. #20
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 29
    Par défaut
    Non. Là depuis un moment il ne déscotche plus de ce petit 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Private Sub CmbNom_Click()
    If Me.CmbNom.ListIndex = -1 Then Exit Sub 'ON sort si pas de sélection
     
    Txt11 = WS.Range("B" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
    Txt12 = WS.Range("C" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt1 = WS.Range("D" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt2 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt3 = WS.Range("F" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
    Txt4 = WS.Range("G" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt5 = WS.Range("H" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt6 = WS.Range("I" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt7 = WS.Range("J" & Me.CmbNom.ListIndex + 2) 'On alimente les données correspondant à la ligne
    Txt8 = WS.Range("K" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt9 = WS.Range("L" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    Txt10 = WS.Range("M" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox6 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox2 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox7 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox4 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
    TextBox5 = WS.Range("E" & Me.CmbNom.ListIndex + 2) 'de l'index de la Combobox + 2 pour la ligne de Feuille
     
    .Range("A" & L) = CmbNom            ' On écrit dans chaque colonne les valeurs des différents controls
     
    'ici on initialise les Variable pour mémoriser le valeur précédente en cas de Modif
    With Me
    Nom = .CmbNom
    End With
    End Sub
    J'aurais apparemment une variable non définie...

Discussions similaires

  1. [VBA-E] Comment remplir une comboBox avec une macro
    Par Tchupacabra dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/04/2007, 11h16
  2. [VBA-E] Comment remplir une ComboBox ?
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2006, 09h03
  3. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 15h31
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  5. Réponses: 2
    Dernier message: 26/07/2004, 13h34

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