Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Vérification de l'existence d'un document

4 réponses
Avatar
Jocelyne
Bonjour à tous,

J’ai besoin d’aide sur la façon de personnaliser la fonction suivante qui
permet de vérifier si un document existe. Je n’arrive pas à la comprendre
complètement.

Private Function DocumentExisteDir(ByVal Chemin As String, _
ByVal NomDocument As String) As Boolean

If Dir(Chemin & NomDocument) = NomDocument Then
ICI ELLE NE S’ARRÊTE JAMAIS MÊME SI LE DOC EXISTE
DocumentExisteDir = True
End If
End Function
***********************************
Et voici ce que j’ai écrit et ce que je voudrais. Si le document existe, la
boîte de dialogue Enregistrer sous s’affiche. Sinon, enregistre le fichier.

Elle me retourne toujours Faux

If DocumentExisteDir(CheminPat & "\", DocEval) Then
With Dialogs(wdDialogFileSaveAs)
.Name = CheminPat & "\" & DocEval
.Show
End With
Else
ActiveDocument.SaveAs FileName:=CheminPat & "\" & DocEval
End If

Le nom du dossier ne contient pas le \.
Que j’ajoute \ ou non, il n’y a pas de différence dans le résultat.

Merci à l'avance de votre aide.
Jocelyne

4 réponses

Avatar
heureux-oli
Salut


Je viens de faire un test et chez moi, tout ou presque baigne.
J'ai mis un fichier a.docm dans le C:temp

Et lorsque j'appelle la fonction, elle me retourne bien True

*****************************************
Debug.Print DocumentExisteDir("c:temp", "a.docm")
*****************************************

Je ne sais pas ce qui coince.
Peut-être le contenu de tes variables, essaie de faire un debug.print ou
passer en mode pas à pas pour vérifier le déroulement.
--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Jocelyne" a écrit dans le message de
news:
Bonjour à tous,

J'ai besoin d'aide sur la façon de personnaliser la fonction suivante qui
permet de vérifier si un document existe. Je n'arrive pas à la comprendre
complètement.

Private Function DocumentExisteDir(ByVal Chemin As String, _
ByVal NomDocument As String) As Boolean

If Dir(Chemin & NomDocument) = NomDocument Then
ICI ELLE NE S'ARRÊTE JAMAIS MÊME SI LE DOC EXISTE
DocumentExisteDir = True
End If
End Function
***********************************
Et voici ce que j'ai écrit et ce que je voudrais. Si le document existe,
la
boîte de dialogue Enregistrer sous s'affiche. Sinon, enregistre le
fichier.

Elle me retourne toujours Faux

If DocumentExisteDir(CheminPat & "", DocEval) Then
With Dialogs(wdDialogFileSaveAs)
.Name = CheminPat & "" & DocEval
.Show
End With
Else
ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
End If

Le nom du dossier ne contient pas le .
Que j'ajoute ou non, il n'y a pas de différence dans le résultat.

Merci à l'avance de votre aide.
Jocelyne


Avatar
Jocelyne
Bonjour Heureux-oli,

Dans mes tests, je me suis aperçue que, utilisées comme tel, les
instructions fonctionnaient bien. Alors, c'est probablement une autre partie
de mes codes qui occasionne ce faux résultat probablement mes If conditions
car je fais aussi vérifier l'existence d'un dossier.

Voici donc une autre partie de mon programme. Si vous pouviez m'éclairer,
j'apprécierais beaucoup.

Function DossierExiste(NomDossier As String) As Boolean
'fonction pour vérifier l'existence d'un dossier
DossierExiste = Dir(NomDossier, vbDirectory) <> ""
End Function

****
If Response = vbCancel Then
MsgBox "Vous avez annulé l'opération.", vbExclamation
Exit Sub 'Arrete la procédure complète
Else
'Vérifie si le dossier existe déjà (a besoin de la fonction DossierExiste
placée plus haut)
'Si le dossier existe il enregistre le fichier. Sinon le dossier est créé
puis le fichier est enregistré
If DossierExiste(CheminPat) Then

'ici probleme pour détecter si le fichier existe
If DocumentExisteDir(CheminPat & "", DocEval) Then
With Dialogs(wdDialogFileSaveAs)
.Name = CheminPat & "" & DocEval
.Show
End With
Else
ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
End If

