VBA - Sélection fichier texte puis conversion automatique

neal

XLDnaute Junior
Bonjour à tous,

J’essaye de créer une macro permettant à l’utilisateur de cliquer sur un bouton dans Excel pour ouvrir une boîte de dialogue pour aller chercher un fichier à n’importe quel endroit.
Ce fichier est au format texte, il faut donc le convertir et je n’arrive pas à le faire automatiquement, et surtout quelque soit le nombre de lignes et de colonnes : les boîtes de dialogue de conversion apparaissent toujours, l’utilisateur est obligé de cliquer sur suivant>suivant>terminer).

Comment faire pour combiner les deux macros suivantes ?

Macro permettant d’ouvrir n’importe quel fichier à partir d’un bouton sous Excel :

Dim Fichier_traité As String
Application.Dialogs(xlDialogOpen).Show
Fichier_traité = ActiveWorkbook.Name
ActiveSheet.Copy Before:=ThisWorkbook.Sheets(1)
Windows(Fichier_traité).Close Savechanges:=False

Ma macro enregistrée pour ouvrir le fichier texte (bloc-notes) :

Workbooks.OpenText Filename:= _
"D:\Gd livre 010114 310514.txt" _
, Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1)), _
TrailingMinusNumbers:=True
 

Pierrot93

XLDnaute Barbatruc
Re : VBA - Sélection fichier texte puis conversion automatique

Bonjour,

essaye peut être ceci :
Code:
Option Explicit
Sub test()
With Application.FileDialog(msoFileDialogFilePicker)
    .InitialFileName = ActiveWorkbook.Path & "\"
    .Filters.Clear
    .Filters.Add "ma descrip", "*.txt"
    .Show
    If .SelectedItems.Count > 0 Then
        Workbooks.OpenText Filename:=.SelectedItems(1), Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
         xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
         Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
         Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
         Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1)), _
         TrailingMinusNumbers:=True
    End If
End With
End Sub
bonne journée
@+
 

neal

XLDnaute Junior
Re : VBA - Sélection fichier texte puis conversion automatique

Woaw, merci pour la réponse super rapide, et merci pour la macro qui fonctionne à merveille (même si je ne la comprends pas!)

Du coup, j'en profite pour aller jusqu'au bout de mon "besoin" :p

Une fois le fichier ouvert et converti dans Excel, j'ai une autre macro à faire tourner (voir ci-dessous) qui permet de retraiter les données comme je le souhaite. J'ai essayé de la combiner à la tienne, mais ça ne marche pas...

Code:
Set zone = ActiveSheet.UsedRange.Rows
ActiveSheet.Rows(2).Copy (ActiveSheet.Rows(1))
For Each i In zone
If i.Row <> 1 Then
If IsDate(i.Columns(1)) = False And IsNumeric(i.Columns(3)) = False And i.Row <> 1 Then
i.Columns(1) = "efface"
End If
If IsDate(i.Columns(1)) = False And IsNumeric(i.Columns(2)) = True Then
compte = i.Columns(2)
End If
If IsDate(i.Columns(1)) = True Then
i.Columns(7) = compte
End If
End If
Next
For Each i In zone
If i.Columns(1) = "efface" Then i.EntireRow.Clear
Next
For Each i In zone
If IsDate(i.Columns(1)) = False And i.Row <> 1 Then i.EntireRow.Clear
Next
ActiveSheet.UsedRange.Sort key1:=ActiveSheet.Columns(1), Header:=xlYes
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi