Remplissage zone liste déroulante située dans un classeur excel via VBA

rudyl

XLDnaute Nouveau
Bonjour,

Et merci par avance de votre aide.

Alors voilà je suis confronté à un petit problème sur le remplissage d'une zone liste déroulabte situé dans un classeur excel (Ex : Feuil1).
Habituellement j'utilise directement VBA pour remplir cette zone déroulante, cependant cette zone se située toujours dans un userform. Alors que la la zone est dans une feuille excel.
J'ai donc voulu remplir cette zone dans la procédure
Code:
Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ou
Code:
Workbook_Open
avec le code suivant :

Lst_ChoixVehic.AddItem "Révision annuel"
....

Mais malheureusement cela ne fonctionne pas il m'indique une erreur d'execution 438. Alors que ce type de code fonctionne quant il sagit d'un zone se situant dans un userform.

Je sais que l'on peut remplir cette zone en passant par les propriétés de l'objet dans "contrôle" est électionner un liste de donnée. Mais par rapport à se que je souhaite faire je préfère gérer le tout via le VBA.

Merci de votre aide.

Salutations,
 

youky(BJ)

XLDnaute Barbatruc
Re : Remplissage zone liste déroulante située dans un classeur excel via VBA

Bienvenu sur le forum,
Bonne suite à toi
Voici 2 solutions (liste et listbox en Feuil1)
Feuil1 étant le codename pas forcément le nom de l'onglet si renommé(voir fenetre projet)
Bruno
Code:
Private Sub Workbook_Open()
Feuil1.ListBox1.List = Feuil1.Range("A1:A" & Feuil1.[A65000].End(xlUp).Row).Value
End Sub
ou
Code:
Private Sub Workbook_Open()
For ligne = 1 To Feuil1.[A65000].End(3).Row
Feuil1.ListBox1.AddItem Feuil1.Cells(ligne, 1)
Next
End Sub
 

job75

XLDnaute Barbatruc
Re : Remplissage zone liste déroulante située dans un classeur excel via VBA

Bonjour rudyl, bienvenue sur XLD,

Quand le code n'est pas dans la feuille elle-même il faut préciser la feuille :

Code:
Sheets("Feuil1").Lst_ChoixVehic.AddItem "Révision annuel" 'Feuil1 => Nom de la feuille
ou mieux :

Code:
Feuil1.Lst_ChoixVehic.AddItem "Révision annuel" 'Feuil1 => CodeName de la feuille
Edit : salut youky

A+
 

rudyl

XLDnaute Nouveau
Re : Remplissage zone liste déroulante située dans un classeur excel via VBA

Merci pour vos réponses. Mais jamais déjà essayé cela est toujours erreur d'execution 438.

Voici mon code :

Code:
Private Sub Workbook_Open()

    'On active le classeur
    
    ThisWorkbook.Activate
    
    'On force par défaut l'affichage de la feuille Application du classeur
    
    Sheets("Application").Select
    
    'On lance le Splash screen de l'application
    
    Form_Splash.Show

    Sheets("Application").Lst_ChoixVehic.AddItem "Révision annuel" 'Feuil1 => Nom de la feuille
    
End Sub

Merci
 

rudyl

XLDnaute Nouveau
Re : Remplissage zone liste déroulante située dans un classeur excel via VBA

Re,

J'ai enfin trouvé d'ou provené l'erreur. Tout simplement dans l'objet utilisé. En effet sous Excel 2010 vous avez la possibilité d'insérer des objet de contrôle formulaire ou Contrôle ActiveX. Et c'est ce dernier qu'il fallait utiliser et non le contrôle formulaire.
Merci tout de même pour votre aide.
Les deux listbox se resemble mais sont gérés de facon différente.

Cordialement
 

youky(BJ)

XLDnaute Barbatruc
Re : Remplissage zone liste déroulante située dans un classeur excel via VBA

Dire qu'avec un fichier exemple cela serait tellement plus simple!!!!
Bruno
Code:
[FONT=monospace]Private Sub Workbook_Open()
    'On active le classeur
      '''''pas besoin on est aprés l'ouvrir  ThisWorkbook.Activate
    'On force par défaut l'affichage de la feuille Application du classeur

    Sheets("Application").Select
 Sheets("Application").Lst_ChoixVehic.AddItem "Révision annuel" 'Feuil1 => Nom de la feuille

'une liste avec un seul nom ? ! ! ! !???????? bon si c'est ça!
    'On lance le Splash screen de l'application

    Form_Splash.Show

   'c'est l'userform qui prend le relais
End Sub[/FONT]
 

rudyl

XLDnaute Nouveau
Re : Remplissage zone liste déroulante située dans un classeur excel via VBA

Non Youky cela était pour l'exemple la liste sera remplis par du code par la suite. Je ne voulais jsute ne pas compliquer par du code qui ne posait pas de problème.

Merci tout de même pour l'aide.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
314 627
Messages
2 111 303
Membres
111 094
dernier inscrit
MFrequence