Code pour enregistrer fichier selon arborescence
Bonjour,
j'ai un fichier excel que je veux enregistrer en PDF dans un dossier, jusque la tout va bien, mon dossier a l'arborescence suivante :
w:\CLIENTS\CLIENT A
CLIENT B
CLIENT C\factures\01-JANVIER
02- FEVRIER
03- MARS
mon dossier clients comprends plusieurs clients A B ET C et dans le dossier du client A il y a plusieurs dossiers dont le dossier factures a l’intérieur duquel elles sont rangées par mois.
j'ai crée un userform avec 2 comBobox, une pour le nom du client et l'autre pour le mois de la facture, le code fonctionne pour la 1ere comBobox, il va bien chercher dans mon dossier les noms des clients, mais je bloque pour la deuxième ??
Private Sub ComboBox1_Change()
End Sub
Private Sub ComboBox2_Change()
End Sub
Private Sub CommandButton1_Click() 'bouton "Enregistrer"
Dim CH As String 'déclare la variable CH (CHemin d'accès)
Dim NF As String 'déclare la variable NF (Nom du Fichier)
If Me.ComboBox1.Value = "" Then 'si la Combobox1 est vide
MsgBox "Vous devez sélectionner un dossier !" 'message
Me.ComboBox1.SetFocus 'place le curseur dans la ComboBox1
Exit Sub 'sort de la procédure
End If 'fin de la condition
NF = Sheets("Feuil1").Range("A1").Value 'définit le nom du fichier (à adapter)
CH = "W:\CLIENTS\" & Me.ComboBox1.Value & " 'définit le chemin d'accès au fichier"
ThisWorkbook.SaveAs (CH & NF & ".pdf") 'enregistre le fichier sous (extension à adapter)
End Sub
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim SF As Object 'définit la variable SF (Système de Fichiers)
Dim DR As Object 'définit la variable DR (Dossier Racine)
Dim SD As Object 'définit la variable SD (Sous Dossier)
Dim DS As Object 'définit la variable DS (DossierS)
Set SF = CreateObject("Scripting.FileSystemObject") 'définit le système de fichier SF
Set DR = SF.Getfolder("W:\CLIENTS") 'définit le dossier racine DR
Set SD = DR.subfolders 'définit l'ensemble des sous dossiers SD du dossier racine
For Each DS In SD 'boucle sur tous les dossiers DS de l'ensemble SD
Me.ComboBox1.AddItem DS.Name 'ajoute le nom du dossier à la ComboBox1
Next DS 'prochain dossier de la boucle
End Sub
Merci d'avance pour vos réponses.
Astil
Bonjour,
tu parles de deux combobox donc la deuxième avec 01-Janvier est alimentée comment ?
Sinon ton chemin final ce sera bien :
CH = "W:\CLIENTS\" & Me.ComboBox1.Value & "\" & Me.Combobox2.value & "\"
Nota un répertoire par mois pourquoi pas mais quand l'année change ? les factures janvier 2018 avec les 2019 ?
Bonjour,
merci pour ta réponse, justement la deuxième comBobox, je n'arrive pas a l'alimenter !
concernant le première, il va bien dans le dossier racine CLIENTS ET me liste bien le client A client B et client C
et je voudrais qu'il en soit de même pour le mois.
est ce qu'il ne faudrait pas enrichir la ligne du dossier racine ?
Set DR = SF.Getfolder("W:\CLIENTS") 'définit le dossier racine DR
Merci d'avance
Re, je ne sais pas à quoi ressemble ton fichier donc difficile de dire comment paramêtrer ta combobox2
Tu peux faire une liste en colonne dans une feuille excel ou tu inscrits 01-janvier 02-fevrier .......
tu selectionnes les 12 cellules et tu donnes un nom. ensuite dans la propriété de la combobox2 en Rowsource tu donnes
le même nom.
Cependant si la combobox2 doit changer toute seule de mois ; alors difficile sans plus d'info de définir l'événement déclencheur et
la méthode.
Pour les détails du chemins si le paramétrage est correcte alors inutile d'ajouter des variables supplémentaires.
Tu as ton début de chemin + ton nom de répertoire1 + ton nom de répertoire2 … cela suffit amplement.
Par contre comme je le disais plus haut à ta place je me prendrais pas la tête avec un répertoire par mois puisque les années seront
mélangées. c'est dans le nom de facture que j'aurai indiqué la date pour pouvoir trier exemple 2019-01-client1-fact2.
Mais c'est ton choix .
Re, Merci
le repertoire 2 est un sous répertoire du dossier factures qui contient les mois de janvier a décembre.
Merci