XL 2010 RÉSOLU Changer la direction du chemin d'un répertoire dans la VBA

Bambi35

XLDnaute Occasionnel
Bonjour à tous

Je viens vers vous car j'aimerais pouvoir changer la destination du répertoire dans le VBA en passant par une information dans une cellule (J1) de la feuille "Inscription"
Actuellement quand je lance l'édition de ma facture ,elle enregistre le PDF dans le répertoire "C:\Factures\2020 " mais demain ce sera dans le répertoire" C:\Factures\2021"(après l'avoir crée) comme puis-je modifier "Public Const cheminfacture = "c:\Factures\2020\" dans le Module/Moduleoptions en utilisant les informations dans (J1) "2021" pour que les factures s'enregistre dans le répertoire "2021"


C'est grasse à vous que j'ai pu faire ce fiche pour enregistre les factures dans un répertoire
Mais là je bloc

Je vous joint le fichier

Merci d'avance

Bambi35
 

Pièces jointes

  • Change de chemin.xlsm
    229.5 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Bambi,
En PJ un essai mais que je n'ai pas pu tester.
Il suffit de faire un transfert de cellule dans le VBA. J'ai utilisé Para/B1 pour y mettre le chemin, puis en VBA :
VB:
Sub enregistrement()
Dim cheminfacture As String
cheminfacture = [Chemin]
If Right(cheminfacture, 1) <> "\" Then cheminfacture = cheminfacture & "\"
....
Le IF sert à ne jamais oublier au bout de cheminfacture le "\" nécessaire pour stocker le fichier, sinon il serait stocké dans : C:\Factures\2021Nomfichier.pdf au lieu de C:\Factures\2021\Nomfichier.pdf
 

Pièces jointes

  • Change de chemin.xlsm
    240.6 KB · Affichages: 4

Bambi35

XLDnaute Occasionnel
Bonjour Sylvanu

J'ai essayer ton fichier et c'est bien cela , mais quand je modifie mon fichier avec tes info ,cela bloc à cheminfacture = [Chemin] et je ne vois pas pourquoi. Voici le VBA ci-dessous

est-il possible de mettre dans la cellule que l'année


Sub options(cellule)
coladhe = 5

Set adhe = cellule.Parent.Cells(cellule.Row, coladhe)
n = 0


Set dest = Sheets("facture").Range("c32")
x = 0
'type de lignes
lignes = Array("Cotisation", "License", "Location")
'tant que c'est le même adhérent
While adhe.Offset(n, 0) = adhe
'pour chaque type de ligne
For l = 0 To UBound(lignes)
If adhe.Offset(n, 8 + l) <> "" Then
'valeur
dest.Offset(x, 1) = adhe.Offset(n, 8 + l)
'type de ligne et activité
dest.Offset(x, 0) = lignes(l) & " " & adhe.Offset(n, 6)
x = x + 1
End If
Next
n = n + 1
Wend
Sheets("facture").Range("I15").Value = ThisWorkbook.Names("numfact").RefersToRange + 1
End Sub

Sub remplir(cellule)
ligne = cellule.Row
Set debcol = Sheets("para").Range("a5")
Set Source = Sheets("Inscription")
Set dest = Sheets("Facture")
n = 0
While debcol.Offset(n, 0) <> ""
dest.Range(debcol.Offset(n, 1)) = Source.Cells(ligne, debcol.Offset(n, 0))
n = n + 1
'Date du jour
dest.Range("G3") = WorksheetFunction.Proper(Format(Date, "dddd d mmmm yyyy"))
'N°de la facture
dest.Range("K15") = Month(Date)
dest.Range("M15") = Year(Date)

Worksheets("Facture").Range("c31").Value = Worksheets("Inscription").Range("l3").Value

Wend
Call options(cellule)
End Sub


'Enregistrement de la facture
Sub enregistrement()
Dim cheminfacture As String
cheminfacture = [Chemin]
If Right(cheminfacture, 1) <> "\" Then cheminfacture = cheminfacture & "\"

numerodefacture 'Calcul du numéro de facture
With Sheets("facture")
nomfichier = "facture" & "_" & ThisWorkbook.Names("numfact").RefersToRange & "_" & .Range("i21") & " " & .Range("g21")
Chemin = cheminfacture & nomfichier
ThisWorkbook.Sheets("Inscription").Activate
'Si le fichier existe alors question Cette partie n'est pas sensé être possible sauf si le numéro de facture de la feuille para est modifié à la main
Set fso = CreateObject("Scripting.FileSystemObject")
fexist = fso.fileexists(Chemin & ".pdf")
If fexist = True Then
Réponse1 = MsgBox("Un facture a déjà été enregistrer sous ce nom. Souhaitez-vous le remplacer?", vbYesNo)
If Réponse1 = 7 Then
ThisWorkbook.Names("numfact").RefersToRange = ThisWorkbook.Names("numfact").RefersToRange - 1

Exit Sub
End If
End If
'------------------------------------------
'.Range("A1:M45").ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
.UsedRange.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
'Faire CTRL/Shift/FlècheBas ou droite/Gomme/Clic autre cellule/Enregistré/Fermer
End With


MsgBox "Le fichier " & nomfichier & " s'est enregistrer dans le répertoire Facture."
ThisWorkbook.Sheets("Inscription").Activate
End Sub

Sub numerodefacture()
'Incrémente le numéro de facture, et implémente le chrono
ThisWorkbook.Names("numfact").RefersToRange = ThisWorkbook.Names("numfact").RefersToRange + 1
dLig = Sheets("Chrono").Cells(Rows.Count, "B").End(xlUp).Row + 1

With Sheets("chrono")
.Cells(dLig, 1) = ThisWorkbook.Names("numfact").RefersToRange
.Cells(dLig, 2) = Sheets("facture").Range("G7").Value
.Cells(dLig, 3) = Sheets("facture").Range("i21").Value
.Cells(dLig, 4) = Sheets("facture").Range("g21").Value
End With

End Sub

' effacement des données de la feuille facture
Sub efface1()
Set debcol = Sheets("para").Range("b5")
Set dest = Sheets("Facture")
n = 0
While debcol.Offset(n, 0) <> ""
dest.Range(debcol.Offset(n, 0)) = ""
n = n + 1
Wend
End Sub

Merci encore de ton aide

Bambi35
 

Bambi35

XLDnaute Occasionnel
Sylvanu
je ne comprends bien "Avez vous bien appelez la cellule qui contient le chemin : Chemin ?"
J'ai donc essayé cheminfacture = sheets("Para").Range("B1") et nickel

mais est-il possible de faire que dans la cellule "B1" ou une autre référence à "B1" l'on puisse mettre que l'année ? (avec caoncatener)

Merci
 

Discussions similaires