Ne fonctionne pas : Range("xfd1").End(xlToLeft).Column

Bonjour à tous,

mon soucis du moment est assez incompréhensif, en tous les cas pour moi.
Voici le bout de code basic pour charger ma combobox. ( je mets des commentaires partout => pratiquant le VBA depuis peu :) )

'*******************************
' Initialisation du formulaire
'*******************************
Private Sub UserForm_Initialize()
Dim sh_R As Worksheet
Set sh_R = Sheets("Categories")
Dim i As Integer

'Boucle pour compter la première ligne avec les titres de catégorie pour COMBOBOX1
For i = 2 To Range("xfd1").End(xlToLeft).Column 'On part de la colonne 2
     Me.ComboBox1.AddItem sh_R.Cells(1, i) 'On ajoute les items retrouvés ici de la ligne 1 à la dernière colonne(i)
Next i

'Pour compter le nombre de colonne ( Sera effacer à la fin )
Range("C57") = Range("xfd1").End(xlToLeft).Column
End Sub

Par contre, si je modifie en déclarant le nombre de colonne max dans la boucle, cela fonctionne. Je suis un peu perdu.

For i = 2 To Range("xfd1").End(xlToLeft).Column

remplacer par 

For i = 4 ' fonctionne

Si quelqu'un pouvait m'expliquer mon erreur ! Merci

JLuc

Bonjour,

quel est le message que tu reçois ?

cette instruction

Range("xfd1").End(xlToLeft).Column

donne le numéro de la dernière colonne non-vide de la feuille active en partant de la droite. pour être sûr de travailler sur la bonne feuille, voici :

'*******************************
' Initialisation du formulaire
'*******************************
Private Sub UserForm_Initialize()
Dim sh_R As Worksheet
Set sh_R = Sheets("Categories")
Dim i As Integer

'Boucle pour compter la première ligne avec les titres de catégorie pour COMBOBOX1
For i = 2 To sh_R.Range("xfd1").End(xlToLeft).Column 'On part de la colonne 2
     Me.ComboBox1.AddItem sh_R.Cells(1, i) 'On ajoute les items retrouvés ici de la ligne 1 à la dernière colonne(i)
Next i

'Pour compter le nombre de colonne ( Sera effacer à la fin )
sh_R.Range("C57") = sh_R.Range("xfd1").End(xlToLeft).Column
End Sub

Bonsoir,

Je suppose qu'au moment de l'initialisation de l'USF, la page active n'est pas l'onglet "Categories"....

Ainsi, peut-être?

For i = 2 To sh_R.Range("xfd1").End(xlToLeft).Column 'On part de la colonne 2
     Me.ComboBox1.AddItem sh_R.Cells(1, i) 'On ajoute les items retrouvés ici de la ligne 1 à la dernière colonne(i)
Next i

Qu'on peut modifier aussi comme ceci :

For i = 2 To sh_R.Cells(1, Columns.Count).End(xlToLeft).Column 'On part de la colonne 2
     Me.ComboBox1.AddItem sh_R.Cells(1, i) 'On ajoute les items retrouvés ici de la ligne 1 à la dernière colonne(i)
Next i

Peut-être?

Edit, oups, pas vu, désolé h2so4

Bonsoir,

Par contre, si je modifie en déclarant le nombre de colonne max dans la boucle, cela fonctionne. Je suis un peu perdu.

Si cela ne fonctionne pas avec i = 2, vous avez bien des données là (en B1 et C1) ?
Pas de fusion de cellule non plus je suppose ?

Sinon, solution sans boucle et en supposant que c'est de la feuille catégories qu'il faut prendre les infos

Private Sub UserForm_Initialize()
Dim sh_R As Worksheet
Dim tablo
Dim dcol As Integer

Set sh_R = Sheets("Categories")

With sh_R
    dcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    tablo = .Range(.Cells(1, 2), .Cells(1, dcol))
End With
ComboBox1.List = Application.Transpose(tablo)

'Pour compter le nombre de colonne ( Sera effacer à la fin )
sh_R.Range("C57") = dcol - 1
End Sub

Crdlt

Edit : oups H2so4, cousinhub.... pas vérifié.... bon je laisse le post sachant que l'approche est différente

Houla cela a été rapide. En effet, la page active n'est pas "Categories" d'ou mon soucis.
Visiblement vous me proposez plusieurs solutions. ( Je les comprends toutes en plus. :) )

Je vous remercie tous infiniment.
JLuc

Rechercher des sujets similaires à "fonctionne pas range xfd1 end xltoleft column"