Remplacer case de 0 à 16 par equivalent fonction indirect ?

Bonjour,

j'ai un fichier avec 3 onglets.

"Accueil"

"Listes"

"Encaissement"

J'utilise des combobox dans un userform.

Lorsque le combobox cbogroupe change de valeur, j'aimerais que la liste à afficher dans cbopersonne change.

Pour l'instant, j'utilise la methode Case is...

Très bien pour un petit nombre de classes.

Par contre, j'aurais bien aimé utiliser soit :

une boucle mais je ne comprends pas comment jouer sur la lettre des colonnes

ou alors

créer des listes de façon automatique et utiliser l'équivalent de la fonction Indirect...

Voila où j'en suis.

Si quelqu'un pouvait jeter un coup d'oeil et me proposer une solution, ca serait super.

Si vous voyez quelque chose de plus efficace, je suis preneur, je débute en vba...

Merci de votre aide

Ci joint le fichier

12jl4seb.xlsm (67.54 Ko)

Bonjour,

à la place des select case :

Dim c As Range
With Me.cbopersonne
    ' vider la liste
    .Clear
    ' rechercher le libellé du groupe dans Listes ligne 1
    Set c = Sheets("Listes").[1:1].Find(cbogroupe, LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
        ' si trouvé transférer cellules consécutives remplies dans la combobox
        .List = Range(c.Offset(1), c.End(xlDown)).Value
    End If
End With

eric

Salut Eric,

je teste après ma pause déjeuner et reviens vers toi.

Par contre, pourrais tu détailler ce que tu fais en fait s'il te plait?

Merci de ton aide

J'ai ajouté des commentaires.

Tes listes sont supposées avoir au moins un élément sinon je pense que ça plante.

eric

Super, je teste et te remercie de ton temps...

Bonne journée.

Jean-Louis

Parfait, merci beaucoup

Bonjour

Que signifie la mise entre crochets [1:1] ?

merci de ton aide.

Bonjour,

C'est la notation raccourcie de Range("1:1")

On recherche cbogroupe dans la ligne 1

eric

Rechercher des sujets similaires à "remplacer case equivalent fonction indirect"