J'ai un code qui a été créé par Patrice qui fonctionne très bien, qui me sert à ouvrir un fichier .dat et fait une mise en forme du fichier par la suite. J'aimerais ajouter le possibilité d'ouvrir aussi un fichier .csv.
J'ai essayé mais sans succès!! Je sais que c'est l'extension qu'il faut ajouter, mais je n'ia pas réussi la bonne méthode. J'avais ajouté un case dans la macro choisir-fichier.
Voici le code:
'————————————————————————————————————————————————————————————————————————————————————————————
' Module : mOuvrir
' Objet : Ouvre (et corrige) des fichiers de format non Excel
'
' Historique succint
' Date Developpeur Version Action Macro
'————————————————————————————————————————————————————————————————————————————————————————————
' 08/12/13 Patrice V1-0-00 Création mOuvrir
'
'
' DAO : Etablir une références à Microsoft DAO 3.6 Object Library
'
Option Explicit
Option Private Module
'
'————————————————————————————————————————————————————————————————————————————————————————————
' Constantes du module
'————————————————————————————————————————————————————————————————————————————————————————————
' Adresse des cellules de
'
Public Sub Choisir_fichier(ByVal strType As String)
' Choix et ouverture d'un fichier
'
' Arguments : strExtension [in] Type de fichier
'
' Date Developpeur Version Action Macro
'————————————————————————————————————————————————————————————————————————————————————————————
' 17/01/13 Patrice V1-1-00 Création Choisir_fichier
'
Dim wbkExtension As Workbook 'Fichier à ouvrir
Dim strNomFichier As String 'Nom du fichier
Dim strExtension As String 'Extension du fichier
Dim intFormat As Integer 'Format de fichier
Dim blnLocal As Boolean 'Format local
Select Case strType
Case "en.dat"
strExtension = ".dat"
intFormat = 2 'Csv anglais : virgule
blnLocal = False
Case Else
MsgBox "Format non prévu"
Exit Sub
End Select
'Choisir le fichier fédéral (.dat pour le tirage)
strNomFichier = mOuvrir.ParcourirFichier(strExtension, "M:\Entrepot\BDFS\1_Piézomètres\")
If strNomFichier = "" Then Exit Sub
'Arrêter l'actualisation de l'écran
Application.ScreenUpdating = False
'Ouvrir le fichier selon au format
Set wbkExtension = Workbooks.Open(Filename:=strNomFichier, Format:=intFormat, local:=blnLocal)
wbkExtension.Worksheets(1).Columns.AutoFit
wbkExtension.Worksheets(1).Rows.AutoFit
'Rétablir l'actualisation de l'écran
Application.ScreenUpdating = True
UserForm2.Hide
End Sub
Function ParcourirFichier(ByVal strExtension As String, _
Optional ByVal strChemin As String = "") As String
' Choix d'un fichier
'
' Arguments : strExtension [in] Extension du fichier
' strChemin [in] Répertoire à parcourir
'
' Retour : String Chemin du fichier sélectionné, "" si annuler
'
' Date Developpeur Version Action Macro
'————————————————————————————————————————————————————————————————————————————————————————————
' 13/02/11 Patrice V1-0-00 Création - ParcourirFichier
'
Dim dlgParcourir As FileDialog 'Boite de dialogue fichiers
'Repertoire par défaut : celui de cette macro
If strChemin = "" Then strChemin = ThisWorkbook.Path
'Créer une boite de dialogue Parcourir fichier
Set dlgParcourir = Application.FileDialog(msoFileDialogFilePicker)
'Selectionner le fichier
With dlgParcourir
.InitialFileName = strChemin
.Title = "Sélectionner un fichier " & strExtension & " :"
.AllowMultiSelect = False
.InitialView = msoFileDialogViewDetails
.ButtonName = "Sélection fichier"
If .Filters.Count > 0 Then .Filters.Delete
.Filters.Add "Fichiers " & strExtension, "*" & strExtension, 1
If .Show = -1 Then
ParcourirFichier = .SelectedItems(1)
Else
ParcourirFichier = ""
End If
End With
Set dlgParcourir = Nothing
End Function
Merci beaucoup pour votre aide!
A voir également:
Comment modifier ma macro pour ouvrir aussi un fichier .csv
Quand il ouvre la boîte de dialogue, je n'ai pas l'option dans la fenêtre en bas à droite pour les fichiers avec l'extension .csv mais seulement les fichiers avec l'extension .dat.
Si ça marche, il faut que tu appelle la procédure Choisir_fichier avec le paramètre ".csv"
Tu devras certainement modifier le formulaire Userform2.
Mais sinon, sans rien modifier de ton code initial, tu peux tout simplement taper *.csv + Entréee dans le champ Nom du fichier de la fenêtre Selectionner un fichier. Comme ça tu changes le filtre et les fichiers csv seront listés.
Effectivement, ça fonctionne bien si je tape *.csv dans la barre.
Mais es-ce qu'il y a un moyen pour l'ajouter directement dans la boîte de dialogue? Quand tu dit modifier mon Userform2, ça serais d'ajouter l'option avec une case à cocher ou quelque chose du genre?
Ne sachant pas exactement comment tu as constitué ton formulaire Userform2, difficile de répondre.
Mais a un moment donné, tu dois bien indiquer au programme le type de fichier à ouvrir.
Dans ta macro, il est fait référence seulement au type "en.dat" (*.dat)
Y a-t-il d'autre types de définis?
Comment est sélectionné le type de fichier à ouvrir, bouton option? , Combobox?, Liste déroulante?, Text Box?...
Quel évènement lance la macro, clic sur bouton? , appui sur une touche?...
On pourrait aussi mettre plusieurs filtres dans la fenêtre Sélectionner un Fichier (*.dat; *.csv; *.txt), qu'on pourrait choisir directement dans cette fenêtre.
Plusieurs solutions sont envisageables, mais il faut donner plus de détails.
Il suffit de compléter le Select Case ... End Select comme ceci
Cordialement
Merci pour ta réponse.
J'ai essayé, mais ça ne fonctionne pas!
Quand il ouvre la boîte de dialogue, je n'ai pas l'option dans la fenêtre en bas à droite pour les fichiers avec l'extension .csv mais seulement les fichiers avec l'extension .dat.
Merci!
Tu devras certainement modifier le formulaire Userform2.
Mais sinon, sans rien modifier de ton code initial, tu peux tout simplement taper *.csv + Entréee dans le champ Nom du fichier de la fenêtre Selectionner un fichier. Comme ça tu changes le filtre et les fichiers csv seront listés.
A+.
Effectivement, ça fonctionne bien si je tape *.csv dans la barre.
Mais es-ce qu'il y a un moyen pour l'ajouter directement dans la boîte de dialogue? Quand tu dit modifier mon Userform2, ça serais d'ajouter l'option avec une case à cocher ou quelque chose du genre?
Merci!
Mais a un moment donné, tu dois bien indiquer au programme le type de fichier à ouvrir.
Dans ta macro, il est fait référence seulement au type "en.dat" (*.dat)
Y a-t-il d'autre types de définis?
Comment est sélectionné le type de fichier à ouvrir, bouton option? , Combobox?, Liste déroulante?, Text Box?...
Quel évènement lance la macro, clic sur bouton? , appui sur une touche?...
On pourrait aussi mettre plusieurs filtres dans la fenêtre Sélectionner un Fichier (*.dat; *.csv; *.txt), qu'on pourrait choisir directement dans cette fenêtre.
Plusieurs solutions sont envisageables, mais il faut donner plus de détails.
A+