Enregistrement chemin Donné

Bonjour le Forum,

Avant j'avais un Excel qui se trouvait dans ce dossier "R:\Bon Fabrication"

j'utilisais une macro lors de son ouverture

Private Sub Worksheet_Activate()
'Enregistre dans le dossier
If Sheets(Feuil1.Name).Range("A6") = "" Then
If MsgBox("Création d'un Bon de Fabrication ?", vbYesNo, "Demande de confirmation") = vbYes Then
ChDir "R:\Bon Fabrication"
Application.Dialogs(xlDialogSaveAs).Show
End If
End If
End Sub

Elle fonctionnait..

Aujourd'hui j'ai déplacé ce Excel dans un nouveau dossier nommé "R:\Modèles SE\Macro"

J'utilise toujours le même code mais lors de l'enregistrement il me fait plus le

ChDir "R:\Bon Fabrication"
Application.Dialogs(xlDialogSaveAs).Show

Il ouvre automatiquement "R:\Modèles SE\Macro"

J'ai ouvert un tout nouveau classeur excel ou j'ai copier le code dans la feuil1 et là ça fonctionne. Il n’emmène bien sur le bon dossier "R:\Bon Fabrication"

Une idée ?

D'avance Merci.

Bonjour,

Au lieu d'utiliser "ChDir", utilises la propriété "InitialFileName" de l'objet "FileDialog". Ci-dessous une fonction qui te retourne le chemin choisi :

Function Dossier() As Variant

    With Application.FileDialog(4)

        .InitialFileName = "R:\Bon Fabrication\"

        If .Show = -1 Then Dossier = .SelectedItems(1)

    End With

End Function

Que tu peux utiliser de cette façon :

Sub Test()

    Dim Dos As String

    Dos = Dossier

    MsgBox Dos

End Sub

Lorsque je l'adapte il souhaite me créer un dossier.

Je veux juste faire un enregistrer sous.. de ce excel qui finalement est un excel "Mère"

Re,

Fais un test avec ce code (Sub "Enregistrer" à lancer) :

