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

emplacement relatif

10 réponses
Avatar
f4crw
Bonsoir,
chemin = ActiveWorkbook.Path me donne l'emplacement où se trouve mon
classeur et je voudrai le sauvegarder dans le dossier qui se trouve 2
niveaux plus hauts dans l'arborescence sans connaitre le lecteur de départ.
Ex.: Disque?: \nouveau dossier\ dossier 1\dossier 2\ mon fichier
fichier à sauvegarder dans dossier 1 qui peut avoir un autre nom

comment récupéré chemin de ce dossier

10 réponses

Avatar
Daniel.C
Bonsoir.

ChDir ActiveWorkbook.Path
ChDir "...."

Utilise aussi ChDrive si tu changes de disque.
Cordialement.
Daniel

Bonsoir,
chemin = ActiveWorkbook.Path me donne l'emplacement où se trouve mon classeur
et je voudrai le sauvegarder dans le dossier qui se trouve 2 niveaux plus
hauts dans l'arborescence sans connaitre le lecteur de départ.
Ex.: Disque?: nouveau dossier dossier 1dossier 2 mon fichier
fichier à sauvegarder dans dossier 1 qui peut avoir un autre nom

comment récupéré chemin de ce dossier
Avatar
f4crw
Bonsoir ou bonjour ?

Désolé ça ne marche pas ou bien je n'ai pas compris.
J'utilise déjà ChDir et ChDrive dans d'autres modules, mais avec un chemin
absolu pas avec "....".
Il y a peut-être une syntaxe que je ne saisis pas.
à bientôt
F4CRW

"Daniel.C" a écrit dans le message de news:
Bonsoir.

ChDir ActiveWorkbook.Path
ChDir "...."

Utilise aussi ChDrive si tu changes de disque.
Cordialement.
Daniel

Bonsoir,
chemin = ActiveWorkbook.Path me donne l'emplacement où se trouve mon
classeur et je voudrai le sauvegarder dans le dossier qui se trouve 2
niveaux plus hauts dans l'arborescence sans connaitre le lecteur de
départ.
Ex.: Disque?: nouveau dossier dossier 1dossier 2 mon fichier
fichier à sauvegarder dans dossier 1 qui peut avoir un autre nom

comment récupéré le chemin de ce dossier




Avatar
pirot
bonjour,
ben ... la syntaxe de daniel.C est bonne
tu n'as qu'à essayer:
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir
et regarde le contenu de a, c'est bien le dosssier 2 au dessus de
"chemin"
pour être sûr que 2 chemins au dessus existent, il faudrait par
exemple compter les de chemin :
a = 0
For i = 1 To Len(chemin)
If Mid(chemin, i, 1) = "" Then a = a + 1
Next i
If a >= 2 Then ChDir "...." Else 'erreur ???? bigre, que faire ???
----------------------------------------------------------------------
@+
pirot
Avatar
michdenis
Bonjour,

Dans un module standard, copie ce qui suit.
Comme je ne suis pas en réseau, je ne peux pas
tester ça.

'Déclaration API dans le haut du module
Private Declare Function SetCurrentDirectoryA Lib _
"kernel32" (ByVal lpPathName As String) As Long
'-------------------------------
Sub ChDirNet(szPath As String)
'collectif, d'après Laurent Longre, mpep
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError + 1, "Error setting path."
End Sub
'-------------------------------

'--------------------------------------
Sub Sauvegarde()
Dim Chemin As String
Dim GestionErreur
Chemin = "Lecteurnouveau dossier dossier 1"
On Error GoTo GestionErreur
ChDirNet Chemin
ThisWorkbook.SaveAs Chemin & ThisWorkbook.Name
Exit Sub
GestionErreur:
MsgBox "Problème avec le chemin"
End Sub
'--------------------------------------




"f4crw" a écrit dans le message de groupe de discussion :
#
Bonsoir,
chemin = ActiveWorkbook.Path me donne l'emplacement où se trouve mon
classeur et je voudrai le sauvegarder dans le dossier qui se trouve 2
niveaux plus hauts dans l'arborescence sans connaitre le lecteur de départ.
Ex.: Disque?: nouveau dossier dossier 1dossier 2 mon fichier
fichier à sauvegarder dans dossier 1 qui peut avoir un autre nom

comment récupéré chemin de ce dossier
Avatar
f4crw
Bonsoir
apprès essai de :
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir


chemin = ActiveWorkbook.Path ' qui est C:Documents and
SettingsRégis.XXXMes documentsTempMonFichier.xls

ChDir "...."

a = CurDir ' me donne a = "E:"
Si je sauvegarde le fichier est dans le disque E:
Je dois vous que le dossier de travail par défaut d'Office est E:Mes
documents



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

