XL pour MAC Erreur d'exécution 438 VBA

Mathilde22

XLDnaute Nouveau
Bonjour,

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 D5:D10.
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

Avez-vous une idée du problème svp ?

Mathilde
 

Dranreb

XLDnaute Barbatruc
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.
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Mathilde, Dranreb,
Je ne suis pas sûr que AddItem puisse être utilisé pour des ListBox,mais pour des plages de feuilles.
mais vous pouvez faire :
VB:
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 )
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

ç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
eric
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 192
Messages
2 086 056
Membres
103 110
dernier inscrit
Privé