MsgBox "Le fichier a été enregistré."

Exit Sub

Else 'Si le dossier n'existe pas, il le crée et enregistre le fichier
MkDir CheminPat
ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
MsgBox "Le fichier a été enregistré."

End If
End If
End Sub

Jocelyne

"heureux-oli" a écrit :

Salut


Je viens de faire un test et chez moi, tout ou presque baigne.
J'ai mis un fichier a.docm dans le C:temp

Et lorsque j'appelle la fonction, elle me retourne bien True

*****************************************
Debug.Print DocumentExisteDir("c:temp", "a.docm")
*****************************************

Je ne sais pas ce qui coince.
Peut-être le contenu de tes variables, essaie de faire un debug.print ou
passer en mode pas à pas pour vérifier le déroulement.
--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Jocelyne" a écrit dans le message de
news:
> Bonjour à tous,
>
> J'ai besoin d'aide sur la façon de personnaliser la fonction suivante qui
> permet de vérifier si un document existe. Je n'arrive pas à la comprendre
> complètement.
>
> Private Function DocumentExisteDir(ByVal Chemin As String, _
> ByVal NomDocument As String) As Boolean
>
> If Dir(Chemin & NomDocument) = NomDocument Then
> ICI ELLE NE S'ARRÊTE JAMAIS MÊME SI LE DOC EXISTE
> DocumentExisteDir = True
> End If
> End Function
> ***********************************
> Et voici ce que j'ai écrit et ce que je voudrais. Si le document existe,
> la
> boîte de dialogue Enregistrer sous s'affiche. Sinon, enregistre le
> fichier.
>
> Elle me retourne toujours Faux
>
> If DocumentExisteDir(CheminPat & "", DocEval) Then
> With Dialogs(wdDialogFileSaveAs)
> .Name = CheminPat & "" & DocEval
> .Show
> End With
> Else
> ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
> End If
>
> Le nom du dossier ne contient pas le .
> Que j'ajoute ou non, il n'y a pas de différence dans le résultat.
>
> Merci à l'avance de votre aide.
> Jocelyne





Avatar
heureux-oli
Salut,

J'ai une très mauvaise nouvelle.
Ça fonctionne chez moi !

*******************************
Sub testJoc()

'Vérifie si le dossier existe déjà (a besoin de la fonction DossierExiste
'placée plus haut)
'Si le dossier existe il enregistre le fichier. Sinon le dossier est créé
'puis le fichier est enregistré
If DossierExiste("c:temp") Then

'ici probleme pour détecter si le fichier existe
If DocumentExisteDir("c:temp" & "", "a.docm") Then
MsgBox "OK1"
Else
MsgBox "OK2"
End If

MsgBox "Le fichier a été enregistré."

Exit Sub

Else 'Si le dossier n'existe pas, il le crée et enregistre le
fichier


MsgBox "Le fichier a été enregistré. 0000"

End If

End Sub

Private Function DocumentExisteDir(ByVal Chemin As String, _
ByVal NomDocument As String) As Boolean
If Dir(Chemin & NomDocument) = NomDocument Then
DocumentExisteDir = True

End If
End Function
************************************

--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Jocelyne" a écrit dans le message de
news:
Bonjour Heureux-oli,

Dans mes tests, je me suis aperçue que, utilisées comme tel, les
instructions fonctionnaient bien. Alors, c'est probablement une autre
partie
de mes codes qui occasionne ce faux résultat probablement mes If
conditions
car je fais aussi vérifier l'existence d'un dossier.

Voici donc une autre partie de mon programme. Si vous pouviez m'éclairer,
j'apprécierais beaucoup.

Function DossierExiste(NomDossier As String) As Boolean
'fonction pour vérifier l'existence d'un dossier
DossierExiste = Dir(NomDossier, vbDirectory) <> ""
End Function

****
If Response = vbCancel Then
MsgBox "Vous avez annulé l'opération.", vbExclamation
Exit Sub 'Arrete la procédure complète
Else
'Vérifie si le dossier existe déjà (a besoin de la fonction DossierExiste
placée plus haut)
'Si le dossier existe il enregistre le fichier. Sinon le dossier est créé
puis le fichier est enregistré
If DossierExiste(CheminPat) Then

