OVH Cloud OVH Cloud

Gestion de dossier

15 réponses
Avatar
Joachim Ruegsegger
Bonjour,

à la fin de mon code j'aimerais enregistrer mon classeur dans un dossier que
je devrais manipuler:

1: il (le dossier cible) est une copie d'un "dossier de référence".

2: je le renomme avec un numéro entrer par l'utilisateur (par une msgbox)

...


je n'ai pas trouvé comment copier un dossier et j'aimerais savoir si il est
possible de copier et directement de lui donner le nom que l'on veut lors de
la copie

j'ai commencé mon code par ceci :

Public NDP as string ' NDP= Numéo de projet

Sub test()

If MsgBox("Est-ce que c'est une nouvelle offre ?", vbYesNo) = vbYes Then
NDP = InputBox("Entrer le numéro du nouveau projet" & Chr(13) &
"Exemple: 1859")


End Sub


Merci d'avance de vos conseils

5 réponses

1 2
Avatar
Joachim Ruegsegger
le problème c'est que j'aimerais exploiter cette boîte de dialogue...

j'ai modifé comme ceci, mais ça me signale une erreur de syntaxe

ChDrive "S"
ChDir Destination & "Calculation"
reponse = ActiveWorkbook.SaveAs(NOE)
If reponse = vbNo Then
GoTo Selec3:
End If

cordialement

JR

"FFO" a écrit dans le message de news:

Salut à toi

As tu essayé de mettre une de ces lignes juste avant :
Application.DisplayAlerts = False
Application.EnableEvents = False

Fait le test et dis moi !!!


dans ce bout de code, j'enregistre un fichier. Malheureusement si le
fichier
existe déjà une boite de dialogue me demandant si je veux l'écraser ou
pas
s'affiche

est-il possible de récupérer une info de cette boite de dialogue
automatique
?

NOE = InputBox("Entrer le numéro d'une offre existante" & Chr(13) &
"Exemple: 1859", "Numéro d'une offre existante")

Set Fso2 = CreateObject("Scripting.FileSystemObject")
Destination = "S:TechniqueAutomationProjets AutoProjet
EssaiCommercialDossier de reception" & NOE

If Fso2.FolderExists(Destination) Then
ChDrive "S"
ChDir Destination & "Calculation"
ICI===> ActiveWorkbook.SaveAs Filename:=(NOE)
GoTo Selec4:
Else
If MsgBox("Le dossier " & NOE & " n'existe pas !,
voulez-vous revenir au début ?", vbYesNo) = vbYes Then
GoTo Selec:
Else
GoTo Selec3:
End If

End If


merci de votre réponse



"Joachim Ruegsegger" a écrit dans le message
de
news:
excellent, ça fonctionne parfaitement, faut que j'implémente encore des
contrôles pour voir si le dossier existe ou pas, etc...

mais en cette presque fin de journée, j'ai le sourire jusqu'aux
oreilles

Merci pour ton aide !


"FFO" a écrit dans le message de news:

Rebonjour à toi

Ta ligne source est erroné
au lieu de
Source = "C:Dossier de référence"
mets
Source = "C:Dossier de référence"
Tu recopies le dossier "Dossier de référence" et non un répertoire à
l'interieur représenté avec le caractère "" qui le suit

Celà devrait mieux fonctionner

Dis moi !!!!


Excellent, je n'ai plus de problème de syntaxe (ça bloquait a cause
des
parenthèses du copyfolder)

voici maintenant la "gueule" de mon bout de code pour la gestion du
dossier

If MsgBox("Est-ce que c'est une nouvelle offre ?", vbYesNo) = vbYes
Then

NDC = InputBox("Entrer le numéro du nouveau projet" &
Chr(13) &
"Exemple: 1859")
Dim Fso As Scripting.FileSystemObject
Dim Source As String, Destination As String

Set Fso = CreateObject("Scripting.FileSystemObject")

Source = "C:Dossier de référence"
Destination = "C:"

'False/True option pour écraser les fichiers


Fso.CopyFolder Source, Destination & "toto", False

Else


End If


Malheureusement, à la ligne du copyfolder, j'ai un message d'erreur
"chemin
d'accès introuvable" alors que c'est C:toto, bizarre....

le microsoft sripting runtime est bien activé.