Sub Enregistrer()

    Dim Dos As String
    Dim Fichier As String

    Dos = Dossier("R:\Bon Fabrication\")

    Fichier = "Le nom du fichier.xlsm"

    ThisWorkbook.SaveAs Dos & Fichier

End Sub

Function Dossier(DossierIni As String) As Variant

    With Application.FileDialog(4)

        .InitialFileName = DossierIni

        If .Show = -1 Then Dossier = .SelectedItems(1) & "\"

    End With

End Function

Bonjour

si tu change ton fichier de place sans changer ta macro

A voir

Sub Test()
'pour savoir ou se trouve ton fichier
ChoixChemin = ActiveWorkbook.Path & Application.PathSeparator
MsgBox ChoixChemin
End Sub

A+

Maurice

Bonjour !

J'arrive dans le chemin souhaité donc parfait, mon seul soucis c'est que je dois mettre un "nom de dossier" et je ne peux pas choisir de l'enregistrer en xls, xlsm, pdf...

J'aimerai pouvoir rentrer mon "nom de fichier" et le ".Classeur Excel (prenant en charge les macros)"

Pour faire simple, je vais essayer de m'exprimer plus clairement.

Je souhaite juste faire un "Enregistrer sous" et qu'il me donne directement le chemin "R:\Bon Fabrication". Là j'ai une 20ène de dossier donc c'est moi qui le choisi à la main.

Puis;

J'écris alors le "nouveau" nom de mon excel que j'enregistre en ".xlsm"

Bonjour,

de cette façon alors ?

Sub Enregistrer()

    Dim Fichier As String

    Fichier = Dossier("R:\Bon Fabrication\")

    If Fichier = "" Then Exit Sub

    ThisWorkbook.SaveAs Fichier, 52

End Sub

Function Dossier(DossierIni As String) As Variant

    With Application.FileDialog(2)

        .InitialFileName = DossierIni

        If .Show = -1 Then Dossier = .SelectedItems(1)

    End With

End Function

C'est parfait !

Je vais juste être un peu plus embêtant et revenir sur une chose car je pense que si la personne ne fait pas attention elle peut foirer tout le Excel.

Est-il possible de l'obliger à être en ".xlsm" ?

Est-il possible de l'obliger à être en ".xlsm" ?

Oui, de cette façon par exemple :

Sub Enregistrer()

    Dim Fichier As String

    Fichier = Dossier("R:\Bon Fabrication\")

    If Fichier = "" Then Exit Sub

    If Right(Fichier, 5) <> ".xlsm" Then Fichier = Left(Fichier, InStr(Fichier, ".") - 1) & ".xlsm"

    ThisWorkbook.SaveAs Fichier, 52

End Sub

C'est sublime !! Parfait merci beaucoup Theze !

ça fait exactement ce que je souhaite.

Pourquoi du coup ça ne fonctionnais pas avec la ChDir ?

Est-il possible de l'obliger à être en ".xlsm" ?

Oui, de cette façon par exemple :

Sub Enregistrer()

    Dim Fichier As String

    Fichier = Dossier("R:\Bon Fabrication\")

    If Fichier = "" Then Exit Sub

    If Right(Fichier, 5) <> ".xlsm" Then Fichier = Left(Fichier, InStr(Fichier, ".") - 1) & ".xlsm"

    ThisWorkbook.SaveAs Fichier, 52

End Sub

Bonsoir à tous

J'ai un peu près le même souci de "chemin d'enregistrement ", mais moi c'est depuis un même fichier je voudrais avoir le choix entre 2 destination d'enregistrement. Le choix ce fera avec une liste deroulante dans cette feuille.

Si qq a une idée ce serais sympa

Merci pour votre aide

Bonjour,

Le choix ce fera avec une liste deroulante dans cette feuille.

Quel genre de liste déroulante, liste de validation dans une cellule, ComboBox issu de la barre d'outils formulaire, de la barre d'outils ActiveX ?

Bonjour,

Le choix ce fera avec une liste deroulante dans cette feuille.

Quel genre de liste déroulante, liste de validation dans une cellule, ComboBox issu de la barre d'outils formulaire, de la barre d'outils ActiveX ?

bonjour

voilà ci joint un fichier avec le projet:

dans ce projet ce qui est rechercher c'est:

1) depuis la feuille "accueil choisir "devis ou facture" dans la liste deroulante en C2

2) choisir la ville depuis liste deroulante en B2

3) après ces choix 1 clic sur créer pdf génère soit le devis ou soit la facture d'après le choix effectué en C2

4) puis enoie du fichier soit dans "c:\users\Utilisateur\Desktop\Client\Factures\ ou soit dans "c:\users\Utilisateur\Desktop\Client\Devis\

mon code actuel:

Public Sub CreatePDF9()

Dim ws As Worksheet

Dim strPath As String, strSheetName As String, strFilename As String

With ActiveWorkbook

strPath = "C:\Users\Utilisateur\Desktop\clients\"

strSheetName = .Worksheets("tarif 2019").Cells(22, 8).Value

On Error Resume Next

Set ws = .Worksheets(strSheetName)

On Error GoTo 0

End With

If Not ws Is Nothing Then

strFilename = strPath & Range("G5") & ".pdf"

ws.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:=strFilename, _

Quality:=xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=True

End If

End Sub

Et bien, il te suffit de raccrocher le nom du dossier final à ton chemin initial. Comme tu as dans le dossier "clients" deux sous-dossiers nommés "Facture" et "Devis", il te suffit de récupérer le choix fait en C2 pour terminer le chemin :

strPath = "C:\Users\Utilisateur\Desktop\clients\" & Worksheets("accueil").Range("C2").Value & "\"

Et bien, il te suffit de raccrocher le nom du dossier final à ton chemin initial. Comme tu as dans le dossier "clients" deux sous-dossiers nommés "Facture" et "Devis", il te suffit de récupérer le choix fait en C2 pour terminer le chemin :

