Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Vérifier si le dossier existe avant de le créer

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

matthieu2701

XLDnaute Occasionnel
Bonjour,

Je souhaite créer le dossier d'un client. A l'intérieur je mettrais différents fichiers word, pdf ...

J'ai réussi à créer le dossier avec une msgbox mais je n'arrive pas à arrêter la macro si le le dossier est déjà créé et à faire afficher une msgbox du style "Le dossier est déjà créé"

La macro s'appelle "Dossier" dans mon fichier.

Ne faites pas attention au chemin d'enregistrement du fichier. Il vous paraitra bizarre mais c'est normal car je vais mes tes sur Mac.

Merci par avance pour votre aide.
 
Dernière édition:
Re : Vérifier si le dossier existe avant de le créer

Re Philippe,

Est-il possible de me faire la vérification si le doc word (Macro exportword) "Nom Engagement de paiement" existe au moment de la création stp ?

Merci encore
 
Dernière édition:
Re : Vérifier si le dossier existe avant de le créer

Re - bonjour

au lieu de vérifier si le doc existe, tu peux gérer l'erreur au moment de la création à la manière des exemples donnés

il suffit de mettre en début de procédure:
Code:
Sub exportword()
On Error GoTo affichage
' ici la suite de la procédure
' ++++++++++++++++++++++++++
' ++++++++++++++++++++++++++
' ++++++++++++++++++++++++++
' ++++++++++++++++++++++++++
' ++++++++++++++++++++++++++
' ++++++++++++++++++++++++++
' ++++++++++++++++++++++++++
' ++++++++++++++++++++++++++
' ++++++++++++++++++++++++++
Exit Sub '  il est nécessaire d'ajouter cela  à l'avant-dernière ligne de la fin de la procédure existante juste avant le "End Sub"

' et ajouter en dessous ce qui suit
affichage:
ActiveSheet.Shapes("Label1").Visible = True
Application.Wait (Now + TimeValue("00:00:04"))
ActiveSheet.Shapes("Label1").Visible = False
' ou alors remplacer les 3 lignes précédentes par:  MsgBox("le message à faire passer")
End Sub '<--------- celui-là il ne faut pas l'oublier

à+
Philippe
 
Re : Vérifier si le dossier existe avant de le créer


Merci Philippe. Est-il possible que tu jète un oeil sur mes deux autres posts stp ?

https://www.excel-downloads.com/thr...enregistrement-dans-le-dossier-client.209373/

https://www.excel-downloads.com/threads/modifier-corps-du-mail-vba-en-html.209390/

Merci par avance.
 
Re : Vérifier si le dossier existe avant de le créer


Bonjour Philippe,

Je viens de tester.

Le message apparaît lorsque le document word est créé. S'il existe déjà, il remplace l'ancien et me remet le message que j'ai configuré et s'il avait pas été créé, il le cré et me met le message aussi.

Peux tu jeter un œil à mon code stp ?

Merci

PHP:
Sub exportword() 
Dim Tablo, Nom$, Chemin 
Dim WdApp As Object, WdDoc As Object 

On Error GoTo affichage 

If Range("H5").Value <= 10 Then 

'Nommer les cellules dans la feuille "Echéancier" 
With Sheets("Echéancier") 
    Tablo = .Range("A6:D10").Value 
    Ref = .Range("B1") 
    Nom = .Range("B2") 
    Dates = .Range("B4") 
    Adresse = .Range("B3") 
    Dette = .Range("D1") 
    Echéances = .Range("D2") 
    Début_DP = .Range("D3") 
End With 

'Chemin d'enregistrement de l'engagement de paiement 
Chemin = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours" & "\" & Nom & " " & Ref & "\" & Nom & " Engagement de Paiement" 

'Si les champs ne sont pas remplis affichier msgbox sinon éxécuter la suite 
If Adresse = "" Or Nom = "" Or Ref = "" Or Dette = "" Or Dates = "" Or Echéances = "" Or Début_DP = "" Then 
MsgBox "Veuillez compléter tous les champs avant de créer l'engagement de paiement.", vbOKOnly + vbCritical, "Attention" 
Exit Sub 
End If 