'ici probleme pour détecter si le fichier existe
If DocumentExisteDir(CheminPat & "", DocEval) Then
With Dialogs(wdDialogFileSaveAs)
.Name = CheminPat & "" & DocEval
.Show
End With
Else
ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
End If

MsgBox "Le fichier a été enregistré."

Exit Sub

Else 'Si le dossier n'existe pas, il le crée et enregistre le
fichier
MkDir CheminPat
ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
MsgBox "Le fichier a été enregistré."

End If
End If
End Sub

Jocelyne

"heureux-oli" a écrit :

Salut


Je viens de faire un test et chez moi, tout ou presque baigne.
J'ai mis un fichier a.docm dans le C:temp

Et lorsque j'appelle la fonction, elle me retourne bien True

*****************************************
Debug.Print DocumentExisteDir("c:temp", "a.docm")
*****************************************

Je ne sais pas ce qui coince.
Peut-être le contenu de tes variables, essaie de faire un debug.print ou
passer en mode pas à pas pour vérifier le déroulement.
--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Jocelyne" a écrit dans le message
de
news:
> Bonjour à tous,
>
> J'ai besoin d'aide sur la façon de personnaliser la fonction suivante
> qui
> permet de vérifier si un document existe. Je n'arrive pas à la
> comprendre
> complètement.
>
> Private Function DocumentExisteDir(ByVal Chemin As String, _
> ByVal NomDocument As String) As Boolean
>
> If Dir(Chemin & NomDocument) = NomDocument Then
> ICI ELLE NE S'ARRÊTE JAMAIS MÊME SI LE DOC EXISTE
> DocumentExisteDir = True
> End If
> End Function
> ***********************************
> Et voici ce que j'ai écrit et ce que je voudrais. Si le document
> existe,
> la
> boîte de dialogue Enregistrer sous s'affiche. Sinon, enregistre le
> fichier.
>
> Elle me retourne toujours Faux
>
> If DocumentExisteDir(CheminPat & "", DocEval) Then
> With Dialogs(wdDialogFileSaveAs)
> .Name = CheminPat & "" & DocEval
> .Show
> End With
> Else
> ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
> End If
>
> Le nom du dossier ne contient pas le .
> Que j'ajoute ou non, il n'y a pas de différence dans le résultat.
>
> Merci à l'avance de votre aide.
> Jocelyne







Avatar
Jocelyne
Bonjour Heureux-oli,

Lorsque j'ai vu votre message, j'étais découragée car moi aussi mes tests
fonctionnaient lorsque je prenais une seule partie du programme avec des noms
de dossiers et de documents.

Finalement, après des jours d'acharnement, j'ai trouvé ce qui occasionnait
l'erreur.

Étant donné que dans le programme, tous les noms de fichier et de dossiers
sont conçus de variables, il est facile de manquer un ou une extension.

En refaisant le programme bout par bout avec plein de debug.print, j'ai pu
constater que la variable composant mon fichier ne contenait pas l'extension
.doc. J'avais pensé à ajouter le final pour le chemin du dossier mais pas
le .doc.

De là l'importance de ne pas oublier les détails.

Merci de m'avoir aidé en faisant des essais.

Jocelyne

"heureux-oli" a écrit :

Salut,

J'ai une très mauvaise nouvelle.
Ça fonctionne chez moi !

*******************************
Sub testJoc()

'Vérifie si le dossier existe déjà (a besoin de la fonction DossierExiste
'placée plus haut)
'Si le dossier existe il enregistre le fichier. Sinon le dossier est créé
'puis le fichier est enregistré
If DossierExiste("c:temp") Then

'ici probleme pour détecter si le fichier existe
If DocumentExisteDir("c:temp" & "", "a.docm") Then
MsgBox "OK1"
Else
MsgBox "OK2"
End If

MsgBox "Le fichier a été enregistré."

Exit Sub

Else 'Si le dossier n'existe pas, il le crée et enregistre le
fichier


MsgBox "Le fichier a été enregistré. 0000"

End If

End Sub

Private Function DocumentExisteDir(ByVal Chemin As String, _
ByVal NomDocument As String) As Boolean
If Dir(Chemin & NomDocument) = NomDocument Then
DocumentExisteDir = True