strPath = "C:\Users\Utilisateur\Desktop\clients\" & Worksheets("accueil").Range("C2").Value & "\"

Merci theze tu es genial

Ça fait 3 jours que j'essaie. J'avais réussi en parti a le faire mais avec des if mais en faisant repeter tout

le code 2 fois vu les 2 conditions.

J'aimerais te demander si possible une autre chose,

Je voudrais incrémenté un numéro de facture ou devis selon le choix en c2 de la feuille accueil et que ce numéro ne soit pas une accumulation de facture et devis , c'est a dire si je 'arrive par exemple a 5 devis ensuite je fais 3 facture et bien si je refais un devis ca repart à 6 et lorsque je fait facture ça repart a 4 .

J'espère avoir été clair. C'est pas facile à l'écrit d'expliquer.

Merci d'avance

J'ai oublié, l'incrementation se fera en e7 sur toute les feuilles saut "accueil"

Merci

Bonjour,

C'est au moment où tu crée ta facture ou devis qu'il te faut incrémenter mais comme je ne sais pas comment tu procèdes, difficile de t'aider avec le fichier que tu as posté où il n'y a aucune feuille concernant une devis ou une facture mais ce que tu peux faire, c'est d'utiliser deux cellules dans ta feuille "ressource", une pour les devis et une pour les factures que tu incrémentes avec une petite Sub(). Exemple pour la création d'un nouveau devis dont le numéro est stocké dans la cellule A1 de la feuille "ressource" :

Sub CreerDevis()

    Dim NumDevis As Long

    'appel de la sub pour l'incrémentation du devis
    IncrementDevis

    'récup. du numéro pour le nouveau devis
    NumDevis = Worksheets("ressource").Range("A1").Value

    'et inscription de ce dernier dans la cellule correspondante
    Worksheets("accueil").Range("E7").Value = NumDevis

    'suite du code !
    '...
    '...
    '...

End Sub

Sub IncrementDevis()

    With Worksheets("ressource")

        .Range("A1").Value = .Range("A1").Value + 1

    End With

End Sub

Sub IncrementFacture()

    With Worksheets("ressource")

        .Range("B1").Value = .Range("B1").Value + 1

    End With

End Sub

Si tu ne veux pas voir les numéros dans ta feuille "ressource" tu peux utiliser un "Nom" caché mais c'est un peu plus complexe !

Bonjour,

C'est au moment où tu crée ta facture ou devis qu'il te faut incrémenter mais comme je ne sais pas comment tu procèdes, difficile de t'aider avec le fichier que tu as posté où il n'y a aucune feuille concernant une devis ou une facture mais ce que tu peux faire, c'est d'utiliser deux cellules dans ta feuille "ressource", une pour les devis et une pour les factures que tu incrémentes avec une petite Sub(). Exemple pour la création d'un nouveau devis dont le numéro est stocké dans la cellule A1 de la feuille "ressource" :

Sub CreerDevis()

    Dim NumDevis As Long

    'appel de la sub pour l'incrémentation du devis
    IncrementDevis

    'récup. du numéro pour le nouveau devis
    NumDevis = Worksheets("ressource").Range("A1").Value

    'et inscription de ce dernier dans la cellule correspondante
    Worksheets("accueil").Range("E7").Value = NumDevis

    'suite du code !
    '...
    '...
    '...

End Sub

Sub IncrementDevis()

    With Worksheets("ressource")

        .Range("A1").Value = .Range("A1").Value + 1

    End With

End Sub

Sub IncrementFacture()

    With Worksheets("ressource")

        .Range("B1").Value = .Range("B1").Value + 1

    End With

End Sub

Si tu ne veux pas voir les numéros dans ta feuille "ressource" tu peux utiliser un "Nom" caché mais c'est un peu plus complexe !

bonjour

comment pourrais-je t'envoyer mon fichier original (non en public)

pour que tu vois exactement le problème?

merci

Rechercher des sujets similaires à "enregistrement chemin donne"