Liste de longueur variable sous Excel

Résolu/Fermé
fafeouw Messages postés 4 Date d'inscription mercredi 2 mai 2007 Statut Membre Dernière intervention 15 juin 2007 - 2 mai 2007 à 22:14
fafeouw Messages postés 4 Date d'inscription mercredi 2 mai 2007 Statut Membre Dernière intervention 15 juin 2007 - 7 mai 2007 à 19:55
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.
A voir également:

1 réponse

fafeouw Messages postés 4 Date d'inscription mercredi 2 mai 2007 Statut Membre Dernière intervention 15 juin 2007
7 mai 2007 à 19:55
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