End If
End Function
************************************

--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/

----------------------------------------------------------------------------------

"Jocelyne" a écrit dans le message de
news:
> Bonjour Heureux-oli,
>
> Dans mes tests, je me suis aperçue que, utilisées comme tel, les
> instructions fonctionnaient bien. Alors, c'est probablement une autre
> partie
> de mes codes qui occasionne ce faux résultat probablement mes If
> conditions
> car je fais aussi vérifier l'existence d'un dossier.
>
> Voici donc une autre partie de mon programme. Si vous pouviez m'éclairer,
> j'apprécierais beaucoup.
>
> Function DossierExiste(NomDossier As String) As Boolean
> 'fonction pour vérifier l'existence d'un dossier
> DossierExiste = Dir(NomDossier, vbDirectory) <> ""
> End Function
>
> ****
> If Response = vbCancel Then
> MsgBox "Vous avez annulé l'opération.", vbExclamation
> Exit Sub 'Arrete la procédure complète
> Else
> 'Vérifie si le dossier existe déjà (a besoin de la fonction DossierExiste
> placée plus haut)
> 'Si le dossier existe il enregistre le fichier. Sinon le dossier est créé
> puis le fichier est enregistré
> If DossierExiste(CheminPat) Then
>
> 'ici probleme pour détecter si le fichier existe
> If DocumentExisteDir(CheminPat & "", DocEval) Then
> With Dialogs(wdDialogFileSaveAs)
> .Name = CheminPat & "" & DocEval
> .Show
> End With
> Else
> ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
> End If
>
> MsgBox "Le fichier a été enregistré."
>
> Exit Sub
>
> Else 'Si le dossier n'existe pas, il le crée et enregistre le
> fichier
> MkDir CheminPat
> ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
> MsgBox "Le fichier a été enregistré."
>
> End If
> End If
> End Sub
>
> Jocelyne
>
> "heureux-oli" a écrit :
>
>> Salut
>>
>>
>> Je viens de faire un test et chez moi, tout ou presque baigne.
>> J'ai mis un fichier a.docm dans le C:temp
>>
>> Et lorsque j'appelle la fonction, elle me retourne bien True
>>
>> *****************************************
>> Debug.Print DocumentExisteDir("c:temp", "a.docm")
>> *****************************************
>>
>> Je ne sais pas ce qui coince.
>> Peut-être le contenu de tes variables, essaie de faire un debug.print ou
>> passer en mode pas à pas pour vérifier le déroulement.
>> --
>> Heureux-oli
>> Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
>> http://heureuxoli.developpez.com/
>> http://word.developpez.com/
>>
>> ----------------------------------------------------------------------------------
>>
>> "Jocelyne" a écrit dans le message
>> de
>> news:
>> > Bonjour à tous,
>> >
>> > J'ai besoin d'aide sur la façon de personnaliser la fonction suivante
>> > qui
>> > permet de vérifier si un document existe. Je n'arrive pas à la
>> > comprendre
>> > complètement.
>> >
>> > Private Function DocumentExisteDir(ByVal Chemin As String, _
>> > ByVal NomDocument As String) As Boolean
>> >
>> > If Dir(Chemin & NomDocument) = NomDocument Then
>> > ICI ELLE NE S'ARRÊTE JAMAIS MÊME SI LE DOC EXISTE
>> > DocumentExisteDir = True
>> > End If
>> > End Function
>> > ***********************************
>> > Et voici ce que j'ai écrit et ce que je voudrais. Si le document
>> > existe,
>> > la
>> > boîte de dialogue Enregistrer sous s'affiche. Sinon, enregistre le
>> > fichier.
>> >
>> > Elle me retourne toujours Faux
>> >
>> > If DocumentExisteDir(CheminPat & "", DocEval) Then
>> > With Dialogs(wdDialogFileSaveAs)
>> > .Name = CheminPat & "" & DocEval
>> > .Show
>> > End With
>> > Else
>> > ActiveDocument.SaveAs FileName:=CheminPat & "" & DocEval
>> > End If
>> >
>> > Le nom du dossier ne contient pas le .
>> > Que j'ajoute ou non, il n'y a pas de différence dans le résultat.
>> >
>> > Merci à l'avance de votre aide.
>> > Jocelyne
>>
>>
>>