Source d'une Listbox

Résolu
Bonjour,

Etant un débutant, je rencontre des problèmes de débutant...

Dans mon userform gestionstock,
Je souhaite incrémenter une listbox appelée "Plagemachine"
Mes données se trouvent dans l'onglet "Préventif", dans la colonne X

Private Sub gestionstock_Initialize()
'si la dernière ligne est supérieure à 256 déclarer i et x en Integer

Dim i As Byte, x As Byte
i = Sheets("Préventif").Range("x65536").End(xlUp).Row

For x = 1 To i
With Plagemachine
.AddItem Sheets("Préventif").Range("x" & x)
End With
Next x
End Sub

Rien n'apparait dans ma listbox...

Merci,

DGVDR

4 réponses

  1. De mon coté, ça ne fonctionne pas...

    Ci-dessous mon fichier.

    https://www.cjoint.com/c/CLloqTfRJdy

    Si vous voyez l'erreur.

    Mon code VBA est "unzo"

    Merci à vous deux,

    DGVDR
    1. Modérateur
      Ben oui.......
      N'utilise pas Private Sub gestionstock_initialise() mais :

      Private Sub UserForm_Initialize()
      'si la dernière ligne est supérieure à 256 déclarer i et x en Integer
      Dim i As Long, x As Long
      
      With Sheets("Préventif")
          i = .Range("X65536").End(xlUp).Row
          For x = 1 To i        
              Plagemachine.AddItem .Range("X" & x).Value
          Next x
      End With
      End Sub
    2. Entendu, merci.

      Cependant ici je ne définis "Plagemachine" à aucun moment ?

      DGVDR
    3. Modérateur
      Oula.... C'est quoi cette question?
      Tu veux dire quoi??? Tu entends quoi par "définir plagemachine"?
    4. C'est bon, ça fonctionne.

      J'avais zappé que "Plagemachine" était ma ListBox.

      Merci beaucoup.

      DGVDR
  2. Bonjour DGCDR, Bonjour Pijaku,

    Pourquoi déclarer i et x en byte alors que l'on a :
    i = .Range("x65536").End(xlUp).Row

    Autant déclarer i et x en Long.

    Le code de Pijaku fonctionne correctement.

    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
    Nicolas Boileau
    1. Bonjour pijaku,

      Pas mieux...

      Ca reste vierge...!
      1. Modérateur
        Essaie avec des MsgBox en "arrêt", comme ceci :

        Private Sub gestionstock_Initialize()
        'si la dernière ligne est supérieure à 256 déclarer i et x en Integer
        Dim i As Byte, x As Byte
        
        With Sheets("Préventif")
            i = .Range("x65536").End(xlUp).Row
            MsgBox i
            For x = 1 To i
                MsgBox .Range("X" & x).Value
                Plagemachine.AddItem .Range("X" & x).Value
            Next x
        End With
        End Sub


        Tu verras comme cela ce qui cloche...
    2. Modérateur
      Bonjour,

      Essayez peut être comme ceci :

      Private Sub gestionstock_Initialize()
      'si la dernière ligne est supérieure à 256 déclarer i et x en Integer
      Dim i As Byte, x As Byte
      
      With Sheets("Préventif")
          i = .Range("x65536").End(xlUp).Row
          For x = 1 To i
              Plagemachine.AddItem .Range("X" & x)
          Next x
      End With
      End Sub