[résolu] macro liste déroulante dynamique (multi-feuilles)

wukodlak

XLDnaute Nouveau
Bonjour,

je cherche à réaliser une liste déroulante dynamique sur 2 feuilles différentes.

la méthode : =decaler(A9;0;0;nbval(A9:A)-1;1) en validation de donnée ne peut donc pas me servir
la méthode : =listePuces en la nommant non plus car si des lignes sont ajoutées ou supprimées je suis bloqué

j'ai également essayé de créer une liste déroulante via
Onglet Développeur > Insérer > contrôle de formulaire > liste déroulante dynamique puis affecter macro

Plusieurs feuilles
resultats : beaucoup de données obtenus d'une autre feuille
individuel : objectif sortir les résultats par équipe donc trouver la ligne qui nous intéresse via une liste

Sub miseajourlistePuces()

Sheets("resultats").Select ' feuille contenant la liste qui peut être modifiée
Range("A9").Select ' dans cette même feuille la liste des info est en
' colonne A commençant en A8 par le titre de la liste

nbligne = Range(Selection, Selection.End(xlDown)).Rows.Count ' calcul du nombre de lignes non vide
Range("A8").Offset(1, 0).Resize(nbligne, 1).Name = "listePuces" ' de A9 à Axx
Range("A8").Select ' selection du premier élément

End Sub

la liste crée par ce bouton reste toujours vide.... Ai je omis quelques chose ?
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : macro liste déroulante dynamique (multi-feuilles)

Bonjour Wukodlak, bonjour le forum,

Je n'ai pas bien compris tes explications et comme tu n'as pas daigné les accompagner d'un fichier exemple, je te propose une solution à adapter à ton cas sans être sûr que ça réponde à ta question...
Le code :
Code:
Sub Macro1()
Dim i As Byte 'déclare la variable i (Incrément)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim liste As String 'déclare la variable liste

'création de la liste dynamique sur plusieurs onglets
For i = 1 To 3 'boucle '1 : sur trois onglets (à adapter à ton cas)
    With Sheets(i) 'prend en compte l'onglet de la boucle 1
        'boucle 2 : sur toutes les cellules éditées cel de la colonne I de l'onglet (à adapter à ton cas)
        For Each cel In .Range("I1:I" & .Cells(Application.Rows.Count, 9).End(xlUp).Row)
            liste = IIf(liste = "", cel.Value & ",", liste & Chr(13) & cel.Value & ",") 'définit la liste
        Next cel 'prochaine cellule de la boucle 2
    End With 'fin de la prise en compte de l'onglet de la boucle 1
Next i 'prochain onglet de la boucle 1

'validation de données sur la plage A1:A10 de l'onglet Feuil1 (à adapter à ton cas)
With Sheets("Feuil1").Range("A1:A10").Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=liste
End With
End Sub
Lance la macro et regarde la plage A1:A10 de l'onglet Feuil1
Le fichier :
 

Pièces jointes

  • Wukodlak_v01.xls
    30 KB · Affichages: 210

wukodlak

XLDnaute Nouveau
Re : macro liste déroulante dynamique (multi-feuilles)

Bonjour et merci de ta réponse,

Effectivement un fichier joint en exemple sera plus parlant .
j'ai regardé le fichier mais je ne pense pas que ça corresponde, je vais développer avec un exemple

3 onglet dans mon fichier :

feuil1 appelée "aventure" qui provient d'un fichier CSV qu'un logiciel de traitement de courses lors d'épreuves sportives me ressort.

feuil2 appelée "resultats" j'ai épuré un maximum pour n'avoir que ce qui m'est nécessaire pour vous expliquer le besoin.
A noter la zone importante A9:A?? car je ne sais pas à l'avance combien j'aurais d'informations

feuil3 appelée "individuelAventure" mon but ressortir les éléments équipe par équipe. Je souhaite avoir une liste suivant les numéros de puces qui sont uniques et donc facilite la recherche, on sélectionne la puce et il nous donne les informations en fonction contenues dans la ligne trouvée.

La j'ai une liste faire par validation de donnée la liste nommée "listePuces" a été utilisée mais du coup elle n'affiche plus l'ensemble de la liste car j'ai pris un autre listing d'équipes (obligation de renommer "listePuces")

mon but est que cette liste déroulante se mette à jour en fonction du nombre de lignes non vides contenues en A9:A dans la feuille "resultats"



Merci à toi pour ton aide
 

Pièces jointes

  • demo.xlsx
    17.7 KB · Affichages: 149
  • demo.xlsx
    17.7 KB · Affichages: 169
  • demo.xlsx
    17.7 KB · Affichages: 183

Robert

XLDnaute Barbatruc
Repose en paix
Re : macro liste déroulante dynamique (multi-feuilles)

Bonjour Wukodlak, bonjour le forum,

Le même code placé à deux endroits différents pour être sûr d'avoir la bonne liste...
1- à l'ouverture du classeur :

Code:
Private Sub Workbook_Open()
With Sheets("resultats") 'prend en compte l'onglet "resultats"
    'redéfinit la plage nommé "listePuces"
    .Range("A9:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Name = "listePuces"
End With 'fin de la prise en compte de l'onglet "resultats"
End Sub
2- à l'activation de l'onglet individuelAventure :
Code:
Private Sub Worksheet_Activate() 'à l'activation de l'onglet
With Sheets("resultats") 'prend en compte l'onglet "resultats"
    'redéfinit la plage nommé "listePuces"
    .Range("A9:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row).Name = "listePuces"
End With 'fin de la prise en compte de l'onglet "resultats"
End Sub
Le fichier :
 

Pièces jointes

  • Wukodlak_v02.xls
    48 KB · Affichages: 189

wukodlak

XLDnaute Nouveau
Re : macro liste déroulante dynamique (multi-feuilles)

Bonjour Robert,

merci de ta réponse effectivement c'est cela que je cherchais à faire, à la vue du code que tu me proposes je me suis carrément compliqué la vie avec une macro à rallonge qui ne donnait pas le résultat escompté.

Grand merci à toi.
 

Discussions similaires

Réponses
10
Affichages
648

Statistiques des forums

Discussions
312 488
Messages
2 088 862
Membres
103 979
dernier inscrit
imed