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

VBA - Definir correctement un tableau

  • Initiateur de la discussion Initiateur de la discussion Wassss
  • Date de début Date de début

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 !

Wassss

XLDnaute Nouveau
Bonjour le Forum,
je viens vers vous pour demander de l'aide,

j'ai un classeur avec plusieurs feuilles , je veux definir mon tablo à partir de ma feuille "Mvts" et alimenter un combobox1 avec les élements de la colonne E , voici mon code :

Code:
Private Sub UserForm_Initialize()
Dim tablo, i As Long, data As Object
tablo = Sheets("Mvts").Range("A3:G" & Range("A65000").End(xlUp).Row)
Set data = CreateObject("Scripting.Dictionary")

    For i = 1 To UBound(tablo)
        If Not data.exists(tablo(i, 5)) Then data.Add tablo(i, 5), tablo(i, 5)
    Next i
    ComboBox1.List = data.items
End Sub

si la feuille "Mvts" est la feuille active , mon combobox est alimenté correctement

mon probleme : si la feuille "Mvts" n'est pas la feuille active , mon combobox ne prend pas tous les éléments de la colonne E

par exemple dans ma colonne E j'ai ces éléments :
V1
V2
V1
V1
V1
V1
V3

si la feuille "Mvts" n'est pas la feuille active , mon combobox ne contient que V1 et V2 , il manque donc le V3

j'ai une erreur dans mon code et j'arrive pas à mettre la main dessus !

je vous remerci d'avance
 
Re : VBA - Definir correctement un tableau

Bonsoir
Normal: vous ne précisez pas d'expression Worksheet devant Range("A65000").End(xlUp).Row
Il assume donc la feuille active, dont il cherche la dernière cellule de la colonne A.
Spécifiez donc plutôt les CodeName des feuilles: c'est idiot de toujours lui faire chercher dans la collection de feuilles celle qui porte tel ou tel nom Excel !
Cordialement.
 
Re : VBA - Definir correctement un tableau

le CodeName de ma feuille Mvts est Feuil3 , j'ai donc ajouté Feuil3. avant Range("A65000") :

Code:
Private Sub UserForm_Initialize()
Dim tablo, i As Long, data As Object
tablo = Feuil3.Range("A3:G" & Feuil3.Range("A65000").End(xlUp).Row)
Set data = CreateObject("Scripting.Dictionary")

    For i = 1 To UBound(tablo)
        If Not data.exists(tablo(i, 5)) Then data.Add tablo(i, 5), tablo(i, 5)
    Next i
    ComboBox1.List = data.items
End Sub

ça marche impec !! merci Dranreb

Edit : bonsoir Mytå et merci pour ton aide , je vien de voir ta contribution juste apres avoir repondu a Dranreb

j'ai aussi utilisé Sheets("Mvts"). avant Range("A65000") , et ça marche impec aussi , mais pour diminuer les ressources utilisées par excel pour qu'il va pas à chaque fois chercher le nom de la feuille dans les onglets j'ai utilisé le CodeName comme l'a indiqué Dranreb .
 
Dernière édition:
Re : VBA - Definir correctement un tableau

Bonsoir à tous


Autre formulation possible :​
VB:
    With Feuil3
        tablo = .Range(.[G3], .Cells(.Rows.Count, 1).End(xlUp))
    End With



ROGER2327
#6154


Lundi 9 Tatane 139 (Saints Ecrase - Merdre, sectateurs - fête Suprême Quarte)
4 Thermidor An CCXX, 0,2749h - ivraie
2012-W29-7T00:39:35Z
 
- 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
33
Affichages
3 K
  • Question Question
Microsoft 365 macro vba sumifs
Réponses
5
Affichages
630
Réponses
22
Affichages
1 K
Réponses
5
Affichages
574
Réponses
0
Affichages
482
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…