je me permets de vous embêter car je ne trouve pas la solution à mon problème malgré mes recherches
Je souhaite via vba permettre à l'utilisateur de selectionner un fichier excel qui me permettra de faire plein de trucs avec
je souhaiterai que le chemin proposé par défaut soit le chemin du classeur courant (celui via lequel est lancé la macro)
j'ai beau mettre le code qui me semblait adéquat, il me propose systématiquement le chemin C:\Users\[utilisateur]\Documents
voila mon code :
le FichierSource étant celui que l'utilisateur choisira
Code:
Sub MaisPourquoiCaMarchePas()
Dim FichierSource As String
ChDir Workbooks(ActiveWorkbook.Name).Path
FichierSource = Application.GetOpenFilename()
If FichierSource = "Faux" Then Exit Sub
Workbooks.Open FichierSource
End Sub
auriez vous une idée s'il vous plait ?
merci beaucoup et très bonne journée,
julien
À moins que le classeur actif soit sur un chemin réseau. Dans ce cas il faut changer de stratégie.
Il vous faut ce code :
VB:
#If VBA7 Then
Private Declare PtrSafe Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#Else
Private Declare Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#End If
je me permets de vous embêter car je ne trouve pas la solution à mon problème malgré mes recherches
Je souhaite via vba permettre à l'utilisateur de selectionner un fichier excel qui me permettra de faire plein de trucs avec
je souhaiterai que le chemin proposé par défaut soit le chemin du classeur courant (celui via lequel est lancé la macro)
j'ai beau mettre le code qui me semblait adéquat, il me propose systématiquement le chemin C:\Users\[utilisateur]\Documents
voila mon code :
le FichierSource étant celui que l'utilisateur choisira
Code:
Sub MaisPourquoiCaMarchePas()
Dim FichierSource As String
ChDir Workbooks(ActiveWorkbook.Name).Path
FichierSource = Application.GetOpenFilename()
If FichierSource = "Faux" Then Exit Sub
Workbooks.Open FichierSource
End Sub
auriez vous une idée s'il vous plait ?
merci beaucoup et très bonne journée,
julien
Sub MaisPourquoiCaMarche()
Dim FichierSource
FichierSource = Application.GetOpenFilename("Excel My Love (*.xl??), *.xl??")
If FichierSource = False Then FichierSource = ThisWorkbook.Path
MsgBox "J'ai sélectionné:" & Chr(13) & FichierSource
End Sub
Bonsoir.
Il faut aussi ChDrive ActiveWorkbook.Path en plus de ChDir ActiveWorkbook.Path si le lecteur courant n'est pas celui du chemin du classeur actif.
À moins que le classeur actif soit sur un chemin réseau. Dans ce cas il faut changer de stratégie.
Il vous faut ce code :
VB:
#If VBA7 Then
Private Declare PtrSafe Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#Else
Private Declare Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#End If
Sub MaisPourquoiCaMarchePas()
Dim chemin As String
Dim TempDrive As String
Dim ThePath As String
Dim UserDir As String
Dim UserDrive As String
UserDrive = Left(CurDir, 1) 'On Mémorise les Paramètres du User
UserDir = CurDir ' idem
chemin = ThisWorkbook.path
TempDrive = Left(chemin, 1) 'le lecteur mappé sur un serveur réseau
ThePath = chemin 'à ajuster au répertoire contenant tes classeurs
ChDrive TempDrive
ChDir ThePath
'Recupération du chemin et nom fichier d'extraction
chemin = Application.GetOpenFilename
ChDrive UserDrive 'On remet les paramètres du User
ChDir UserDir 'idem
End Sub
Sub MaisPourquoiCaMarche()
Dim FichierSource
FichierSource = Application.GetOpenFilename("Excel My Love (*.xl??), *.xl??")
If FichierSource = False Then FichierSource = ThisWorkbook.Path
MsgBox "J'ai sélectionné:" & Chr(13) & FichierSource
End Sub
Sub MaisPourquoiCaMarcheMieux()
Dim FichierSource
FichierSource = Application.GetOpenFilename("Excel My Love (*.xl??), *.xl??")
If FichierSource = False Then FichierSource = ThisWorkbook.Path
Workbooks.Open FichierSource
End Sub
test OK chez moi
(je le sais, je viens de le faire pendant que ma tisane infuse
Sub MaisPourquoiCaMarchePas()
Dim chemin As String
Dim TempDrive As String
Dim ThePath As String
Dim UserDir As String
Dim UserDrive As String
UserDrive = Left(CurDir, 1) 'On Mémorise les Paramètres du User
UserDir = CurDir ' idem
chemin = ThisWorkbook.path
TempDrive = Left(chemin, 1) 'le lecteur mappé sur un serveur réseau
ThePath = chemin 'à ajuster au répertoire contenant tes classeurs
ChDrive TempDrive
ChDir ThePath
'Recupération du chemin et nom fichier d'extraction
chemin = Application.GetOpenFilename
ChDrive UserDrive 'On remet les paramètres du User
ChDir UserDir 'idem
End Sub
À moins que le classeur actif soit sur un chemin réseau. Dans ce cas il faut changer de stratégie.
Il vous faut ce code :
VB:
#If VBA7 Then
Private Declare PtrSafe Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#Else
Private Declare Function SetCurrentDirectory Lib "kernel32" _
Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#End If