Problème RowSource

Bonjour, pour ma scolarité je suis en train de développer un programme excel que j'ai choisi en VBA et en userforme uniquement.

Les feuilles contiennent juste des données et aucune étape pour mes calculs.

Actuellement voici mon code

Private Sub UserForm_Initialize()
'Constitution de la liste des sessions
Dim Lmax As Single          'désigne le numéro de la dernière ligne
Dim b As String             'utilisé pour déterminé Lmax

'Trouver la dernière ligne
'-------------------------
For i = 2 To 65000
    b = Sheets("Session").Cells(i, 1).Value
    If b <> "" Then
        Lmax = b
    Else
        Exit For
    End If
Next i

'Défini la plage de la liste déroulante
'--------------------------------------
ChpSelectSession.RowSource = Sheets("Session").Range(Cells(2, 1), Cells(Lmax, 1))

End Sub

Et il se trouve que ma sélection de rowsource me pose problème.... Erreur 1004 et je n'arrive pas a trouver mon erreur.

Merci d'avance !

Bonjour,

Perso, je te conseille te faire un test en définissant tes deux variables lmax et b As Double ...

b et Lmax en double ca me donne une incompatibilité dans ma condition If

Re,

Pourrais-tu indiquer de quoi est faite ta colonne A ... dans ta feuille Session ... ???


Code à tester ...

Private Sub UserForm_Initialize()
'Constitution de la liste des sessions
Dim Lmax As Double          'désigne le numéro de la dernière ligne

'Trouver la dernière ligne
Lmax = Sheets("Session").Range("A65536").End(xlUp).Row

'Défini la plage de la liste déroulante
'--------------------------------------
ChpSelectSession.RowSource = Sheets("Session").Range(Cells(2, 1), Cells(Lmax, 1))

End Sub

Sur ma première colonne j'ai un entête (d'où le (2, 1)) et ensuite des numéro de sessions jusqu'à une ligne inconnue

Ok merci bien : trouver la ligne est beaucoup plus simple.

Voilà a ce que j'arrive :

Private Sub UserForm_Initialize()
'Constitution de la liste des sessions
Dim Lmax As Double          'désigne le numéro de la dernière ligne

'Trouver la dernière ligne
'-------------------------
Lmax = Sheets("Session").Range("A65536").End(xlUp).Row

'Défini la plage de la liste déroulante
'--------------------------------------
ChpSelectSession.RowSource = Sheets("Session").Range(Cells(2, 1), Cells(Lmax, 1)).Address

End Sub

Re,

Content que tu aies trouvé la solution ...

Merci à toi de m'avoir aidé

Je réouvre le sujet car j'ai régulièrement des erreurs 1004 sur la ligne de définition du RowSource

Private Sub UserForm_Initialize()
'Constitution de la liste 
Dim Lmax As Double          'désigne le numéro de la dernière ligne

'Trouver la dernière ligne
'-------------------------
Lmax = Sheets("Session").Range("A65536").End(xlUp).Row

'Défini la plage de la liste déroulante
'--------------------------------------
ChpSelectSession.RowSource = Sheets("Session").Range(Cells(2, 1), Cells(Lmax, 1)).Address

End Sub

Bonjour,

L'avantage avec l'informatique est le suivant:

1. Ton programme est mauvais ...çà plante tout le temps

2. Ton programme est bon ...çà marche tout le temps ...

3. Mais si çà plante de temps en temps ... c'est qu'il y a autre chose ... à creuser ...

Merci de joindre ton fichier ...

Bonjour

Essaie avec la méthode Additem plutot que le Rowsource qui pose toujours des soucis dans la gestion des codes ou lorsque tu passes de plateforme windows vers mac

Essaie comme ceci :

Private Sub UserForm_Initialize()
'Constitution de la liste
Dim Lmax As Double
Dim i
'désigne le numéro de la dernière ligne

'Trouver la dernière ligne
'-------------------------
Lmax = Sheets("Session").Range("A65536").End(xlUp).Row

'Défini la plage de la liste déroulante
'--------------------------------------
For i = 2 To Lmax
ChpSelectSession.AddItem Sheets("Session").Cells(i, 1)
Next
End Sub

reste aussi à voir le pourquoi de Lmax as double pour savoir (comme demandé par James007 plus haut) ce que contient ta colonne

Amicalement

Rechercher des sujets similaires à "probleme rowsource"