Le copyfolder peut copier le dossier et le créé directement ??? (j'ai
quand
meme fait un test en créant via l'explorateur de fichier un dossier
"toto"
vide...

ne perdont pas espoir, on avance vers la compréhension du VBA mdr

"FFO" a écrit dans le message de
news:

Rebonjour à toi

En préambule as tu pensé à la Référence :

"reference Microsoft scripting Runtime"


Aprés cette vérification et si le PB persiste tu devrais d'abord
réaliser
le
cas le plus simple comme ceci :


Set Fso = CreateObject("Scripting.FileSystemObject")
Source = "C:CheminRépertoire de référence"
Destination = "C:Chemin"
Fso.CopyFolder Source, Destination & "Toto", False

regarde si le nouveau répertoire "Toto" est bien créé avec toute sa
panoplie
à l'identique du Répertoire de Référence

Puis change "Toto" avec InputBox("Entrer le numéro du nouveau
projet")

Nouvel essai en saisissant dans la Boîte de dialogue le nom du
répertoire
à
créer

Faire une nouvelle vérification

Si tout est Ok reste à mettre en place la partie :
& Chr(13) & "Nom du dossier et Exemple: 1859

J'ai retesté avec à la virgule prés ce que tu m'as mis dans ta
réponse
avec
ta correction (effectivement il y avait une parenthèse fermante en
trop),
aucune anomalie à déplorer avec la création du répertoire

Réalise donc de proche en proche ce code et donne moi le résultat
!!!!




Ca ne fonctionne pas mais je pense que c'est un problème de
syntaxe
de la
dernière ligne :

Fso.CopyFolder Source, Destination & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859")), False

j'ai modifé comme ceci:

Fso.CopyFolder (Source, Destination & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"), False)

mais il me dit qu'il y a toujours un problème de syntaxe

"Problème de compilation
attendu : = "

j'ai une autre question, les déclarations Dim, on peut les placers
en
plein
milieu d'un code ou l'on doit les mettres tous au début du code
comme
les
déclarations Public ?



"FFO" a écrit dans le message de
news:

Rebonjour à toi

C'était bien tenté mais pas à la hauteur du cahier des charges
Concernant le chemin du dossier partant du principe qu'il devait
être
identique à celui du fichier en cours d'utilisation tu le
retrouvais
dans
l'instruction :

ThisWorkbook.Path

avec remonté au dossier parent par la ligne :

Set ledossierNMoinsUn = ledossier.ParentFolder

Puis de créer le dossier avec le nom souhaité par la ligne :

MkDir (ledossierNMoinsUn & "" & InputBox("Entrer le numéro du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"))
reprenant le chemin établit sous "le nom ledossierNMoinsUn"

J'espère avoir éclairci ta lanterne

Concernant tes attentes je te propose donc en lieu et place de
ma
première
suggestion ce code :

Dim Fso As Scripting.FileSystemObject
Dim Source As String, Destination As String

Set Fso = CreateObject("Scripting.FileSystemObject")

Source = "C:CheminFichier de référence"
Destination = "C:Chemin"

'False/True option pour écraser les fichiers
Fso.CopyFolder Source, Destination & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859")), False

Ne pas oublier de mettre dans les références :

"reference Microsoft scripting Runtime"

Je pense que tu devrais être beaucoup plus satisfait !!!
Annonce moi la bonne nouvelle !!!!


bonne idée sauf que dans ce dossier de référence, il y a des
sous-dossiers
prédéfini avec des fichiers de base à remplir, etc... de toutes
manières
il
faut que je puisse faire de la copie de dossier.

dans ton exemple, je ne comprend pas très bien où je dois
mettre
les
chemins
de dossier, désolé, c'est la première fois que je fais de la
manip
de
fichier/dossier avec VBA...


merci de ton aide
"FFO" a écrit dans le message
de
news:

Salut à toi
Je te propose au lieu de le copier de le créer en lui
affectant
le
nom
de
ton choix avec ce code :

Dim filesysobj As Object
Dim ledossier As Object
Dim ledossierNMoinsUn As Object
Set filesysobj = CreateObject("Scripting.FileSystemObject")
Set ledossier = filesysobj.GetFolder(ThisWorkbook.Path)
Set ledossierNMoinsUn = ledossier.ParentFolder
MkDir (ledossierNMoinsUn & "" & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"))

celà peut-il convenir

Dit moi !!!


Bonjour,

à la fin de mon code j'aimerais enregistrer mon classeur
dans
un
dossier
que
je devrais manipuler:

1: il (le dossier cible) est une copie d'un "dossier de
référence".

2: je le renomme avec un numéro entrer par l'utilisateur
(par
une
msgbox)

....


je n'ai pas trouvé comment copier un dossier et j'aimerais
savoir
si
il






















Avatar
FFO
Rebonjour à toi

As tu essayé l'instruction :

On error goto Selec3

Ou alors peut être :

If réponse = False Then
GoTo Selec3

ou ta solution mais sans les : comme ceci

If reponse = vbNo Then
GoTo Selec3


Code

Selec3:

Code


Il faut essayer

Je peux difficilement le faire n'ayant pas avec tout l'environnement requis

Dis moi !!!!



le problème c'est que j'aimerais exploiter cette boîte de dialogue...

j'ai modifé comme ceci, mais ça me signale une erreur de syntaxe

ChDrive "S"
ChDir Destination & "Calculation"
reponse = ActiveWorkbook.SaveAs(NOE)
If reponse = vbNo Then
GoTo Selec3:
End If

cordialement

JR

"FFO" a écrit dans le message de news:

Salut à toi

As tu essayé de mettre une de ces lignes juste avant :
Application.DisplayAlerts = False
Application.EnableEvents = False

Fait le test et dis moi !!!


dans ce bout de code, j'enregistre un fichier. Malheureusement si le
fichier
existe déjà une boite de dialogue me demandant si je veux l'écraser ou
pas
s'affiche

est-il possible de récupérer une info de cette boite de dialogue
automatique
?

NOE = InputBox("Entrer le numéro d'une offre existante" & Chr(13) &
"Exemple: 1859", "Numéro d'une offre existante")

Set Fso2 = CreateObject("Scripting.FileSystemObject")
Destination = "S:TechniqueAutomationProjets AutoProjet
EssaiCommercialDossier de reception" & NOE

If Fso2.FolderExists(Destination) Then
ChDrive "S"
ChDir Destination & "Calculation"
ICI===> ActiveWorkbook.SaveAs Filename:=(NOE)
GoTo Selec4:
Else
If MsgBox("Le dossier " & NOE & " n'existe pas !,
voulez-vous revenir au début ?", vbYesNo) = vbYes Then
GoTo Selec:
Else
GoTo Selec3:
End If

End If


merci de votre réponse



"Joachim Ruegsegger" a écrit dans le message
de
news:
excellent, ça fonctionne parfaitement, faut que j'implémente encore des
contrôles pour voir si le dossier existe ou pas, etc...

mais en cette presque fin de journée, j'ai le sourire jusqu'aux
oreilles

Merci pour ton aide !


"FFO" a écrit dans le message de news:

Rebonjour à toi

Ta ligne source est erroné
au lieu de
Source = "C:Dossier de référence"
mets
Source = "C:Dossier de référence"
Tu recopies le dossier "Dossier de référence" et non un répertoire à
l'interieur représenté avec le caractère "" qui le suit

Celà devrait mieux fonctionner

Dis moi !!!!


Excellent, je n'ai plus de problème de syntaxe (ça bloquait a cause
des
parenthèses du copyfolder)

voici maintenant la "gueule" de mon bout de code pour la gestion du
dossier

If MsgBox("Est-ce que c'est une nouvelle offre ?", vbYesNo) = vbYes
Then

NDC = InputBox("Entrer le numéro du nouveau projet" &
Chr(13) &
"Exemple: 1859")
Dim Fso As Scripting.FileSystemObject
Dim Source As String, Destination As String

Set Fso = CreateObject("Scripting.FileSystemObject")

Source = "C:Dossier de référence"
Destination = "C:"

'False/True option pour écraser les fichiers


Fso.CopyFolder Source, Destination & "toto", False

Else


End If


Malheureusement, à la ligne du copyfolder, j'ai un message d'erreur
"chemin
d'accès introuvable" alors que c'est C:toto, bizarre....

le microsoft sripting runtime est bien activé.

Le copyfolder peut copier le dossier et le créé directement ??? (j'ai
quand
meme fait un test en créant via l'explorateur de fichier un dossier
"toto"
vide...

ne perdont pas espoir, on avance vers la compréhension du VBA mdr

"FFO" a écrit dans le message de
news:

Rebonjour à toi

En préambule as tu pensé à la Référence :

"reference Microsoft scripting Runtime"


Aprés cette vérification et si le PB persiste tu devrais d'abord
réaliser
le
cas le plus simple comme ceci :


Set Fso = CreateObject("Scripting.FileSystemObject")
Source = "C:CheminRépertoire de référence"
Destination = "C:Chemin"
Fso.CopyFolder Source, Destination & "Toto", False

regarde si le nouveau répertoire "Toto" est bien créé avec toute sa
panoplie
à l'identique du Répertoire de Référence

Puis change "Toto" avec InputBox("Entrer le numéro du nouveau
projet")

Nouvel essai en saisissant dans la Boîte de dialogue le nom du
répertoire
à
créer

Faire une nouvelle vérification

Si tout est Ok reste à mettre en place la partie :
& Chr(13) & "Nom du dossier et Exemple: 1859

J'ai retesté avec à la virgule prés ce que tu m'as mis dans ta
réponse
avec
ta correction (effectivement il y avait une parenthèse fermante en
trop),
aucune anomalie à déplorer avec la création du répertoire

Réalise donc de proche en proche ce code et donne moi le résultat
!!!!




Ca ne fonctionne pas mais je pense que c'est un problème de
syntaxe
de la
dernière ligne :

Fso.CopyFolder Source, Destination & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859")), False

j'ai modifé comme ceci:

Fso.CopyFolder (Source, Destination & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"), False)

mais il me dit qu'il y a toujours un problème de syntaxe

"Problème de compilation
attendu : = "

j'ai une autre question, les déclarations Dim, on peut les placers
en
plein
milieu d'un code ou l'on doit les mettres tous au début du code
comme
les
déclarations Public ?



"FFO" a écrit dans le message de
news:

Rebonjour à toi

C'était bien tenté mais pas à la hauteur du cahier des charges
Concernant le chemin du dossier partant du principe qu'il devait
être
identique à celui du fichier en cours d'utilisation tu le
retrouvais
dans
l'instruction :

ThisWorkbook.Path

avec remonté au dossier parent par la ligne :

Set ledossierNMoinsUn = ledossier.ParentFolder

Puis de créer le dossier avec le nom souhaité par la ligne :

MkDir (ledossierNMoinsUn & "" & InputBox("Entrer le numéro du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"))
reprenant le chemin établit sous "le nom ledossierNMoinsUn"

J'espère avoir éclairci ta lanterne

Concernant tes attentes je te propose donc en lieu et place de
ma
première
suggestion ce code :

Dim Fso As Scripting.FileSystemObject
Dim Source As String, Destination As String

Set Fso = CreateObject("Scripting.FileSystemObject")

Source = "C:CheminFichier de référence"
Destination = "C:Chemin"

'False/True option pour écraser les fichiers
Fso.CopyFolder Source, Destination & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859")), False

Ne pas oublier de mettre dans les références :

"reference Microsoft scripting Runtime"

Je pense que tu devrais être beaucoup plus satisfait !!!
Annonce moi la bonne nouvelle !!!!


bonne idée sauf que dans ce dossier de référence, il y a des
sous-dossiers
prédéfini avec des fichiers de base à remplir, etc... de toutes
manières
il
faut que je puisse faire de la copie de dossier.

dans ton exemple, je ne comprend pas très bien où je dois
mettre
les
chemins
de dossier, désolé, c'est la première fois que je fais de la
manip
de
fichier/dossier avec VBA...


merci de ton aide
"FFO" a écrit dans le message
de




















Avatar
FFO
Rebonjour encore

j'ai une solution !!!!
Tu mets ce code :

If Dir("C:CheminFichier.xls", vbDirectory) = "" Then
ActiveWorkbook.SaveAs (NOE)
Else
Goto Selec3

Code

Selec3:

Code


C:CheminFichier.xls doit être le chemin et le nom de ton fichier que
représente ta variable NOE

Je pense qu'avec ça tu devrais t'en sortir

Dis moi !!!!


le problème c'est que j'aimerais exploiter cette boîte de dialogue...

j'ai modifé comme ceci, mais ça me signale une erreur de syntaxe

ChDrive "S"
ChDir Destination & "Calculation"
reponse = ActiveWorkbook.SaveAs(NOE)
If reponse = vbNo Then
GoTo Selec3:
End If

cordialement

JR

"FFO" a écrit dans le message de news:

Salut à toi

As tu essayé de mettre une de ces lignes juste avant :
Application.DisplayAlerts = False
Application.EnableEvents = False

Fait le test et dis moi !!!


dans ce bout de code, j'enregistre un fichier. Malheureusement si le
fichier
existe déjà une boite de dialogue me demandant si je veux l'écraser ou
pas
s'affiche

est-il possible de récupérer une info de cette boite de dialogue
automatique
?

NOE = InputBox("Entrer le numéro d'une offre existante" & Chr(13) &
"Exemple: 1859", "Numéro d'une offre existante")

Set Fso2 = CreateObject("Scripting.FileSystemObject")
Destination = "S:TechniqueAutomationProjets AutoProjet
EssaiCommercialDossier de reception" & NOE

If Fso2.FolderExists(Destination) Then
ChDrive "S"
ChDir Destination & "Calculation"
ICI===> ActiveWorkbook.SaveAs Filename:=(NOE)
GoTo Selec4:
Else
If MsgBox("Le dossier " & NOE & " n'existe pas !,
voulez-vous revenir au début ?", vbYesNo) = vbYes Then
GoTo Selec:
Else
GoTo Selec3:
End If

End If


merci de votre réponse



"Joachim Ruegsegger" a écrit dans le message
de
news:
excellent, ça fonctionne parfaitement, faut que j'implémente encore des
contrôles pour voir si le dossier existe ou pas, etc...

mais en cette presque fin de journée, j'ai le sourire jusqu'aux
oreilles

Merci pour ton aide !


"FFO" a écrit dans le message de news:

Rebonjour à toi

Ta ligne source est erroné
au lieu de
Source = "C:Dossier de référence"
mets
Source = "C:Dossier de référence"
Tu recopies le dossier "Dossier de référence" et non un répertoire à
l'interieur représenté avec le caractère "" qui le suit

Celà devrait mieux fonctionner

Dis moi !!!!


Excellent, je n'ai plus de problème de syntaxe (ça bloquait a cause
des
parenthèses du copyfolder)

voici maintenant la "gueule" de mon bout de code pour la gestion du
dossier

If MsgBox("Est-ce que c'est une nouvelle offre ?", vbYesNo) = vbYes
Then

NDC = InputBox("Entrer le numéro du nouveau projet" &
Chr(13) &
"Exemple: 1859")
Dim Fso As Scripting.FileSystemObject
Dim Source As String, Destination As String

Set Fso = CreateObject("Scripting.FileSystemObject")

Source = "C:Dossier de référence"
Destination = "C:"

'False/True option pour écraser les fichiers


Fso.CopyFolder Source, Destination & "toto", False

Else


End If


Malheureusement, à la ligne du copyfolder, j'ai un message d'erreur
"chemin
d'accès introuvable" alors que c'est C:toto, bizarre....

le microsoft sripting runtime est bien activé.

Le copyfolder peut copier le dossier et le créé directement ??? (j'ai
quand
meme fait un test en créant via l'explorateur de fichier un dossier
"toto"
vide...

ne perdont pas espoir, on avance vers la compréhension du VBA mdr

"FFO" a écrit dans le message de
news:

Rebonjour à toi

En préambule as tu pensé à la Référence :

"reference Microsoft scripting Runtime"


Aprés cette vérification et si le PB persiste tu devrais d'abord
réaliser
le
cas le plus simple comme ceci :


Set Fso = CreateObject("Scripting.FileSystemObject")
Source = "C:CheminRépertoire de référence"
Destination = "C:Chemin"
Fso.CopyFolder Source, Destination & "Toto", False

regarde si le nouveau répertoire "Toto" est bien créé avec toute sa
panoplie
à l'identique du Répertoire de Référence

Puis change "Toto" avec InputBox("Entrer le numéro du nouveau
projet")

Nouvel essai en saisissant dans la Boîte de dialogue le nom du
répertoire
à
créer

Faire une nouvelle vérification

Si tout est Ok reste à mettre en place la partie :
& Chr(13) & "Nom du dossier et Exemple: 1859

J'ai retesté avec à la virgule prés ce que tu m'as mis dans ta
réponse
avec
ta correction (effectivement il y avait une parenthèse fermante en
trop),
aucune anomalie à déplorer avec la création du répertoire

Réalise donc de proche en proche ce code et donne moi le résultat
!!!!




Ca ne fonctionne pas mais je pense que c'est un problème de
syntaxe
de la
dernière ligne :

Fso.CopyFolder Source, Destination & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859")), False

j'ai modifé comme ceci:

Fso.CopyFolder (Source, Destination & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"), False)

mais il me dit qu'il y a toujours un problème de syntaxe

"Problème de compilation
attendu : = "

j'ai une autre question, les déclarations Dim, on peut les placers
en
plein
milieu d'un code ou l'on doit les mettres tous au début du code
comme
les
déclarations Public ?



"FFO" a écrit dans le message de
news:

Rebonjour à toi

C'était bien tenté mais pas à la hauteur du cahier des charges
Concernant le chemin du dossier partant du principe qu'il devait
être
identique à celui du fichier en cours d'utilisation tu le
retrouvais
dans
l'instruction :

ThisWorkbook.Path

avec remonté au dossier parent par la ligne :

Set ledossierNMoinsUn = ledossier.ParentFolder

Puis de créer le dossier avec le nom souhaité par la ligne :

MkDir (ledossierNMoinsUn & "" & InputBox("Entrer le numéro du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"))
reprenant le chemin établit sous "le nom ledossierNMoinsUn"

J'espère avoir éclairci ta lanterne

Concernant tes attentes je te propose donc en lieu et place de
ma
première
suggestion ce code :

Dim Fso As Scripting.FileSystemObject
Dim Source As String, Destination As String

Set Fso = CreateObject("Scripting.FileSystemObject")

Source = "C:CheminFichier de référence"
Destination = "C:Chemin"

'False/True option pour écraser les fichiers
Fso.CopyFolder Source, Destination & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859")), False

Ne pas oublier de mettre dans les références :

"reference Microsoft scripting Runtime"

Je pense que tu devrais être beaucoup plus satisfait !!!
Annonce moi la bonne nouvelle !!!!


bonne idée sauf que dans ce dossier de référence, il y a des
sous-dossiers
prédéfini avec des fichiers de base à remplir, etc... de toutes
manières
il
faut que je puisse faire de la copie de dossier.

dans ton exemple, je ne comprend pas très bien où je dois
mettre
les
chemins
de dossier, désolé, c'est la première fois que je fais de la
manip
de
fichier/dossier avec VBA...


merci de ton aide
"FFO" a écrit dans le message
de




















Avatar
Joachim Ruegsegger
excellent merci !

une petite question encore...

je fais une recherche de fichier et j'utilise la propriété .Foundfiles(I)
pour récupéré le chemin du fichier.

est-ce qu'il existe une propriété qui récupère seulement le nom du fichier +
son extension ?

cordialement

JR

"FFO" a écrit dans le message de news:

Rebonjour encore

j'ai une solution !!!!
Tu mets ce code :

If Dir("C:CheminFichier.xls", vbDirectory) = "" Then
ActiveWorkbook.SaveAs (NOE)
Else
Goto Selec3

Code

Selec3:

Code


C:CheminFichier.xls doit être le chemin et le nom de ton fichier que
représente ta variable NOE

Je pense qu'avec ça tu devrais t'en sortir

Dis moi !!!!


le problème c'est que j'aimerais exploiter cette boîte de dialogue...

j'ai modifé comme ceci, mais ça me signale une erreur de syntaxe

ChDrive "S"
ChDir Destination & "Calculation"
reponse = ActiveWorkbook.SaveAs(NOE)
If reponse = vbNo Then
GoTo Selec3:
End If

cordialement

JR

"FFO" a écrit dans le message de news:

Salut à toi

As tu essayé de mettre une de ces lignes juste avant :
Application.DisplayAlerts = False
Application.EnableEvents = False

Fait le test et dis moi !!!


dans ce bout de code, j'enregistre un fichier. Malheureusement si le
fichier
existe déjà une boite de dialogue me demandant si je veux l'écraser ou
pas
s'affiche

est-il possible de récupérer une info de cette boite de dialogue
automatique
?

NOE = InputBox("Entrer le numéro d'une offre existante" & Chr(13) &
"Exemple: 1859", "Numéro d'une offre existante")

Set Fso2 = CreateObject("Scripting.FileSystemObject")
Destination = "S:TechniqueAutomationProjets AutoProjet
EssaiCommercialDossier de reception" & NOE

If Fso2.FolderExists(Destination) Then
ChDrive "S"
ChDir Destination & "Calculation"
ICI===> ActiveWorkbook.SaveAs Filename:=(NOE)
GoTo Selec4:
Else
If MsgBox("Le dossier " & NOE & " n'existe pas !,
voulez-vous revenir au début ?", vbYesNo) = vbYes Then
GoTo Selec:
Else
GoTo Selec3:
End If

End If


merci de votre réponse



"Joachim Ruegsegger" a écrit dans le
message
de
news:
excellent, ça fonctionne parfaitement, faut que j'implémente encore
des
contrôles pour voir si le dossier existe ou pas, etc...

mais en cette presque fin de journée, j'ai le sourire jusqu'aux
oreilles

Merci pour ton aide !


"FFO" a écrit dans le message de
news:

Rebonjour à toi

Ta ligne source est erroné
au lieu de
Source = "C:Dossier de référence"
mets
Source = "C:Dossier de référence"
Tu recopies le dossier "Dossier de référence" et non un répertoire
à
l'interieur représenté avec le caractère "" qui le suit

Celà devrait mieux fonctionner

Dis moi !!!!


Excellent, je n'ai plus de problème de syntaxe (ça bloquait a
cause
des
parenthèses du copyfolder)

voici maintenant la "gueule" de mon bout de code pour la gestion
du
dossier

If MsgBox("Est-ce que c'est une nouvelle offre ?", vbYesNo) =
vbYes
Then

NDC = InputBox("Entrer le numéro du nouveau projet" &
Chr(13) &
"Exemple: 1859")
Dim Fso As Scripting.FileSystemObject
Dim Source As String, Destination As String

Set Fso = CreateObject("Scripting.FileSystemObject")

Source = "C:Dossier de référence"
Destination = "C:"

'False/True option pour écraser les fichiers


Fso.CopyFolder Source, Destination & "toto", False

Else


End If


Malheureusement, à la ligne du copyfolder, j'ai un message
d'erreur
"chemin
d'accès introuvable" alors que c'est C:toto, bizarre....

le microsoft sripting runtime est bien activé.

Le copyfolder peut copier le dossier et le créé directement ???
(j'ai
quand
meme fait un test en créant via l'explorateur de fichier un
dossier
"toto"
vide...

ne perdont pas espoir, on avance vers la compréhension du VBA mdr

"FFO" a écrit dans le message de
news:

Rebonjour à toi

En préambule as tu pensé à la Référence :

"reference Microsoft scripting Runtime"


Aprés cette vérification et si le PB persiste tu devrais d'abord
réaliser
le
cas le plus simple comme ceci :


Set Fso = CreateObject("Scripting.FileSystemObject")
Source = "C:CheminRépertoire de référence"
Destination = "C:Chemin"
Fso.CopyFolder Source, Destination & "Toto", False

regarde si le nouveau répertoire "Toto" est bien créé avec toute
sa
panoplie
à l'identique du Répertoire de Référence

Puis change "Toto" avec InputBox("Entrer le numéro du nouveau
projet")

Nouvel essai en saisissant dans la Boîte de dialogue le nom du
répertoire
à
créer

Faire une nouvelle vérification

Si tout est Ok reste à mettre en place la partie :
& Chr(13) & "Nom du dossier et Exemple: 1859

J'ai retesté avec à la virgule prés ce que tu m'as mis dans ta
réponse
avec
ta correction (effectivement il y avait une parenthèse fermante
en
trop),
aucune anomalie à déplorer avec la création du répertoire

Réalise donc de proche en proche ce code et donne moi le
résultat
!!!!




Ca ne fonctionne pas mais je pense que c'est un problème de
syntaxe
de la
dernière ligne :

Fso.CopyFolder Source, Destination & InputBox("Entrer le
numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859")), False

j'ai modifé comme ceci:

Fso.CopyFolder (Source, Destination & InputBox("Entrer le
numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"), False)

mais il me dit qu'il y a toujours un problème de syntaxe

"Problème de compilation
attendu : = "

j'ai une autre question, les déclarations Dim, on peut les
placers
en
plein
milieu d'un code ou l'on doit les mettres tous au début du code
comme
les
déclarations Public ?



"FFO" a écrit dans le message
de
news:

Rebonjour à toi

C'était bien tenté mais pas à la hauteur du cahier des
charges
Concernant le chemin du dossier partant du principe qu'il
devait
être
identique à celui du fichier en cours d'utilisation tu le
retrouvais
dans
l'instruction :

ThisWorkbook.Path

avec remonté au dossier parent par la ligne :

Set ledossierNMoinsUn = ledossier.ParentFolder

Puis de créer le dossier avec le nom souhaité par la ligne :

MkDir (ledossierNMoinsUn & "" & InputBox("Entrer le numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"))
reprenant le chemin établit sous "le nom ledossierNMoinsUn"

J'espère avoir éclairci ta lanterne

Concernant tes attentes je te propose donc en lieu et place
de
ma
première
suggestion ce code :

Dim Fso As Scripting.FileSystemObject
Dim Source As String, Destination As String

Set Fso = CreateObject("Scripting.FileSystemObject")

Source = "C:CheminFichier de référence"
Destination = "C:Chemin"

'False/True option pour écraser les fichiers
Fso.CopyFolder Source, Destination & InputBox("Entrer le
numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859")),
False

Ne pas oublier de mettre dans les références :

"reference Microsoft scripting Runtime"

Je pense que tu devrais être beaucoup plus satisfait !!!
Annonce moi la bonne nouvelle !!!!


bonne idée sauf que dans ce dossier de référence, il y a des
sous-dossiers
prédéfini avec des fichiers de base à remplir, etc... de
toutes
manières
il
faut que je puisse faire de la copie de dossier.

dans ton exemple, je ne comprend pas très bien où je dois
mettre
les
chemins
de dossier, désolé, c'est la première fois que je fais de la
manip
de
fichier/dossier avec VBA...


merci de ton aide
"FFO" a écrit dans le
message
de






















Avatar
FFO
Bonsoir à toi !!!
Content d'avoir correctement répondu à ton attente

Concernant ta nouvelle demande je te propose avec les instructions
- FileSearch
- FoundFiles

ce code qui ne donne que le nom et l'extention du fichier trouvé dans une
boîte de dialogue :

With Application.FileSearch
.LookIn = "C:Chemin"
.FileType = msoFileTypeExcelWorkbooks
.Execute
End With
With Application.FileSearch
For I = 1 To .FoundFiles.Count
MsgBox Mid(.FoundFiles(I), Len(.LookIn) + 2, Len(.FoundFiles(I)) -
Len(.LookIn) + 2)
Next I
End With


Essayes d'en tirer profit
Tu devrais avoir ton bonheur
Dis moi !!!!


excellent merci !

une petite question encore...

je fais une recherche de fichier et j'utilise la propriété .Foundfiles(I)
pour récupéré le chemin du fichier.

est-ce qu'il existe une propriété qui récupère seulement le nom du fichier +
son extension ?

cordialement

JR

"FFO" a écrit dans le message de news:

Rebonjour encore

j'ai une solution !!!!
Tu mets ce code :

If Dir("C:CheminFichier.xls", vbDirectory) = "" Then
ActiveWorkbook.SaveAs (NOE)
Else
Goto Selec3

Code

Selec3:

Code


C:CheminFichier.xls doit être le chemin et le nom de ton fichier que
représente ta variable NOE

Je pense qu'avec ça tu devrais t'en sortir

Dis moi !!!!


le problème c'est que j'aimerais exploiter cette boîte de dialogue...

j'ai modifé comme ceci, mais ça me signale une erreur de syntaxe

ChDrive "S"
ChDir Destination & "Calculation"
reponse = ActiveWorkbook.SaveAs(NOE)
If reponse = vbNo Then
GoTo Selec3:
End If

cordialement

JR

"FFO" a écrit dans le message de news:

Salut à toi

As tu essayé de mettre une de ces lignes juste avant :
Application.DisplayAlerts = False
Application.EnableEvents = False

Fait le test et dis moi !!!


dans ce bout de code, j'enregistre un fichier. Malheureusement si le
fichier
existe déjà une boite de dialogue me demandant si je veux l'écraser ou
pas
s'affiche

est-il possible de récupérer une info de cette boite de dialogue
automatique
?

NOE = InputBox("Entrer le numéro d'une offre existante" & Chr(13) &
"Exemple: 1859", "Numéro d'une offre existante")

Set Fso2 = CreateObject("Scripting.FileSystemObject")
Destination = "S:TechniqueAutomationProjets AutoProjet
EssaiCommercialDossier de reception" & NOE

If Fso2.FolderExists(Destination) Then
ChDrive "S"
ChDir Destination & "Calculation"
ICI===> ActiveWorkbook.SaveAs Filename:=(NOE)
GoTo Selec4:
Else
If MsgBox("Le dossier " & NOE & " n'existe pas !,
voulez-vous revenir au début ?", vbYesNo) = vbYes Then
GoTo Selec:
Else
GoTo Selec3:
End If

End If


merci de votre réponse



"Joachim Ruegsegger" a écrit dans le
message
de
news:
excellent, ça fonctionne parfaitement, faut que j'implémente encore
des
contrôles pour voir si le dossier existe ou pas, etc...

mais en cette presque fin de journée, j'ai le sourire jusqu'aux
oreilles

Merci pour ton aide !


"FFO" a écrit dans le message de
news:

Rebonjour à toi

Ta ligne source est erroné
au lieu de
Source = "C:Dossier de référence"
mets
Source = "C:Dossier de référence"
Tu recopies le dossier "Dossier de référence" et non un répertoire
à
l'interieur représenté avec le caractère "" qui le suit

Celà devrait mieux fonctionner

Dis moi !!!!


Excellent, je n'ai plus de problème de syntaxe (ça bloquait a
cause
des
parenthèses du copyfolder)

voici maintenant la "gueule" de mon bout de code pour la gestion
du
dossier

If MsgBox("Est-ce que c'est une nouvelle offre ?", vbYesNo) =
vbYes
Then

NDC = InputBox("Entrer le numéro du nouveau projet" &
Chr(13) &
"Exemple: 1859")
Dim Fso As Scripting.FileSystemObject
Dim Source As String, Destination As String

Set Fso = CreateObject("Scripting.FileSystemObject")

Source = "C:Dossier de référence"
Destination = "C:"

'False/True option pour écraser les fichiers


Fso.CopyFolder Source, Destination & "toto", False

Else


End If


Malheureusement, à la ligne du copyfolder, j'ai un message
d'erreur
"chemin
d'accès introuvable" alors que c'est C:toto, bizarre....

le microsoft sripting runtime est bien activé.

Le copyfolder peut copier le dossier et le créé directement ???
(j'ai
quand
meme fait un test en créant via l'explorateur de fichier un
dossier
"toto"
vide...

ne perdont pas espoir, on avance vers la compréhension du VBA mdr

"FFO" a écrit dans le message de
news:

Rebonjour à toi

En préambule as tu pensé à la Référence :

"reference Microsoft scripting Runtime"


Aprés cette vérification et si le PB persiste tu devrais d'abord
réaliser
le
cas le plus simple comme ceci :


Set Fso = CreateObject("Scripting.FileSystemObject")
Source = "C:CheminRépertoire de référence"
Destination = "C:Chemin"
Fso.CopyFolder Source, Destination & "Toto", False

regarde si le nouveau répertoire "Toto" est bien créé avec toute
sa
panoplie
à l'identique du Répertoire de Référence

Puis change "Toto" avec InputBox("Entrer le numéro du nouveau
projet")

Nouvel essai en saisissant dans la Boîte de dialogue le nom du
répertoire
à
créer

Faire une nouvelle vérification

Si tout est Ok reste à mettre en place la partie :
& Chr(13) & "Nom du dossier et Exemple: 1859

J'ai retesté avec à la virgule prés ce que tu m'as mis dans ta
réponse
avec
ta correction (effectivement il y avait une parenthèse fermante
en
trop),
aucune anomalie à déplorer avec la création du répertoire

Réalise donc de proche en proche ce code et donne moi le
résultat
!!!!




Ca ne fonctionne pas mais je pense que c'est un problème de
syntaxe
de la
dernière ligne :

Fso.CopyFolder Source, Destination & InputBox("Entrer le
numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859")), False

j'ai modifé comme ceci:

Fso.CopyFolder (Source, Destination & InputBox("Entrer le
numéro
du
nouveau
projet" & Chr(13) & "Nom du dossier et Exemple: 1859"), False)

mais il me dit qu'il y a toujours un problème de syntaxe

"Problème de compilation
attendu : = "

j'ai une autre question, les déclarations Dim, on peut les
placers
en
plein
milieu d'un code ou l'on doit les mettres tous au début du code
comme
les
déclarations Public ?



"FFO" a écrit dans le message
de
news:

Rebonjour à toi

C'était bien tenté mais pas à la hauteur du cahier des
charges
Concernant le chemin du dossier partant du principe qu'il
devait
être
identique à celui du fichier en cours d'utilisation tu le
retrouvais
dans
l'instruction :

ThisWorkbook.Path























1 2