Macro enregistrer sous... dans dossier spécifique

Pierl

XLDnaute Nouveau
Bonjour,
J'ai créé une macro permettant d'enregistrer une fiche de renseignements dans un dossier client à l'aide d'un bouton prévu à cet effet.
Ma macro va sauvegarder automatiquement mon document dans un dossier portant le numéro du client et son nom, contenus tous deux dans la fiche de renseignements. Cela fonctionne très bien tant que le nom est écrit exactement de la même manière.
C'est pourquoi je voudrais que la recherche du dossier s'opère uniquement sur le numéro à 4 chiffres du client, sans prendre en compte la manière dont le nom est écrit (ex. 1234 - Jambois Sarl: la recherche doit s'effectuer sur le numéro 1234).
Si quelqu'un peut m'aider. ..
D'avance merci;-)
 

Pierl

XLDnaute Nouveau
Re : Macro enregistrer sous... dans dossier spécifique

Bonjour Gilbert,
L'enregistrement s'effectue bien dans le dossier souhaité! Génial!
Il faut juste que je regarde si je peux le renommer selon le format que de mon fichier précédent (ex. DPV Jambois Sarl_5678 - 30-03-15);
Je vais encore faire quelques tests mais je crois que l'on est tout prêt du but.
Encore merci,
bonne soirée
(au fait, lorrain?)
Pierre
 

Pierl

XLDnaute Nouveau
Re : Macro enregistrer sous... dans dossier spécifique

bon, ben pour le moment j'ai pas réussi...
Dans votre fichier seule la date s'inscrit dans le nom et j'aurais voulu récupérer aussi le nom du client et son numéro. Possible?
 

gilbert_RGI

XLDnaute Barbatruc
Re : Macro enregistrer sous... dans dossier spécifique

Bonjour,

Pour avoir ce format

DPV Jambois Sarl_5678 - 30-03-15.xls

il faut modifier cette ligne (nomfichier = Format(Date, "dd-mm-yy") & ".xlsm") par celle-ci
nomfichier = "DPV " & nomclient & "_" & idclient & " - " & Format(Date, "dd-mm-yy") & ".xlsm"


chemin.jpg
cliquer sur cette image pour la voir

@ plus
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Macro enregistrer sous... dans dossier spécifique

voilà la macro complète copie /colle l'ensemble

Code:
Sub Save_DPV()
    Dim GestionFichier As New Scripting.FileSystemObject
    ' On commence par définir une variable de type Folder :
    Dim Dossier As Folder, res As String, IDclient As Integer, LGidclient As Integer, chemin As String
    Dim Creation As String
    Dim nomfichier As String
    modele = ThisWorkbook.Path & "\" & ThisWorkbook.Name
    ActiveSheet.Unprotect
    IDclient = Sheets(1).Range("h4")
    nomclient = Sheets(1).Range("D8").Value
    LGidclient = Len(Sheets(1).Range("h4"))
    nomfichier = "DPV " & nomclient & "_" & IDclient & " - " & Format(Date, "dd-mm-yy") & ".xlsm"
    chemin = "\Dossiers clients\"
      ' Cette boucle parcourt tous les dossiers
    For Each Dossier In GestionFichier.GetFolder(ThisWorkbook.Path & chemin).SubFolders
        res = Left(Dossier.Name, LGidclient)
        'MsgBox res & "   " & IDclient
        If res = IDclient Then
            'sauvegarde du fichier Excel
           ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & chemin & Dossier.Name & "\" & nomfichier
           Application.DisplayAlerts = False
           Workbooks(nomfichier).Close SaveChanges:=True
           Application.DisplayAlerts = True
            Set GestionFichier = Nothing
            Exit Sub
        End If
    Next
    ' si le dossier n'existe pas création
    Creation = ThisWorkbook.Path & chemin & IDclient & " - " & nomclient & "\"
    MkDir (Creation)
    'puis sauvegarde du fichier Excel
    ActiveSheet.Protect
  Workbook.SaveAs Filename:=Creation & nomfichier
   Application.DisplayAlerts = False
    Workbooks(nomfichier).Close SaveChanges:=True
   Application.DisplayAlerts = True
    Set GestionFichier = Nothing
End Sub
 

Pierl

XLDnaute Nouveau
Re : Macro enregistrer sous... dans dossier spécifique

Bonsoir Gilbert,
Impec, cette fois, l'enregistrement est bien nommé comme il faut;-)
le document se ferme à la fin de l'enregistrement, ce qui ne m’intéresse pas forcément dan mon cas.
Quelle code dois-je changer pour empêcher cela?
 

Pierl

XLDnaute Nouveau
Re : Macro enregistrer sous... dans dossier spécifique

Encore une remarque;
Si le numéro existe dans la liste, tout ce passe comme il faut; si le numéro n'existe pas, un dossier est bien créé automatiquement mais le fichier ne s'enregistre pas dedans et j'ai un code erreur qui s'affiche "erreur d'exécution '424' "?
 

gilbert_RGI

XLDnaute Barbatruc
Re : Macro enregistrer sous... dans dossier spécifique

salut

pour l'erreur de fonctionnement ajoute Active à la ligne

ActiveWorkbook.SaveAs Filename:=Creation & nomfichier


pour supprimer la fermeture du fichier

mets une ' devant les 2 lignes

'Workbooks(nomfichier).Close SaveChanges:=True

après cette intervention la ligne passe en couleur verte
comme ceci si un jour tu veux fermer de nouveau le fichier il suffit d'enlever cet apostrophe (rem ou remarque)

maintenant j'attends le résultat tests fait ;)
 

Pierl

XLDnaute Nouveau
Re : Macro enregistrer sous... dans dossier spécifique

Gilbert,
J'ai essayé d'adapter la macro à un autre document présentant de grandes similitudes avec ma fiche de renseignements.
J'ai modifié les noms, chemins... par contre quand je lance la macro, il détecte une erreur et m'affiche un message d'erreur (captures 1 et 2). Je n'arrive pas à en comprendre la cause?
 

Pièces jointes

  • Capture 1.jpg
    Capture 1.jpg
    51.6 KB · Affichages: 33
  • Capture 1.jpg
    Capture 1.jpg
    51.6 KB · Affichages: 38
  • Capture 1.jpg
    Capture 1.jpg
    51.6 KB · Affichages: 42
  • Capture 2.jpg
    Capture 2.jpg
    51 KB · Affichages: 27
  • Capture 2.jpg
    Capture 2.jpg
    51 KB · Affichages: 43
  • Capture 2.jpg
    Capture 2.jpg
    51 KB · Affichages: 41

Pierl

XLDnaute Nouveau
Re : Macro enregistrer sous... dans dossier spécifique

Bon, j'ai avancé, j'ai coché Microsoft scripting Runtime et ça marche. Déjà en local sur mon PC à la maison.
Maintenant il faut que j'essaie sur le Serveur de ma boite en adaptant le chemin; on avance, on avance...;-)
 

Pierl

XLDnaute Nouveau
Re : Macro enregistrer sous... dans dossier spécifique

Je crois que j'ai un problème de chemin en fait sur nos serveurs car mon fichier excel à sauvegarder n'est pas dans le même dossier que le dossier cible, et j'ai du mal à recréer le chemin.
J'ai un message d'erreur "Erreur d'exécution '76' Chemin d'accès introuvable".
Je pense qu'il doit il y avoir une erreur dans ces lignes, mais je n'arrive pas à trouver laquelle:

modele = ThisWorkbook.Path & "M:\" & ThisWorkbook.Name

chemin = "M:\Configuration clients"


(Pour info, mon fichier excel est dans 3 sous dossiers du lecteur M:)

???
 

gilbert_RGI

XLDnaute Barbatruc
Re : Macro enregistrer sous... dans dossier spécifique

salut

thisworkbook.path c'est le chemin du classeur actuel

pour voir ton chemin tu peux mettre une msgbox qui t'indiquera le résultat de la variable

ex : modele = ThisWorkbook.Path & "\" & ThisWorkbook.Name

Msgbox modele

te donnera comme résultat le chemin du classeur actuel plus le slache plus le nom et l'extension du classeur actuel
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Macro enregistrer sous... dans dossier spécifique

Maintenant si tu veux enregistrer sur le disque "M" dans le dossier "tartempion" ton fichier actuel

Msgbox "M:\" & "tartempion" & "\" & "le nom du fichier que tu veux enregistrer" & ".xlsm"
 

Discussions similaires

Réponses
3
Affichages
290

Statistiques des forums

Discussions
312 169
Messages
2 085 926
Membres
103 043
dernier inscrit
nouha nj