Menu déroulant de fichiers

Bonjour à tous

C'est à nouveau moi,

J'ai à nouveau un petit soucis dont je ne trouve pas la réponse....

J'ai un menu déroulant et j'aimerais que les trucs affichés dedans correspondent aux fichiers d'un dossier se trouvant sur mon bureau c'est à dire ici

C:\Users\a23peter43\Desktop\TEST

Ensuite j'aurai un lien hypertexte me permettant d'ouvrir le fichier sélectionné juste à coté.

Existe t-il un moyen sans passer par VBA ? et sinon qu'elle est la fonction permettant de le faire par VBA ?

Merci

bonjour,

Un exemple avec VBA

A+

27peter.xlsm (19.03 Ko)

Bonjour,

J'ai un début de programme mais je n'arrive pas à faire en sorte que la liste apparaisse dans un menu déroulant...

Sub ListeFichiers2()
 repertoire = "C:\Users\a23peter43\Desktop\TEST" ' adapter
 I = 2
 nf = Dir(repertoire & "\*.dwg*")  ' premier fichier
 Do While nf <> ""
 Cells(I, 1) = nf
 nf = Dir ' suivant
 I = I + 1
 Loop
 End Sub

Ce que j’aimerai :

solution 2

bonjour

si tu arrive déjà a mettre tout tes noms de fichier présent sur le bureau dans une colonne

tu peux utiliser le code ci dessous pour créer une liste

code a adapter en conséquence

fred

With ActiveSheet.Range("A1").Validation
 .Delete
 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=Données!$F$2:$F$" & Sheets("Données").Range("F65536").End(xlUp).Row
End With

Oui en effet tous les fichiers apparaissent sur la même colonne à parti de la case A2, cependant quels sont les lignes de code à adapté à mon programme ?

Et le problème que j'ai c'est que la liste déroulante n'apparait pas...(oui je suis une bille en code)

reprenons

ton fichier test fourni sur le premier message est-il toujours d'actualité ? si oui je vais travailler dessus, sinon merci de fournir un nouveau

fred


bon j'ai fait deux macros

une qui permet de créer la liste dans la case A1 de la feuille 1 a partir des données présentent dans le colonne A de la feuille 2

et une autre qui supprime la liste

a+

fred

Sub ListeFichiers2()

chaine = ""
 repertoire = "C:\Users\a23peter43\Desktop\TEST" 
 I = 2
 nf = Dir(repertoire & "\*.dwg*") 
 Do While nf <> ""
 chaine = nf & ";" & chaine
 nf = Dir ' suivant
 I = I + 1
 Loop

'on supprime avant pour pas qu'il y ait de conflit
Feuil1.Range("A1").Validation.Delete
'on crée une nouvelle "listbox"
Feuil1.Range("A1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=chaine

End Sub

Voila les lignes de codes que j'ai actuellement, avec j'obtiens ce-ci :

forum solution 2

Le problème que j'ai c'est que cela ne s'affiche pas sous la forme de liste mais les fichiers apparaissent les uns à la suite des autres séparé par un point virgule et non dans une liste comme je le souhaite.

Merci encore pour ton aide fred2406

Bonjour

met a disposition le fichier

fred

Bonjour,

Tu peux le trouver en pièce-jointe


Autant pour moi le fichier précédent ne contenait pas les macros...

normal que cela ne fonctionne pas....

tu met tes éléments dans une variable séparée par un ;

donc dans la liste une seule proposition avec tous tes noms de fichiers les uns derrière les autres

tu modifie ton cahier des charges a chaque fois

au debut la liste des fichiers devait se trouver dans la feuille 2 a partir de A2, la tu essaye directement a partir d'un variable...

voici une proposition qui fait comme demandé initialement

cela supprime les données sur la feuille 2 avant d'aller lister les noms de fichiers présent dans le dossier

fred

Sub ListeFichiers2()
Sheets(2).[A1].CurrentRegion.ClearContents
Sheets(2).[A1] = "liste des fichiers"

 repertoire = "C:\Users\a23peter43\Desktop\TEST"
 nf = Dir(repertoire & "\*.dwg*")

 Do While nf <> ""
 Sheets(2).Range("A" & Sheets(2).Range("A65536").End(xlUp).Row + 1) = nf
 nf = Dir ' suivant
 Loop

With Sheets(1).[A1].Validation
 .Delete
 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="='" & Sheets(2).Name & "'!$A$2:$A$" & Sheets(2).Range("A65536").End(xlUp).Row
End With

End Sub

En fait j'ai mis une liste de fichiers au début sur la feuille 2 juste pour que vous ayez un aperçu de ce que je veux, je ne veux pas que la liste des fichiers disponible apparaissent dans une autre feuille mais que cette liste correspondent directement aux fichiers présent sur mon bureau dans le disque \\C:

Je viens de trouver la solution (je n'avais jamais fait .... )

j'ai supposer qu'il n'y aurai pas plus de 254 fichiers (déclaration de i en byte)

a tester

fred

Sub ListeFichiers2()
Dim tabl()
Dim i As Byte

i = 1
ReDim tabl(i)
repertoire = "C:\Users\a23peter43\Desktop\TEST"
nf = Dir(repertoire & "\*.dwg*")

Do While nf <> ""
    tabl(i) = nf
    i = i + 1
    ReDim Preserve tabl(i)
    nf = Dir ' suivant
Loop

With Sheets(1).[A1].Validation
 .Delete
 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(tabl, ",")
End With

End Sub

Ça marche niquel !

Merci beaucoup pour ton aide

dans ce cas

fred

Rechercher des sujets similaires à "menu deroulant fichiers"