Bonjour,
A l'ouverture de ma feuille excel, je veux une boîte de dialogue qui propose soit de lancer une nouvelle étude, soit de charger une étude. Pour la nouvelle étude, facile, l'utilisateur clique sur "nouvelle étude" et hop, il reste sur le même fichier. Pour en charger une autre, j'ai cherché à travers les forums comment parcourir les dossiers via vba.
J'ai trouvé ce code:
Sub OpenMultipleFiles()
Dim S(), LesFiltres As String
Dim Title As String
Dim x As Integer, FilterIndex As Integer
Dim Filename As Variant, Message As String
LesFiltres = "Excel Files (*.xlsx),*.xlsx," & _
"Text Files (*.txt),*.txt," & _
"All Files (*.*),*.*"
'Filtre par défaut *.* -> All Files
FilterIndex = 1
'Titre de la boîte de dialogue
Title = "Sélectionner les fichiers à ouvrir..."
'Pour sélectionner le lecteur
CurDir "c:"
'Pour sélectionner le répertoire à l'ouverture
ChDir "c:"
Filename = Application.GetOpenFilename(FileFilter:=LesFiltres, _
FilterIndex:=FilterIndex, Title:=Title, MultiSelect:=True)
Select Case TypeName(Filename)
Case Is = "Boolean"
'annuler la boîte de dialogue
Exit Sub
Case Is = "String"
'un fichier seulement de sélectionner
ReDim S(1 To 1)
S(1) = Filename
Case Else
ReDim S(1 To UBound(Filename))
S = BubbleSort(Filename)
End Select
For x = LBound(S) To UBound(S)
Message = Message & S(x) & vbCrLf
Next
MsgBox Message
End Sub
'-----------------------------------
Function BubbleSort(List As Variant)
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp
First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If List(i) > List(j) Then
Temp = List(j)
List(j) = List(i)
List(i) = Temp
End If
Next j
Next i
BubbleSort = List
End Function
Je l'essaie enfin, tout va bien, je peux chercher dans mes dossiers, pas de problème. Sauf que ce qui m'intéresse, mie de rien, c'est qu'une fois le fichier sélectionné, il puisse me l'ouvrir.
J'ai donc rajouté une fonction "ouvrir", qui dit ceci:
Function ouvrir()
Set wb = Workbooks.Open(Filename)
End Function
Mais, rien à faire, je n'y arrive pas. Si quelqu'un pourrait m'aider ^^
Merci d'avance!
A l'ouverture de ma feuille excel, je veux une boîte de dialogue qui propose soit de lancer une nouvelle étude, soit de charger une étude. Pour la nouvelle étude, facile, l'utilisateur clique sur "nouvelle étude" et hop, il reste sur le même fichier. Pour en charger une autre, j'ai cherché à travers les forums comment parcourir les dossiers via vba.
J'ai trouvé ce code:
Sub OpenMultipleFiles()
Dim S(), LesFiltres As String
Dim Title As String
Dim x As Integer, FilterIndex As Integer
Dim Filename As Variant, Message As String
LesFiltres = "Excel Files (*.xlsx),*.xlsx," & _
"Text Files (*.txt),*.txt," & _
"All Files (*.*),*.*"
'Filtre par défaut *.* -> All Files
FilterIndex = 1
'Titre de la boîte de dialogue
Title = "Sélectionner les fichiers à ouvrir..."
'Pour sélectionner le lecteur
CurDir "c:"
'Pour sélectionner le répertoire à l'ouverture
ChDir "c:"
Filename = Application.GetOpenFilename(FileFilter:=LesFiltres, _
FilterIndex:=FilterIndex, Title:=Title, MultiSelect:=True)
Select Case TypeName(Filename)
Case Is = "Boolean"
'annuler la boîte de dialogue
Exit Sub
Case Is = "String"
'un fichier seulement de sélectionner
ReDim S(1 To 1)
S(1) = Filename
Case Else
ReDim S(1 To UBound(Filename))
S = BubbleSort(Filename)
End Select
For x = LBound(S) To UBound(S)
Message = Message & S(x) & vbCrLf
Next
MsgBox Message
End Sub
'-----------------------------------
Function BubbleSort(List As Variant)
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp
First = LBound(List)
Last = UBound(List)
For i = First To Last - 1
For j = i + 1 To Last
If List(i) > List(j) Then
Temp = List(j)
List(j) = List(i)
List(i) = Temp
End If
Next j
Next i
BubbleSort = List
End Function
Je l'essaie enfin, tout va bien, je peux chercher dans mes dossiers, pas de problème. Sauf que ce qui m'intéresse, mie de rien, c'est qu'une fois le fichier sélectionné, il puisse me l'ouvrir.
J'ai donc rajouté une fonction "ouvrir", qui dit ceci:
Function ouvrir()
Set wb = Workbooks.Open(Filename)
End Function
Mais, rien à faire, je n'y arrive pas. Si quelqu'un pourrait m'aider ^^
Merci d'avance!