Je travaille sur Mac et rencontre régulièrement quelques problèmes dans VBA.
Je n'arrive pas à réutiliser le nom d'une liste dans une macro pour la mettre à jour automatiquement si la plage de cellule qui l'alimente est modifiée.
J'ai crée une zone de liste dans la feuille "MENU".
Je voudrais que la liste contienne les éléments situés sur la feuille "ListeEnseignants" dans la plage D510.
J'ai appelé la liste "List_Enseignants".
Voici le code :
VB:
Private Sub Workbook_open()
Dim cellule As Range
For Each cellule In Worksheets("ListeEnseignants").Range("D5:D10")
Worksheets("MENU").List_Enseignants.AddItem cellule.Value
Next
End Sub
J'ai le message d'erreur suivant :
Erreur d'exécution « 438 »
Propriété ou méthode non gérée par cet objet
Bonjour.
Un objet Worksheet n'est pas équipé d'une propriété List_Enseignants.
Disons plutôt qu'un objet indéfini lors de la compilation, membre de la collection Worksheets, n'en est pas muni. Un objet Worksheet désigné par son nom dans la rubrique Microsoft Excel Objets de l'explorateur de projets pourrait en être muni par contre.
Private Sub Workbook_open()
Dim cellule As Range, N%
N = 1
For Each cellule In Worksheets("ListeEnseignants").Range("D5:D10")
Worksheets("MENU").[List_Enseignants].Cells(N, 1) = cellule.Value
N = N + 1
Next
End Sub
L'init de N est à gérer en fonction de ce que vous avez déjà dans la liste cible ( ou 1 si la liste cible est vide )
Merci de la réponse
AddItem était utilisé pour des ListBox mais sous Windows, quand je suis sous Mac je n'arrive pas à réutiliser le nom de la listBox dans le code.
ça parait un peu brouillon tout ça.
J'ai l'impression que tu veux gérer une listbox ActiveX, hors les ActiveX n'existent pas sur Mac.
Tu n'as droit qu'aux contrôles type formulaire plus limité.
Et là ça serait :
VB:
Worksheets("Feuil1").Shapes.Range(Array("Liste_Enseignants")).Select
With Selection
.ListFillRange = "ListeEnseignants!$D$5:$D$10"
.LinkedCell = "$B$2"
.DropDownLines = 8
.Display3DShading = False
End With