Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Erreur d'exécution 1004 : la méthode select de la classe Worksheet a échoué

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 !

LaurentVasseur

XLDnaute Nouveau
Bonsoir,
j'ai un problème avec ma macro qui plante avec le message d'erreur 1004 en titre.
La feuille dans laquelle je cherche les données pour remplir ma ComboBox est en fait bien dans le classeur, mais masquée pour ne pas surcharger pour les utilisateurs.
A noter que la macro fonctionne si j'affiche la feuille...
Ci-après le bout de code en question:

Private Sub UserForm_Initialize()
Dim j As Integer
'Récupère les données de la colonne J de la feuille Données...
Sheets("Données").Activate
Sheets("Données").Select
For j = 3 To Range("J104800").End(xlUp).Row
ComboBoxModele_mon = Range("J" & j)
'...et filtre les doublons
If ComboBoxModele_mon.ListIndex = -1 Then ComboBoxModele_mon.AddItem Range("J" & j)
Next j
End Sub

Vous avez une idée ? Suis-je obligé de laisser la feuille affichée ?

Merci d'avance
 
Hello,

les select et activate sont à proscrire si vous masquez la feuille
VB:
Private Sub UserForm_Initialize()
    Dim j As Integer
    'Récupère les données de la colonne J de la feuille Données...
'    Sheets("Données").Activate
'    Sheets("Données").Select
    For j = 3 To Range("J104800").End(xlUp).Row
    ComboBoxModele_mon = Sheets("Données").Range("J" & j)
    '...et filtre les doublons
    If ComboBoxModele_mon.ListIndex = -1 Then ComboBoxModele_mon.AddItem Sheets("Données").Range("J" & j)
    Next j
End Sub
mais je n'ai pas compris votre filtrage des doublons
 
Bonjour
un fichier est TOUJOURS le bienvenu....

Transforme tes données en tableau structuré (insertion/tableau)
VB:
ComboBoxModele_mon.list=[Tableau1[nom de la colonne J]].value

ou (pour supprimer les doublons)

For j = 3 To [Tableau1].rows.count

ComboBoxModele_mon =[Tableau1].item(j,10)

'...et filtre les doublons

If ComboBoxModele_mon.ListIndex = -1 Then ComboBoxModele_mon.AddItem [Tableau1].item(j,10)

Next j

A+ François
 
bonjour a tous,

Comme ceci cela devrait fonctionner feuille masquée
VB:
Private Sub UserForm_Initialize()
Dim j As Integer, k As Integer, ok As Boolean
'Récupère les données de la colonne J de la feuille Données...
    With ThisWorkbook.Sheets("Données")
        For j = 3 To .Range("J104800").End(xlUp).Row
            ok = True
            For k = 0 To ComboBoxModele_mon.ListCount - 1
'...et filtre les doublons
                If ComboBoxModele_mon.List(k) = .Range("J" & j) Then ok = False: Exit For
            Next k
            If ok Then ComboBoxModele_mon.AddItem .Range("J" & j)
        Next j
    End With
End Sub
 
Bonjour,
Comme l'a suggéré @fanfan38 , l'utilisation d'un tableau structuré simplifie bien les choses...
Et comme le demandeur utilise 365, cette ligne de code permet de charger, dans l'ordre, et de manière unique, les données de la colonne "xxx" du Tableau1
VB:
Me.ComboBox1.List = [SORT(UNIQUE(Tableau1[xxx]))]
Bonne soirée
 
Bonsoir à tous,

J'ai fait un essai en utilisant RemoveDuplicates et c'est moins rapide que la solution du post #4.

La solution du post #5 est sans doute plus rapide mais je n'ai pas O365 pour tester.

A+
 
Dernière édition:
Bonjour le forum,

Il faudra tester cette solution avec le Dictionary, très rapide sur un grand tableau :
VB:
Private Sub UserForm_Initialize()
Dim d As Object, tablo, i&
Set d = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Sheets("Données")
    tablo = .Range("J3:K" & .Range("J104800").End(xlUp).Row) 'matrice, plus rapide, au moins 2 éléments
End With
For i = 1 To UBound(tablo)
    d(tablo(i, 1)) = ""
Next
ComboBoxModele_mon.List = d.keys
End Sub
A+
 
- 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

Réponses
3
Affichages
296
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…