bonjour,
ben ... la syntaxe de daniel.C est bonne
tu n'as qu'à essayer:
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir
et regarde le contenu de a, c'est bien le dosssier 2 au dessus de
"chemin"
pour être sûr que 2 chemins au dessus existent, il faudrait par
exemple compter les de chemin :
a = 0
For i = 1 To Len(chemin)
If Mid(chemin, i, 1) = "" Then a = a + 1
Next i
If a >= 2 Then ChDir "...." Else 'erreur ???? bigre, que faire ???
----------------------------------------------------------------------
@+
pirot
Avatar
Daniel.C
Utilise :

MsgBox CurDir
MsgBox ActiveWorkbook.Path
ChDrive Left(ActiveWorkbook.Path, 1)
ChDir "...."
MsgBox CurDir

Daniel

Bonsoir
apprès essai de :
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir


chemin = ActiveWorkbook.Path ' qui est C:Documents and
SettingsRégis.XXXMes documentsTempMonFichier.xls

ChDir "...."

a = CurDir ' me donne a = "E:"
Si je sauvegarde le fichier est dans le disque E:
Je dois vous que le dossier de travail par défaut d'Office est E:Mes
documents



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

bonjour,
ben ... la syntaxe de daniel.C est bonne
tu n'as qu'à essayer:
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir
et regarde le contenu de a, c'est bien le dosssier 2 au dessus de
"chemin"
pour être sûr que 2 chemins au dessus existent, il faudrait par
exemple compter les de chemin :
a = 0
For i = 1 To Len(chemin)
If Mid(chemin, i, 1) = "" Then a = a + 1
Next i
If a >= 2 Then ChDir "...." Else 'erreur ???? bigre, que faire ???
----------------------------------------------------------------------
@+
pirot
Avatar
Daniel.C
PLus exactement :

MsgBox CurDir
MsgBox ActiveWorkbook.Path
ChDrive Left(ActiveWorkbook.Path, 1)
ChDir ActiveWorkbook.Path
ChDir "...."
MsgBox CurDir

Daniel

Utilise :

MsgBox CurDir
MsgBox ActiveWorkbook.Path
ChDrive Left(ActiveWorkbook.Path, 1)
ChDir "...."
MsgBox CurDir

Daniel

Bonsoir
apprès essai de :
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir


chemin = ActiveWorkbook.Path ' qui est C:Documents and
SettingsRégis.XXXMes documentsTempMonFichier.xls

ChDir "...."

a = CurDir ' me donne a = "E:"
Si je sauvegarde le fichier est dans le disque E:
Je dois vous que le dossier de travail par défaut d'Office est E:Mes
documents



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

bonjour,
ben ... la syntaxe de daniel.C est bonne
tu n'as qu'à essayer:
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir
et regarde le contenu de a, c'est bien le dosssier 2 au dessus de
"chemin"
pour être sûr que 2 chemins au dessus existent, il faudrait par
exemple compter les de chemin :
a = 0
For i = 1 To Len(chemin)
If Mid(chemin, i, 1) = "" Then a = a + 1
Next i
If a >= 2 Then ChDir "...." Else 'erreur ???? bigre, que faire ???
----------------------------------------------------------------------
@+
pirot
Avatar
f4crw
Bonsoir Daniel,
ChDir ActiveWorkbook.Path
ChDir "...."
fait bien ce que je veux merci.

Mais peux-tu m'expliquer : "Left(ActiveWorkbook.Path, 1)" et l'argument 1


"Daniel.C"
PLus exactement :

MsgBox CurDir
MsgBox ActiveWorkbook.Path
ChDrive Left(ActiveWorkbook.Path, 1)
ChDir ActiveWorkbook.Path
ChDir "...."
MsgBox CurDir

Daniel

Utilise :

MsgBox CurDir
MsgBox ActiveWorkbook.Path
ChDrive Left(ActiveWorkbook.Path, 1)
ChDir "...."
MsgBox CurDir

Daniel

Bonsoir
apprès essai de :
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir


chemin = ActiveWorkbook.Path ' qui est C:Documents and
SettingsRégis.XXXMes documentsTempMonFichier.xls

ChDir "...."

a = CurDir ' me donne a = "E:"
Si je sauvegarde le fichier est dans le disque E:
Je dois vous que le dossier de travail par défaut d'Office est E:Mes
documents



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

bonjour,
ben ... la syntaxe de daniel.C est bonne
tu n'as qu'à essayer:
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir
et regarde le contenu de a, c'est bien le dosssier 2 au dessus de
"chemin"
pour être sûr que 2 chemins au dessus existent, il faudrait par
exemple compter les de chemin :
a = 0
For i = 1 To Len(chemin)
If Mid(chemin, i, 1) = "" Then a = a + 1
Next i
If a >= 2 Then ChDir "...." Else 'erreur ???? bigre, que faire ???
----------------------------------------------------------------------
@+
pirot






