Comment modifier ma macro pour ouvrir aussi un fichier .csv [Résolu/Fermé]

Signaler
Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020
-
Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020
-
Bonjour tout le monde,

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!

1 réponse

Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020
1
Bonjour,

Est-ce quelqu'un peu m'aider sur ce coup?

Merci!
Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020
1 > Mosca
Re,

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!
>
Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020

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.

A+
Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020
1
Re,

Mon Userform n'est pas très compliqué, j'ai 3 textbox pour inscrire un nom de site, un numéro de sondage et l'élévation du terrain. Pour choisir le fichier, j'appui sur un Commandbutton qui ouvre ma boîte de dialogue pour choisir le fichier.

J'aime bien ta proposition pour ajouter un filtre pour les .csv dans la fenêtre Sélectionner un fichier!

Merci beaucoup!
>
Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020

Alors c'est très simple, on va juste modifier la Fonction ParcourirFichier en ajoutant un filtre
Voici la partie du code à modifier, je t'ai mis en gras la ligne à rajouter.

  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


.Filters.Add "Fichiers .csv", "*.csv", 2

If .Show = -1 Then
ParcourirFichier = .SelectedItems(1)
Else
ParcourirFichier = ""
End If
End With



A l'execution, dans la fenêtre Selectionner un fichier, choisir le type dans la liste déroulante

A+
Messages postés
266
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
14 février 2020
1
Re,

Merci beaucoup, c'est exactement ça! Ça fonctionne nickel!