'Déclaration de l'utilisation de Word 
Set WdApp = CreateObject("Word.Application") 
'Word visible 
WdApp.Visible = True 
'indiquer le chemin du fichier modèle 
Set WdDoc = WdApp.Documents.Open(ThisWorkbook.Path & "\" & "Modele.doc") 
'Dans le Doc Word 
With WdDoc 
    With .Tables(2) 
        For I = 1 To UBound(Tablo, 1) 
        On Error Resume Next 
            .Columns(1).Cells(I + 1).Range.Text = CDate(Tablo(I, 1)) 
            .Columns(2).Cells(I + 1).Range.Text = FormatNumber(Tablo(I, 2), 2) 
            .Columns(3).Cells(I + 1).Range.Text = CDate(Tablo(I, 3)) 
            .Columns(4).Cells(I + 1).Range.Text = FormatNumber(Tablo(I, 4), 2) 
        Next 
    End With 
    'Signet dans Word 
    .bookmarks("Nom").Range.Text = Nom 
    .bookmarks("Dates").Range.Text = Dates 
    .bookmarks("Ref").Range.Text = Ref 
    .bookmarks("Adresse").Range.Text = Adresse 
    .bookmarks("Dette").Range.Text = FormatNumber(Dette, 2) 
    .SaveAs Filename:=Chemin, FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _ 
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _ 
        :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _ 
        SaveAsAOCELetter:=False 
    .Close True 
End With 

WdApp.Quit 
Set WdDoc = Nothing 
Set WdApp = Nothing 

Else 

With Sheets("Echéancier") 
    date1 = .Range("A6").Value 'Date début échéancier 
    montant1 = .Range("B6").Value 'Montant 1ere échéance 
    zone = Range("D6:D30") 
    date2 = .Range("G3").Value 'Avant dernière date de l'échéancier 
    date3 = .Range("G2") 'Dernière date de l'échéancier 
    montant2 = .Range("H2") 'Dernier montant de l'échéancier 
    Ref = .Range("B1") 'numéro IGOR 
    Nom = .Range("B2") 'Nom et Prénom 
    Dates = .Range("B4") 'Période de la PDD 
    Adresse = .Range("B3") 'Adresse du client 
    Dette = .Range("D1") 'Montant de la dette 
End With 

Chemin = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours" & "\" & Nom & " " & Ref & "\" & Nom & " Engagement de Paiement" 

Set WdApp = CreateObject("Word.Application") 
WdApp.Visible = True 
Set WdDoc = WdApp.Documents.Open(ThisWorkbook.Path & "\" & "Modele.doc") 'indiquer le chemin du fichier modèle 
With WdDoc 
    With .Tables(2) 
            .Columns(1).Cells(2).Range.Text = " du " & date1 & " au " & date2 
            .Columns(2).Cells(2).Range.Text = FormatNumber(montant1, 2) 
            .Columns(3).Cells(2).Range.Text = date3 
            .Columns(4).Cells(2).Range.Text = FormatNumber(montant2, 2) 
    End With 
    .bookmarks("Nom").Range.Text = Nom 
    .bookmarks("Dates").Range.Text = Dates 
    .bookmarks("Ref").Range.Text = Ref 
    .bookmarks("Adresse").Range.Text = Adresse 
    .bookmarks("Dette").Range.Text = FormatNumber(Dette, 2) 
    On Error Resume Next 
    .SaveAs Filename:=Chemin, FileFormat:= _
        wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _ 
        :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _ 
        :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _ 
        SaveAsAOCELetter:=False 
    'MsgBox "Erreur de dossier client" 
    .Close True 
End With 

WdApp.Quit 
Set WdDoc = Nothing 
Set WdApp = Nothing 

Application.StatusBar = "L'engagement de paiement de " & Nom & " a été créé." 
Application.Wait (Now + TimeValue("00:00:02")) 
Application.StatusBar = "" 
Exit Sub 
End If 

affichage: 
'ActiveSheet.Shapes("Label1").Visible = True 
'Application.Wait (Now + TimeValue("00:00:04")) 
'ActiveSheet.Shapes("Label1").Visible = False 
MsgBox "Soit : " & vbCrLf & vbCrLf & "- Le dossier numérique de " & Nom & " n'a pas été créé. Dans ce cas, veuillez le créer puis générer l'engagement de paiement." & vbCrLf & vbCrLf & "- L'engagement de paiement de " & Nom & " a déjà été généré. Si vous souhaitez le modifier, veuillez le supprimer du dossier numérique puis recommencer.", vbCritical, "Attention" 

End Sub
 
Dernière édition:
Re : Vérifier si le dossier existe avant de le créer

Re philippe.

Pouvez-vous vérifier svp ? J'aimerais que le message s'affiche que si le document est déjà créé. Et à la question de la msgbox "Voulez vous remplacer l'ancien". Si réponse "Oui", le remplacer, si réponse "Non", ne rien faire.

Merci
 
Re : Vérifier si le dossier existe avant de le créer

Bonjour le fil, salut matthieu2701

Perso, je mettrais le code après la création du chemin
Code:
' ....<
    'Chemin d'enregistrement de l'engagement de paiement    Chemin = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours" & "\" & Nom & " " & Ref & "" & Nom & " Engagement de Paiement"
    
    ' Vérifier si le fichier existe
    If Dir(Chemin) <> "" Then
      If MsgBox("Un document avec ce nom existe déjà, Voulez vous remplacer l'ancien ?", _
        vbQuestion + vbYesNo, "QUESTION ...") = vbNo Then Exit Sub
      ' Si la réponse est oui on supprime le fichier
      Kill Chemin
    End If


    'Si les champs ne sont pas remplis affichier msgbox sinon éxécuter la suite
    If Adresse = "" Or Nom = "" Or Ref = "" Or Dette = "" Or Dates = "" Or Echéances = "" Or Début_DP = "" Then
      MsgBox "Veuillez compléter tous les champs avant de créer l'engagement de paiement.", vbOKOnly + vbCritical, "Attention"
      Exit Sub
    End If
' > ....

A+
 
Re : Vérifier si le dossier existe avant de le créer

Bonjour,

Avant de lancer une Userform, il faut vérifier que le répertoire existe par la fonction Dir
Ci-joint ton fichier modifié pour utiliser les fonctions Dir, Mkdir et Chdir .. qui devraient aussi exister sur Mac.
Procédure : Sub Dossier_creation()

A+
Robert
 

Pièces jointes

Re : Vérifier si le dossier existe avant de le créer


Je viens de tester. J'ai une erreur sur ==> If Dir(Chemin, vbDirectory) = "" Then
 
Re : Vérifier si le dossier existe avant de le créer


J'ai tester aussi et j'ai le même problème qu'avec le ficheir de Herdet sur ==> If Dir(Chemin) <> "" Then
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…