Avatar
Daniel.C
ChDir ne fonctionne que si le lecteur est le même que celui du chemin
en cours.
Si le chemin en cours est :
c:temp
chdir e:donneesdanielmpfe
ne fonctionnera pas.
Il faut d'abord changer de lecteur (ChDrive) pour que celui-ci soit le
même que celui du chemin du classeur. Si le chemin du classeur est :
e:donneesdanielmpfe
il faut commencer par écrire :
ChDrive "e"
C'est la lettre du lecteur que l'on récupère par
Left(ActiveWorkbook.Path, 1)
(premier caractère du chemin, soit "e")
Daniel

Bonsoir Daniel,
ChDir ActiveWorkbook.Path
ChDir "...."
fait bien ce que je veux merci.

Mais peux-tu m'expliquer : "Left(ActiveWorkbook.Path, 1)" et l'argument 1


"Daniel.C"
PLus exactement :

MsgBox CurDir
MsgBox ActiveWorkbook.Path
ChDrive Left(ActiveWorkbook.Path, 1)
ChDir ActiveWorkbook.Path
ChDir "...."
MsgBox CurDir

Daniel

Utilise :

MsgBox CurDir
MsgBox ActiveWorkbook.Path
ChDrive Left(ActiveWorkbook.Path, 1)
ChDir "...."
MsgBox CurDir

Daniel

Bonsoir
apprès essai de :
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir


chemin = ActiveWorkbook.Path ' qui est C:Documents and
SettingsRégis.XXXMes documentsTempMonFichier.xls

ChDir "...."

a = CurDir ' me donne a = "E:"
Si je sauvegarde le fichier est dans le disque E:
Je dois vous que le dossier de travail par défaut d'Office est E:Mes
documents



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

bonjour,
ben ... la syntaxe de daniel.C est bonne
tu n'as qu'à essayer:
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir
et regarde le contenu de a, c'est bien le dosssier 2 au dessus de
"chemin"
pour être sûr que 2 chemins au dessus existent, il faudrait par
exemple compter les de chemin :
a = 0
For i = 1 To Len(chemin)
If Mid(chemin, i, 1) = "" Then a = a + 1
Next i
If a >= 2 Then ChDir "...." Else 'erreur ???? bigre, que faire ???
----------------------------------------------------------------------
@+
pirot






Avatar
f4crw
Bonjour,
OK merci beaucoup à tous pour vos réponses et bonne journée.
F4CRW


"Daniel.C" a écrit dans le message de news:

ChDir ne fonctionne que si le lecteur est le même que celui du chemin en
cours.
Si le chemin en cours est :
c:temp
chdir e:donneesdanielmpfe
ne fonctionnera pas.
Il faut d'abord changer de lecteur (ChDrive) pour que celui-ci soit le
même que celui du chemin du classeur. Si le chemin du classeur est :
e:donneesdanielmpfe
il faut commencer par écrire :
ChDrive "e"
C'est la lettre du lecteur que l'on récupère par
Left(ActiveWorkbook.Path, 1)
(premier caractère du chemin, soit "e")
Daniel

Bonsoir Daniel,
ChDir ActiveWorkbook.Path
ChDir "...."
fait bien ce que je veux merci.

Mais peux-tu m'expliquer : "Left(ActiveWorkbook.Path, 1)" et l'argument 1


"Daniel.C"
PLus exactement :

MsgBox CurDir
MsgBox ActiveWorkbook.Path
ChDrive Left(ActiveWorkbook.Path, 1)
ChDir ActiveWorkbook.Path
ChDir "...."
MsgBox CurDir

Daniel

Utilise :

MsgBox CurDir
MsgBox ActiveWorkbook.Path
ChDrive Left(ActiveWorkbook.Path, 1)
ChDir "...."
MsgBox CurDir

Daniel

Bonsoir
apprès essai de :
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir


chemin = ActiveWorkbook.Path ' qui est C:Documents and
SettingsRégis.XXXMes documentsTempMonFichier.xls

ChDir "...."

a = CurDir ' me donne a = "E:"
Si je sauvegarde le fichier est dans le disque E:
Je dois vous que le dossier de travail par défaut d'Office est E:Mes
documents



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

bonjour,
ben ... la syntaxe de daniel.C est bonne
tu n'as qu'à essayer:
chemin = ActiveWorkbook.Path
ChDir "../.."
a = CurDir
et regarde le contenu de a, c'est bien le dosssier 2 au dessus de
"chemin"
pour être sûr que 2 chemins au dessus existent, il faudrait par
exemple compter les de chemin :
a = 0
For i = 1 To Len(chemin)
If Mid(chemin, i, 1) = "" Then a = a + 1
Next i
If a >= 2 Then ChDir "...." Else 'erreur ???? bigre, que faire ???
----------------------------------------------------------------------
@+
pirot