Comment modifier ma macro pour ouvrir aussi un fichier .csv

Résolu/Fermé
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - Modifié par bassmart le 26/07/2016 à 14:16
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 - 28 juil. 2016 à 17:39
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!
A voir également:

1 réponse

bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1
27 juil. 2016 à 13:41
Bonjour,

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

Merci!
0
Bonjour,

Il suffit de compléter le Select Case ... End Select comme ceci

  Select Case strType
Case "en.dat"
strExtension = ".dat"
intFormat = 2 'Csv anglais : virgule
blnLocal = False

Case "en.csv"
strExtension = ".csv"
intFormat = 2 'Csv anglais : virgule
blnLocal = False

Case Else
MsgBox "Format non prévu"
Exit Sub
End Select


Cordialement
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > Mosca
27 juil. 2016 à 16:42
Bonjour Mosca,

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!
0
Mosca > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
27 juil. 2016 à 17:26
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.

A+.
0
bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023 1 > Mosca
27 juil. 2016 à 20:24
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!
0
Mosca > bassmart Messages postés 281 Date d'inscription jeudi 19 février 2015 Statut Membre Dernière intervention 19 décembre 2023
27 juil. 2016 à 21:21
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+
0