VBA - Definir correctement un tableau

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
 

Dranreb

XLDnaute Barbatruc
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.
 

Wassss

XLDnaute Nouveau
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:

ROGER2327

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
5
Affichages
371
Réponses
22
Affichages
741

Statistiques des forums

Discussions
312 078
Messages
2 085 110
Membres
102 783
dernier inscrit
Basoje