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;-)
 

FROLLINDE

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

Ha oui.. il y a à faire...

a) Pour un client peut t'il y avoir plusieurs commande ?
b) Pour une commande peut t'il y avoir plusieurs installations
c) Il y a pas mal de référence à des listes (Validations de données) - ces listes peuvent surement évoluées et devraient être dans un classeur - Général.


A priori ..
Il serait judicieux d'avoir
Un fichier pour Création Client et permettant d'accéder aux clients créés
un classeur par client/commande
un classeur par clients/ commandes / installation

Ou sinon tout avoir en base de données dans un seul classeur.

Au delà de l'aspect technique je crains qu'il y ai d'abord un problème de spécification.
 

gilbert_RGI

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

Pour aider

Code:
Sub ParcourtDossier()
    Dim GestionFichier As New Scripting.FileSystemObject
    ' On commence par définir une variable de type Folder :
    Dim Dossier As Folder, res As String
    ' Cette boucle parcourt tous les dossiers
    For Each Dossier In GestionFichier.GetFolder(ThisWorkbook.Path & "\Dossiers clients" & "\").SubFolders
        ' On affiche le nom du dossier courant dans la fenêtre exécution :
        'Debug.Print Dossier.Name
        
        res = Left(Dossier.Name, 4)
        'MsgBox res & "     " & Sheets(1).Range("h4")
        If res = Sheets(1).Range("h4") Then MsgBox Dossier.Name
    Next
    Set GestionFichier = Nothing
End Sub

Dans l'exemple au dessus activer la référence microsoft scripting runtime
 
Dernière édition:

Pierl

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

Mes réponses:
a) Oui il peut-il y avoir plusieurs commandes mais leur nom sera différent, ne serait-ce que par la date qui va s'inscrire dans le nom
b) Potentiellement oui
c) J'ai supprimé mes listes de validation pour alléger le document mais elle sont dans le document original dans un autre onglet.

Ma demande à la base me semblait simple; juste archiver un document dans le bon dossier; Je ne pensais pas que résoudre poserait autant de difficulltés!:(
 

Pierl

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

Ok ça fonctionne! merci Gilbert;
J'ai compris la démarche.
Bon, ce n'est pas exactement ce que je vouais obtenir mais cela peut permettre de contourner la difficulté.

Merci et bonne soirée
 

gilbert_RGI

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

voilà pour la sauvegarde

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
    ActiveSheet.Unprotect
    IDclient = Sheets(1).Range("h4")
    nomclient = Sheets(1).Range("D8")
    LGidclient = Len(Sheets(1).Range("h4"))
    chemin = "\Dossiers clients\"
    ' Cette boucle parcourt tous les dossiers
    For Each Dossier In GestionFichier.GetFolder(ThisWorkbook.Path & chemin).SubFolders
        res = Left(Dossier.Name, LGidclient)
        If res = IDclient Then
            'sauvegarde du fichier Excel
            ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & chemin & Dossier.Name & "\" & Format(Date, "dd-mm-yy") & ".xlsm"
            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
    ActiveWorkbook.SaveAs Filename:=Creation & Format(Date, "dd-mm-yy") & ".xlsm"
    Set GestionFichier = Nothing
    ActiveSheet.Protect
End Sub
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
288

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 812
dernier inscrit
abdouami