XL 2016 Chemin de fichier pour définir un classeur

Remteyss

XLDnaute Junior
Bonjour,

Pour ma macro, j'utilise un userform. Dans mon userform, l'utilisateur doit sélectionner trois fichiers excel séparément en sélectionnant un bouton "Parcourir" (qui est donc présent à trois reprises). Ensuite, une fois le fichier sélectionné, le chemin est collé dans une textbox à côté. Jusque là mon code fonctionne bien.

Ensuite, j'ai également un bouton Start me permettant de lancer la macro principale. Le problème est qu'au début de cette macro je définis les trois classeurs comme suit :

Set oldTHG = Workbooks("THG_B_M")
Set newTHG = Workbooks("THG_G")
Set MAP_G = Workbooks("FKL_MAP_G")

Cela fonctionnait bien quand je n'avais pas créé l'userform, mais je voudrais à présent définir ces classeurs de la sorte :

Set oldFSM = Workbooks(TextBox1.Text)
Set newFSM = Workbooks(TextBox2.Text)
Set MAP_Geely = Workbooks(TextBox3.Text)

Sachant que si j'affiche un MsgBox TextBoxi, j'obtiens respectivement :
C:\Users\vt\Documents\Auto\Script\THG_B_M
C:\Users\vt\Documents\Auto\Script\THG_G
C:\Users\vt\Documents\Auto\Script\FKL_MAP_G

Je suis débutant sur VBA et je suppose qu'il s'agit d'une erreur de syntaxe... le programme me renvoie l'erreur d'exécution "9" : "L'indice n'appartient pas à la sélection"

Merci d'avance pour votre aide !
 
Solution
Bonsoir le fil, Remteyss

•>Remteyss
Un truc du genre ?
(fonctionne apparemment sur mon PC)
VB:
Dim sChemFic$
Private Sub CommandButton1_Click()
Dim NomClass$
sChemFic = Application.GetOpenFilename("Classeur (*.xlsx), *.xls")
NomClass = Mid(sChemFic, InStrRev(sChemFic, "\") + 1, Len(sChemFic))
TextBox1.Text = NomClass
End Sub

Private Sub CommandButton2_Click()
Dim WBK As Workbook
Set WBK = Workbooks.Open(sChemFic)
WBK.Activate
Me.Hide
End Sub
EDITION: Bonsoir Dranreb
J'ai posté mon message, sans voir le tien.

Dranreb

XLDnaute Barbatruc
Bonsoir.
Moi j'utilise habituellement P = InstrRev(CheminFichier, "\") pour obtenir Dossier = Left$(CheminFichier, P - 1) et NomFic = Mid$(CheminFichier, P + 1).
Mais n'y a t-il pas d'extension derrière ? Faire peut être NomFic = Dir(CheminFichier & ".xl*")
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Remteyss

•>Remteyss
Un truc du genre ?
(fonctionne apparemment sur mon PC)
VB:
Dim sChemFic$
Private Sub CommandButton1_Click()
Dim NomClass$
sChemFic = Application.GetOpenFilename("Classeur (*.xlsx), *.xls")
NomClass = Mid(sChemFic, InStrRev(sChemFic, "\") + 1, Len(sChemFic))
TextBox1.Text = NomClass
End Sub

Private Sub CommandButton2_Click()
Dim WBK As Workbook
Set WBK = Workbooks.Open(sChemFic)
WBK.Activate
Me.Hide
End Sub
EDITION: Bonsoir Dranreb
J'ai posté mon message, sans voir le tien.
 

Dranreb

XLDnaute Barbatruc
Essayez ça par exemple :
VB:
Option Explicit
Sub Test()
   Dim Wbk As Workbook
   Set Wbk = Classeur("C:\Users\vt\Documents\Auto\Script\THG_B_M")
   End Sub
Function Classeur(ByVal ChNomFSsX As String) As Workbook
   Dim P As Long, NomDoss As String, ArgDir As String, NomFSsX As String, NomFic As String
   P = InStrRev(ChNomFSsX, "\")
   NomDoss = Left$(ChNomFSsX, P - 1)
   On Error Resume Next
   ChDrive NomDoss: ChDir NomDoss
   If Err Then MsgBox "Dossier """ & NomDoss & """ inaccessible.", _
      vbCritical, "Classeur": Exit Function
   NomFSsX = Mid$(ChNomFSsX, P + 1)
   ArgDir = NomFSsX & "*.xl*"
   NomFic = Dir(ArgDir)
   If NomFic = "" Then MsgBox """" & ArgDir & """ introuvable sur" _
      & vbLf & NomDoss, vbCritical, "Classeur": Exit Function
   On Error Resume Next
   Set Classeur = Workbooks(NomFic)
   If Err = 0 Then Exit Function
   Err.Clear
   Set Classeur = Workbooks.Open(NomFic)
   If Err Then MsgBox Err.Description, vbCritical, "Classeur"
   End Function
 

Remteyss

XLDnaute Junior
Bonjour,
Je vous remercie pour vos retours.
Dranreb, les fichiers qui doivent être ouverts sont à priori en xlsx donc ça ne devrait pas poser problème.
J'ai essayé les procédure de Staple1600 que j'ai fusionné en une et cela semble bien fonctionner !
Je vais également testé ton script Dranreb, merci beaucoup
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 320
Membres
103 178
dernier inscrit
BERSEB50