XL pour MAC Erreur d'exécution 438 VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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😀10.
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
 
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:
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 )
 
Vous parlez d'une plage de cellule, ce n'est donc pas une ListBox.

Sinon plus simple s'il ne s'agit que de copiez une matrice vers une autre :
VB:
Sub Workbook_open()
    Worksheets("ListeEnseignants").Range("D5:D10").Copy Destination:=Worksheets("MENU").[List_Enseignants]
End Sub
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
773
Réponses
11
Affichages
712
Retour