Liste de longueur variable sous Excel

Résolu
fafeouw Messages postés 4 Date d'inscription   Statut Membre -  
fafeouw Messages postés 4 Date d'inscription   Statut Membre -
Bonjour à tous,

Je travail sous Excel 2003 et je rencontre un problème, étant débutant en VBA je me suis dit que quelqu'un aurait peut être une solution.

J'ai un fichier excel dont deux paramètres sont modifiables par l'utilisateur. Il s'agit de deux listes de personnes occupant des postes différents dans une entreprise.

Pour ce faire l'utilisateur remplit dans la feuille1 les cellules de E14 à E23 pour la liste 1 et de L14 à L23 pour la liste 2. Il clique ensuite sur un bouton pour valider ces 2 listes.

Je souhaite donc faire un code VBA qui me recopie ces 2 listes dans la feuille2 où se trouve l'ensemble des données que j'utilise dans mon fichier . Liste 1 dans la colonne 9 et liste 2 dans la colonne 10, un fois les données copiées tri croissant de ces dernières.

Je veux ensuite utiliser ces données dans 2 ComboBox, le problème c'est que je ne sais pas comment faire pour que les deux ComboBox s'ajuste automatiquement à la longueur des listes.

Je précise que les deux combo sont dans une troisième feuille.

J'ai déjà essyé d'adapter le code de Armojax dans le sujet "Liste déroulante de longueur variable" mais sans succès à ce jour.

Voilà j'espère avoir été assez clair.

Merci par avance pour votre aide.

1 réponse

  1. fafeouw Messages postés 4 Date d'inscription   Statut Membre
     
    C'est bon j'ai réussi à trouver un code qui fonctionne.

    Je vous le donne si ça peux aider quelqu'un d'autres

    Sheets("Feuil2").Select
    Range("I3:I12").Select
    Selection.ClearContents
    Sheets("Feuil1").Select
    Range("E14").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Feuil2").Select
    Range("I3").Select
    ActiveSheet.Paste
    Range("I2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("I2"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

    Dim DerLig As Long
    On Error Resume Next
    ActiveWorkbook.Names("Liste1").Delete
    On Error GoTo 0
    DerLig = Worksheets("Data").Columns(9).End(xlDown).Row
    ActiveWorkbook.Names.Add Name:="Liste1", RefersToR1C1:="=Data!R2C9:R" & DerLig & "C9"

    Sheets("Feuil2").Select
    Range("J3:J12").Select
    Selection.ClearContents
    Sheets("Feuil1").Select
    Range("L14").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Feuil2").Select
    Range("J3").Select
    ActiveSheet.Paste
    Range("J2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("J2"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal

    Dim DerLig2 As Long
    On Error Resume Next
    ActiveWorkbook.Names("Liste2").Delete
    On Error GoTo 0
    DerLig2 = Worksheets("Data").Columns(10).End(xlDown).Row
    ActiveWorkbook.Names.Add Name:="Liste2", RefersToR1C1:="=Data!R2C10:R" & DerLig2 & "C10"


    Avec ce bout de code, les données rentrées par l'utilisateur sont bien copiées dans la feuille 2 puis trié (par ordre croissant) et enfin les deux objets (liste 1 & 2) sont bien renseigné.

    Par contre je n'ai pas trouver la solution pour charger à chaque changement Liste1 dans combo 1 (qui ce trouve sur feuille 3) et Liste 2 dans combo 2 (qui ce trouve sur feuille 3 aussi). Si quelqu'un à une solution ça serai sympa de ma la communiquer.

    @+
    0