Bonjour à tous,
Je suis débutante en VBA et je tente de créer une macro qui permet de créer
un dossier si celui-ci n'existe pas et ne fais rien si le dossier existe.
Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas mais
pas en ce qui concerne la partie si le dossier existe.
Voici une partie de la macro.
'Annonce la création du dossier avec la possibilité de canceller l'action
Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
" " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
vbOKCancel, "Création du dossier")
If Response = vbCancel Then
MsgBox "Vous avez annulé la création du dossier.", vbExclamation
Exit Sub 'Arrete la procédure complète
Else
'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
termine.
If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) =
vbNullString Then
'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase)
& " " & Format(DateNaisRep, "yyyy-mm-dd"))
Else
'Le dossier existe alors
MsgBox ("Le dossier existe déjà. Vérifiez les données" _
& " dans le formulaire et recommencez.")
Exit Sub
End If
End If
********
Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche dans
la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours déjà
que j'essaie de trouver la logique mais je ne vois plus clair.
Merci de votre aide.
Bonjour à tous,
Je suis débutante en VBA et je tente de créer une macro qui permet de créer
un dossier si celui-ci n'existe pas et ne fais rien si le dossier existe.
Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas mais
pas en ce qui concerne la partie si le dossier existe.
Voici une partie de la macro.
'Annonce la création du dossier avec la possibilité de canceller l'action
Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
" " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
vbOKCancel, "Création du dossier")
If Response = vbCancel Then
MsgBox "Vous avez annulé la création du dossier.", vbExclamation
Exit Sub 'Arrete la procédure complète
Else
'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
termine.
If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) =
vbNullString Then
'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase)
& " " & Format(DateNaisRep, "yyyy-mm-dd"))
Else
'Le dossier existe alors
MsgBox ("Le dossier existe déjà. Vérifiez les données" _
& " dans le formulaire et recommencez.")
Exit Sub
End If
End If
********
Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche dans
la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours déjà
que j'essaie de trouver la logique mais je ne vois plus clair.
Merci de votre aide.
Bonjour à tous,
Je suis débutante en VBA et je tente de créer une macro qui permet de créer
un dossier si celui-ci n'existe pas et ne fais rien si le dossier existe.
Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas mais
pas en ce qui concerne la partie si le dossier existe.
Voici une partie de la macro.
'Annonce la création du dossier avec la possibilité de canceller l'action
Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
" " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
vbOKCancel, "Création du dossier")
If Response = vbCancel Then
MsgBox "Vous avez annulé la création du dossier.", vbExclamation
Exit Sub 'Arrete la procédure complète
Else
'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
termine.
If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) =
vbNullString Then
'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase)
& " " & Format(DateNaisRep, "yyyy-mm-dd"))
Else
'Le dossier existe alors
MsgBox ("Le dossier existe déjà. Vérifiez les données" _
& " dans le formulaire et recommencez.")
Exit Sub
End If
End If
********
Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche dans
la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours déjà
que j'essaie de trouver la logique mais je ne vois plus clair.
Merci de votre aide.
Bonjour
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
> Bonjour à tous,
>
> Je suis débutante en VBA et je tente de créer une macro qui permet de créer
> un dossier si celui-ci n'existe pas et ne fais rien si le dossier existe.
>
> Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas mais
> pas en ce qui concerne la partie si le dossier existe.
>
> Voici une partie de la macro.
>
> 'Annonce la création du dossier avec la possibilité de canceller l'action
> Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
> vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
> " " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
> vbOKCancel, "Création du dossier")
>
> If Response = vbCancel Then
> MsgBox "Vous avez annulé la création du dossier.", vbExclamation
> Exit Sub 'Arrete la procédure complète
> Else
> 'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
> termine.
> If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
> vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) =
> vbNullString Then
>
> 'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
> DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
> MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase)
> & " " & Format(DateNaisRep, "yyyy-mm-dd"))
>
> Else
> 'Le dossier existe alors
> MsgBox ("Le dossier existe déjà. Vérifiez les données" _
> & " dans le formulaire et recommencez.")
> Exit Sub
>
> End If
> End If
>
> ********
> Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche dans
> la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours déjà
> que j'essaie de trouver la logique mais je ne vois plus clair.
>
> Merci de votre aide.
C'est le vbNullString, il faut mettre "", ce qui n'est pas la même
chose.
Et si je peux me permettre un conseil, utilisez des variables
instermédiaires comme :
Dim NomRep As string
NomRep = Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
vbProperCase & " " & Format(DateNaisRep, "yyyy-mm-dd")
debug.print "Nom du dossier " & NomRep
If Dir$(NomRep) , vbDirectory) = "" then
'Le dossier n'existe pas a
MkDir NomRep
Else
'Le dossier existe alors
MsgBox ("Le dossier " & nomrep " &existe déjà. Vérifiez les
données" _
& " dans le formulaire et recommencez.")
Exit Sub
End If
C'est plus fiable et plus facilie à déboguer et maintenir (utilisation
du debug.print).
--
A+
Bonjour
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
> Bonjour à tous,
>
> Je suis débutante en VBA et je tente de créer une macro qui permet de créer
> un dossier si celui-ci n'existe pas et ne fais rien si le dossier existe.
>
> Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas mais
> pas en ce qui concerne la partie si le dossier existe.
>
> Voici une partie de la macro.
>
> 'Annonce la création du dossier avec la possibilité de canceller l'action
> Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
> vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
> " " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
> vbOKCancel, "Création du dossier")
>
> If Response = vbCancel Then
> MsgBox "Vous avez annulé la création du dossier.", vbExclamation
> Exit Sub 'Arrete la procédure complète
> Else
> 'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
> termine.
> If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
> vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) =
> vbNullString Then
>
> 'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
> DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
> MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase)
> & " " & Format(DateNaisRep, "yyyy-mm-dd"))
>
> Else
> 'Le dossier existe alors
> MsgBox ("Le dossier existe déjà. Vérifiez les données" _
> & " dans le formulaire et recommencez.")
> Exit Sub
>
> End If
> End If
>
> ********
> Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche dans
> la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours déjà
> que j'essaie de trouver la logique mais je ne vois plus clair.
>
> Merci de votre aide.
C'est le vbNullString, il faut mettre "", ce qui n'est pas la même
chose.
Et si je peux me permettre un conseil, utilisez des variables
instermédiaires comme :
Dim NomRep As string
NomRep = Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
vbProperCase & " " & Format(DateNaisRep, "yyyy-mm-dd")
debug.print "Nom du dossier " & NomRep
If Dir$(NomRep) , vbDirectory) = "" then
'Le dossier n'existe pas a
MkDir NomRep
Else
'Le dossier existe alors
MsgBox ("Le dossier " & nomrep " &existe déjà. Vérifiez les
données" _
& " dans le formulaire et recommencez.")
Exit Sub
End If
C'est plus fiable et plus facilie à déboguer et maintenir (utilisation
du debug.print).
--
A+
Bonjour
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
> Bonjour à tous,
>
> Je suis débutante en VBA et je tente de créer une macro qui permet de créer
> un dossier si celui-ci n'existe pas et ne fais rien si le dossier existe.
>
> Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas mais
> pas en ce qui concerne la partie si le dossier existe.
>
> Voici une partie de la macro.
>
> 'Annonce la création du dossier avec la possibilité de canceller l'action
> Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
> vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
> " " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
> vbOKCancel, "Création du dossier")
>
> If Response = vbCancel Then
> MsgBox "Vous avez annulé la création du dossier.", vbExclamation
> Exit Sub 'Arrete la procédure complète
> Else
> 'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
> termine.
> If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
> vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) =
> vbNullString Then
>
> 'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
> DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
> MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep, vbProperCase)
> & " " & Format(DateNaisRep, "yyyy-mm-dd"))
>
> Else
> 'Le dossier existe alors
> MsgBox ("Le dossier existe déjà. Vérifiez les données" _
> & " dans le formulaire et recommencez.")
> Exit Sub
>
> End If
> End If
>
> ********
> Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche dans
> la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours déjà
> que j'essaie de trouver la logique mais je ne vois plus clair.
>
> Merci de votre aide.
C'est le vbNullString, il faut mettre "", ce qui n'est pas la même
chose.
Et si je peux me permettre un conseil, utilisez des variables
instermédiaires comme :
Dim NomRep As string
NomRep = Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
vbProperCase & " " & Format(DateNaisRep, "yyyy-mm-dd")
debug.print "Nom du dossier " & NomRep
If Dir$(NomRep) , vbDirectory) = "" then
'Le dossier n'existe pas a
MkDir NomRep
Else
'Le dossier existe alors
MsgBox ("Le dossier " & nomrep " &existe déjà. Vérifiez les
données" _
& " dans le formulaire et recommencez.")
Exit Sub
End If
C'est plus fiable et plus facilie à déboguer et maintenir (utilisation
du debug.print).
--
A+
J'ai une autre macro qui utilise le contenu des mêmes variables NomRep,
PrenomRep, etc. pour créer le nom du fichier.
J'ai lu qu'on pouvait mettre des variables publiques pour pouvoir les
utiliser dans plusieurs procédures. J'ai essayé mais je n'arrive pas à
comprendre comment faire.
1. J'ai essayé en mettant les variables dans la zone de déclarations.
2. J'ai essayé aussi en mettant static lors de la déclarations.
J'ai une autre macro qui utilise le contenu des mêmes variables NomRep,
PrenomRep, etc. pour créer le nom du fichier.
J'ai lu qu'on pouvait mettre des variables publiques pour pouvoir les
utiliser dans plusieurs procédures. J'ai essayé mais je n'arrive pas à
comprendre comment faire.
1. J'ai essayé en mettant les variables dans la zone de déclarations.
2. J'ai essayé aussi en mettant static lors de la déclarations.
J'ai une autre macro qui utilise le contenu des mêmes variables NomRep,
PrenomRep, etc. pour créer le nom du fichier.
J'ai lu qu'on pouvait mettre des variables publiques pour pouvoir les
utiliser dans plusieurs procédures. J'ai essayé mais je n'arrive pas à
comprendre comment faire.
1. J'ai essayé en mettant les variables dans la zone de déclarations.
2. J'ai essayé aussi en mettant static lors de la déclarations.
Merci beaucoup Geo de vos conseils.
J'ai remplacé l'instruction vbNullString par des "" mais ça ne
fonctionnait
toujours pas. Alors, j'ai suivi vos conseils sur l'utilisation de
variables
intermédiaires et ça fonctionne très bien.
Est-ce que je peux me permettre une autre question?
J'ai une autre macro qui utilise le contenu des mêmes variables NomRep,
PrenomRep, etc. pour créer le nom du fichier.
J'ai lu qu'on pouvait mettre des variables publiques pour pouvoir les
utiliser dans plusieurs procédures. J'ai essayé mais je n'arrive pas à
comprendre comment faire.
1. J'ai essayé en mettant les variables dans la zone de déclarations.
2. J'ai essayé aussi en mettant static lors de la déclarations.
Il y a quelque chose que j'ignore pour obtenir le bon résultat. Alors,
pour
la macro je répète toutes les mêmes instructions pour obtenir mes
variables.
Encore une fois merci.
Jocelyne
"Geo" a écrit :Bonjour
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
> Bonjour à tous,
>
> Je suis débutante en VBA et je tente de créer une macro qui permet de
> créer
> un dossier si celui-ci n'existe pas et ne fais rien si le dossier
> existe.
>
> Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas
> mais
> pas en ce qui concerne la partie si le dossier existe.
>
> Voici une partie de la macro.
>
> 'Annonce la création du dossier avec la possibilité de canceller
> l'action
> Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
> vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
> " " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
> vbOKCancel, "Création du dossier")
>
> If Response = vbCancel Then
> MsgBox "Vous avez annulé la création du dossier.", vbExclamation
> Exit Sub 'Arrete la procédure complète
> Else
> 'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
> termine.
> If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
> vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) >> > vbNullString Then
>
> 'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
> DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
> MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
> vbProperCase)
> & " " & Format(DateNaisRep, "yyyy-mm-dd"))
>
> Else
> 'Le dossier existe alors
> MsgBox ("Le dossier existe déjà. Vérifiez les données" _
> & " dans le formulaire et recommencez.")
> Exit Sub
>
> End If
> End If
>
> ********
> Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche
> dans
> la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours
> déjà
> que j'essaie de trouver la logique mais je ne vois plus clair.
>
> Merci de votre aide.
C'est le vbNullString, il faut mettre "", ce qui n'est pas la même
chose.
Et si je peux me permettre un conseil, utilisez des variables
instermédiaires comme :
Dim NomRep As string
NomRep = Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
vbProperCase & " " & Format(DateNaisRep, "yyyy-mm-dd")
debug.print "Nom du dossier " & NomRep
If Dir$(NomRep) , vbDirectory) = "" then
'Le dossier n'existe pas a
MkDir NomRep
Else
'Le dossier existe alors
MsgBox ("Le dossier " & nomrep " &existe déjà. Vérifiez les
données" _
& " dans le formulaire et recommencez.")
Exit Sub
End If
C'est plus fiable et plus facilie à déboguer et maintenir (utilisation
du debug.print).
--
A+
Merci beaucoup Geo de vos conseils.
J'ai remplacé l'instruction vbNullString par des "" mais ça ne
fonctionnait
toujours pas. Alors, j'ai suivi vos conseils sur l'utilisation de
variables
intermédiaires et ça fonctionne très bien.
Est-ce que je peux me permettre une autre question?
J'ai une autre macro qui utilise le contenu des mêmes variables NomRep,
PrenomRep, etc. pour créer le nom du fichier.
J'ai lu qu'on pouvait mettre des variables publiques pour pouvoir les
utiliser dans plusieurs procédures. J'ai essayé mais je n'arrive pas à
comprendre comment faire.
1. J'ai essayé en mettant les variables dans la zone de déclarations.
2. J'ai essayé aussi en mettant static lors de la déclarations.
Il y a quelque chose que j'ignore pour obtenir le bon résultat. Alors,
pour
la macro je répète toutes les mêmes instructions pour obtenir mes
variables.
Encore une fois merci.
Jocelyne
"Geo" a écrit :
Bonjour
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
> Bonjour à tous,
>
> Je suis débutante en VBA et je tente de créer une macro qui permet de
> créer
> un dossier si celui-ci n'existe pas et ne fais rien si le dossier
> existe.
>
> Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas
> mais
> pas en ce qui concerne la partie si le dossier existe.
>
> Voici une partie de la macro.
>
> 'Annonce la création du dossier avec la possibilité de canceller
> l'action
> Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
> vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
> " " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
> vbOKCancel, "Création du dossier")
>
> If Response = vbCancel Then
> MsgBox "Vous avez annulé la création du dossier.", vbExclamation
> Exit Sub 'Arrete la procédure complète
> Else
> 'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
> termine.
> If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
> vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) >> > vbNullString Then
>
> 'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
> DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
> MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
> vbProperCase)
> & " " & Format(DateNaisRep, "yyyy-mm-dd"))
>
> Else
> 'Le dossier existe alors
> MsgBox ("Le dossier existe déjà. Vérifiez les données" _
> & " dans le formulaire et recommencez.")
> Exit Sub
>
> End If
> End If
>
> ********
> Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche
> dans
> la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours
> déjà
> que j'essaie de trouver la logique mais je ne vois plus clair.
>
> Merci de votre aide.
C'est le vbNullString, il faut mettre "", ce qui n'est pas la même
chose.
Et si je peux me permettre un conseil, utilisez des variables
instermédiaires comme :
Dim NomRep As string
NomRep = Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
vbProperCase & " " & Format(DateNaisRep, "yyyy-mm-dd")
debug.print "Nom du dossier " & NomRep
If Dir$(NomRep) , vbDirectory) = "" then
'Le dossier n'existe pas a
MkDir NomRep
Else
'Le dossier existe alors
MsgBox ("Le dossier " & nomrep " &existe déjà. Vérifiez les
données" _
& " dans le formulaire et recommencez.")
Exit Sub
End If
C'est plus fiable et plus facilie à déboguer et maintenir (utilisation
du debug.print).
--
A+
Merci beaucoup Geo de vos conseils.
J'ai remplacé l'instruction vbNullString par des "" mais ça ne
fonctionnait
toujours pas. Alors, j'ai suivi vos conseils sur l'utilisation de
variables
intermédiaires et ça fonctionne très bien.
Est-ce que je peux me permettre une autre question?
J'ai une autre macro qui utilise le contenu des mêmes variables NomRep,
PrenomRep, etc. pour créer le nom du fichier.
J'ai lu qu'on pouvait mettre des variables publiques pour pouvoir les
utiliser dans plusieurs procédures. J'ai essayé mais je n'arrive pas à
comprendre comment faire.
1. J'ai essayé en mettant les variables dans la zone de déclarations.
2. J'ai essayé aussi en mettant static lors de la déclarations.
Il y a quelque chose que j'ignore pour obtenir le bon résultat. Alors,
pour
la macro je répète toutes les mêmes instructions pour obtenir mes
variables.
Encore une fois merci.
Jocelyne
"Geo" a écrit :Bonjour
[Réponse faite sur le forum public Word :
news://msnews.microsoft.com/ microsoft.public.fr.word ]
> Bonjour à tous,
>
> Je suis débutante en VBA et je tente de créer une macro qui permet de
> créer
> un dossier si celui-ci n'existe pas et ne fais rien si le dossier
> existe.
>
> Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas
> mais
> pas en ce qui concerne la partie si le dossier existe.
>
> Voici une partie de la macro.
>
> 'Annonce la création du dossier avec la possibilité de canceller
> l'action
> Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
> vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
> " " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
> vbOKCancel, "Création du dossier")
>
> If Response = vbCancel Then
> MsgBox "Vous avez annulé la création du dossier.", vbExclamation
> Exit Sub 'Arrete la procédure complète
> Else
> 'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
> termine.
> If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
> vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) >> > vbNullString Then
>
> 'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
> DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
> MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
> vbProperCase)
> & " " & Format(DateNaisRep, "yyyy-mm-dd"))
>
> Else
> 'Le dossier existe alors
> MsgBox ("Le dossier existe déjà. Vérifiez les données" _
> & " dans le formulaire et recommencez.")
> Exit Sub
>
> End If
> End If
>
> ********
> Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche
> dans
> la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours
> déjà
> que j'essaie de trouver la logique mais je ne vois plus clair.
>
> Merci de votre aide.
C'est le vbNullString, il faut mettre "", ce qui n'est pas la même
chose.
Et si je peux me permettre un conseil, utilisez des variables
instermédiaires comme :
Dim NomRep As string
NomRep = Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
vbProperCase & " " & Format(DateNaisRep, "yyyy-mm-dd")
debug.print "Nom du dossier " & NomRep
If Dir$(NomRep) , vbDirectory) = "" then
'Le dossier n'existe pas a
MkDir NomRep
Else
'Le dossier existe alors
MsgBox ("Le dossier " & nomrep " &existe déjà. Vérifiez les
données" _
& " dans le formulaire et recommencez.")
Exit Sub
End If
C'est plus fiable et plus facilie à déboguer et maintenir (utilisation
du debug.print).
--
A+
Salut,
Je vais te donner un lien vers un tuto sur la déclaration des variables et
leur durée de vie.
http://heureuxoli.developpez.com/office/word/vba-all/
http://heureuxoli.developpez.com/office/word/vba-all/?page=page5
Pardon Geo.
Aie pas sur la tête.
--
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:
> Merci beaucoup Geo de vos conseils.
>
> J'ai remplacé l'instruction vbNullString par des "" mais ça ne
> fonctionnait
> toujours pas. Alors, j'ai suivi vos conseils sur l'utilisation de
> variables
> intermédiaires et ça fonctionne très bien.
>
> Est-ce que je peux me permettre une autre question?
>
> J'ai une autre macro qui utilise le contenu des mêmes variables NomRep,
> PrenomRep, etc. pour créer le nom du fichier.
>
> J'ai lu qu'on pouvait mettre des variables publiques pour pouvoir les
> utiliser dans plusieurs procédures. J'ai essayé mais je n'arrive pas à
> comprendre comment faire.
>
> 1. J'ai essayé en mettant les variables dans la zone de déclarations.
> 2. J'ai essayé aussi en mettant static lors de la déclarations.
>
> Il y a quelque chose que j'ignore pour obtenir le bon résultat. Alors,
> pour
> la macro je répète toutes les mêmes instructions pour obtenir mes
> variables.
>
> Encore une fois merci.
>
> Jocelyne
>
> "Geo" a écrit :
>
>> Bonjour
>> [Réponse faite sur le forum public Word :
>> news://msnews.microsoft.com/ microsoft.public.fr.word ]
>> > Bonjour à tous,
>> >
>> > Je suis débutante en VBA et je tente de créer une macro qui permet de
>> > créer
>> > un dossier si celui-ci n'existe pas et ne fais rien si le dossier
>> > existe.
>> >
>> > Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas
>> > mais
>> > pas en ce qui concerne la partie si le dossier existe.
>> >
>> > Voici une partie de la macro.
>> >
>> > 'Annonce la création du dossier avec la possibilité de canceller
>> > l'action
>> > Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
>> > vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
>> > " " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
>> > vbOKCancel, "Création du dossier")
>> >
>> > If Response = vbCancel Then
>> > MsgBox "Vous avez annulé la création du dossier.", vbExclamation
>> > Exit Sub 'Arrete la procédure complète
>> > Else
>> > 'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
>> > termine.
>> > If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
>> > vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) > >> > vbNullString Then
>> >
>> > 'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
>> > DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
>> > MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
>> > vbProperCase)
>> > & " " & Format(DateNaisRep, "yyyy-mm-dd"))
>> >
>> > Else
>> > 'Le dossier existe alors
>> > MsgBox ("Le dossier existe déjà. Vérifiez les données" _
>> > & " dans le formulaire et recommencez.")
>> > Exit Sub
>> >
>> > End If
>> > End If
>> >
>> > ********
>> > Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche
>> > dans
>> > la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours
>> > déjà
>> > que j'essaie de trouver la logique mais je ne vois plus clair.
>> >
>> > Merci de votre aide.
>>
>> C'est le vbNullString, il faut mettre "", ce qui n'est pas la même
>> chose.
>> Et si je peux me permettre un conseil, utilisez des variables
>> instermédiaires comme :
>>
>> Dim NomRep As string
>> NomRep = Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
>> vbProperCase & " " & Format(DateNaisRep, "yyyy-mm-dd")
>> debug.print "Nom du dossier " & NomRep
>> If Dir$(NomRep) , vbDirectory) = "" then
>> 'Le dossier n'existe pas a
>> MkDir NomRep
>>
>> Else
>> 'Le dossier existe alors
>> MsgBox ("Le dossier " & nomrep " &existe déjà. Vérifiez les
>> données" _
>> & " dans le formulaire et recommencez.")
>> Exit Sub
>> End If
>>
>> C'est plus fiable et plus facilie à déboguer et maintenir (utilisation
>> du debug.print).
>>
>> --
>> A+
>>
>>
>>
Salut,
Je vais te donner un lien vers un tuto sur la déclaration des variables et
leur durée de vie.
http://heureuxoli.developpez.com/office/word/vba-all/
http://heureuxoli.developpez.com/office/word/vba-all/?page=page5
Pardon Geo.
Aie pas sur la tête.
--
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" <Jocelyne@discussions.microsoft.com> a écrit dans le message de
news: 5EEBA42E-DB97-4CE0-A826-ACAEB08CFF61@microsoft.com...
> Merci beaucoup Geo de vos conseils.
>
> J'ai remplacé l'instruction vbNullString par des "" mais ça ne
> fonctionnait
> toujours pas. Alors, j'ai suivi vos conseils sur l'utilisation de
> variables
> intermédiaires et ça fonctionne très bien.
>
> Est-ce que je peux me permettre une autre question?
>
> J'ai une autre macro qui utilise le contenu des mêmes variables NomRep,
> PrenomRep, etc. pour créer le nom du fichier.
>
> J'ai lu qu'on pouvait mettre des variables publiques pour pouvoir les
> utiliser dans plusieurs procédures. J'ai essayé mais je n'arrive pas à
> comprendre comment faire.
>
> 1. J'ai essayé en mettant les variables dans la zone de déclarations.
> 2. J'ai essayé aussi en mettant static lors de la déclarations.
>
> Il y a quelque chose que j'ignore pour obtenir le bon résultat. Alors,
> pour
> la macro je répète toutes les mêmes instructions pour obtenir mes
> variables.
>
> Encore une fois merci.
>
> Jocelyne
>
> "Geo" a écrit :
>
>> Bonjour
>> [Réponse faite sur le forum public Word :
>> news://msnews.microsoft.com/ microsoft.public.fr.word ]
>> > Bonjour à tous,
>> >
>> > Je suis débutante en VBA et je tente de créer une macro qui permet de
>> > créer
>> > un dossier si celui-ci n'existe pas et ne fais rien si le dossier
>> > existe.
>> >
>> > Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas
>> > mais
>> > pas en ce qui concerne la partie si le dossier existe.
>> >
>> > Voici une partie de la macro.
>> >
>> > 'Annonce la création du dossier avec la possibilité de canceller
>> > l'action
>> > Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
>> > vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
>> > " " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
>> > vbOKCancel, "Création du dossier")
>> >
>> > If Response = vbCancel Then
>> > MsgBox "Vous avez annulé la création du dossier.", vbExclamation
>> > Exit Sub 'Arrete la procédure complète
>> > Else
>> > 'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
>> > termine.
>> > If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
>> > vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) > >> > vbNullString Then
>> >
>> > 'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
>> > DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
>> > MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
>> > vbProperCase)
>> > & " " & Format(DateNaisRep, "yyyy-mm-dd"))
>> >
>> > Else
>> > 'Le dossier existe alors
>> > MsgBox ("Le dossier existe déjà. Vérifiez les données" _
>> > & " dans le formulaire et recommencez.")
>> > Exit Sub
>> >
>> > End If
>> > End If
>> >
>> > ********
>> > Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche
>> > dans
>> > la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours
>> > déjà
>> > que j'essaie de trouver la logique mais je ne vois plus clair.
>> >
>> > Merci de votre aide.
>>
>> C'est le vbNullString, il faut mettre "", ce qui n'est pas la même
>> chose.
>> Et si je peux me permettre un conseil, utilisez des variables
>> instermédiaires comme :
>>
>> Dim NomRep As string
>> NomRep = Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
>> vbProperCase & " " & Format(DateNaisRep, "yyyy-mm-dd")
>> debug.print "Nom du dossier " & NomRep
>> If Dir$(NomRep) , vbDirectory) = "" then
>> 'Le dossier n'existe pas a
>> MkDir NomRep
>>
>> Else
>> 'Le dossier existe alors
>> MsgBox ("Le dossier " & nomrep " &existe déjà. Vérifiez les
>> données" _
>> & " dans le formulaire et recommencez.")
>> Exit Sub
>> End If
>>
>> C'est plus fiable et plus facilie à déboguer et maintenir (utilisation
>> du debug.print).
>>
>> --
>> A+
>>
>>
>>
Salut,
Je vais te donner un lien vers un tuto sur la déclaration des variables et
leur durée de vie.
http://heureuxoli.developpez.com/office/word/vba-all/
http://heureuxoli.developpez.com/office/word/vba-all/?page=page5
Pardon Geo.
Aie pas sur la tête.
--
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:
> Merci beaucoup Geo de vos conseils.
>
> J'ai remplacé l'instruction vbNullString par des "" mais ça ne
> fonctionnait
> toujours pas. Alors, j'ai suivi vos conseils sur l'utilisation de
> variables
> intermédiaires et ça fonctionne très bien.
>
> Est-ce que je peux me permettre une autre question?
>
> J'ai une autre macro qui utilise le contenu des mêmes variables NomRep,
> PrenomRep, etc. pour créer le nom du fichier.
>
> J'ai lu qu'on pouvait mettre des variables publiques pour pouvoir les
> utiliser dans plusieurs procédures. J'ai essayé mais je n'arrive pas à
> comprendre comment faire.
>
> 1. J'ai essayé en mettant les variables dans la zone de déclarations.
> 2. J'ai essayé aussi en mettant static lors de la déclarations.
>
> Il y a quelque chose que j'ignore pour obtenir le bon résultat. Alors,
> pour
> la macro je répète toutes les mêmes instructions pour obtenir mes
> variables.
>
> Encore une fois merci.
>
> Jocelyne
>
> "Geo" a écrit :
>
>> Bonjour
>> [Réponse faite sur le forum public Word :
>> news://msnews.microsoft.com/ microsoft.public.fr.word ]
>> > Bonjour à tous,
>> >
>> > Je suis débutante en VBA et je tente de créer une macro qui permet de
>> > créer
>> > un dossier si celui-ci n'existe pas et ne fais rien si le dossier
>> > existe.
>> >
>> > Le résultat que j'obtiens : elle fonctionne si le dossier n'existe pas
>> > mais
>> > pas en ce qui concerne la partie si le dossier existe.
>> >
>> > Voici une partie de la macro.
>> >
>> > 'Annonce la création du dossier avec la possibilité de canceller
>> > l'action
>> > Response = MsgBox("Un dossier au nom de " & Chr(34) & StrConv(NomRep,
>> > vbProperCase) & StrConv(PrenomRep, vbProperCase) & _
>> > " " & Format(DateNaisRep, "yyyy-mm-dd") & Chr(34) & " sera créé.",
>> > vbOKCancel, "Création du dossier")
>> >
>> > If Response = vbCancel Then
>> > MsgBox "Vous avez annulé la création du dossier.", vbExclamation
>> > Exit Sub 'Arrete la procédure complète
>> > Else
>> > 'Si le dossier n'existe pas, le dossier est créé, sinon la procédure se
>> > termine.
>> > If Dir$(Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
>> > vbProperCase) & " " & Format(DateNaisRep, "yyyy-mm-dd"), vbDirectory) > >> > vbNullString Then
>> >
>> > 'Le dossier n'existe pas alors C'EST ICI QUE CA PLANTE LORSQUE LE
>> > DOSSIER EXISTE. LA MACRO FAIT CETTE LIGNE PLUTOT QUE DE SAUTER À ELSE.
>> > MkDir (StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
>> > vbProperCase)
>> > & " " & Format(DateNaisRep, "yyyy-mm-dd"))
>> >
>> > Else
>> > 'Le dossier existe alors
>> > MsgBox ("Le dossier existe déjà. Vérifiez les données" _
>> > & " dans le formulaire et recommencez.")
>> > Exit Sub
>> >
>> > End If
>> > End If
>> >
>> > ********
>> > Est-ce quelqu'un serait assez gentil pour me dire qu'est-ce qui cloche
>> > dans
>> > la macro et m'aider à la rendre fonctionnelle? Ça fait quelques jours
>> > déjà
>> > que j'essaie de trouver la logique mais je ne vois plus clair.
>> >
>> > Merci de votre aide.
>>
>> C'est le vbNullString, il faut mettre "", ce qui n'est pas la même
>> chose.
>> Et si je peux me permettre un conseil, utilisez des variables
>> instermédiaires comme :
>>
>> Dim NomRep As string
>> NomRep = Chemin & StrConv(NomRep, vbProperCase) & StrConv(PrenomRep,
>> vbProperCase & " " & Format(DateNaisRep, "yyyy-mm-dd")
>> debug.print "Nom du dossier " & NomRep
>> If Dir$(NomRep) , vbDirectory) = "" then
>> 'Le dossier n'existe pas a
>> MkDir NomRep
>>
>> Else
>> 'Le dossier existe alors
>> MsgBox ("Le dossier " & nomrep " &existe déjà. Vérifiez les
>> données" _
>> & " dans le formulaire et recommencez.")
>> Exit Sub
>> End If
>>
>> C'est plus fiable et plus facilie à déboguer et maintenir (utilisation
>> du debug.print).
>>
>> --
>> A+
>>
>>
>>