[VB.NET -> VBA] Importer fichier txt

ccadic33 - 4 avril 2013 à 12:13
 ccadic33 - 4 avril 2013 à 16:08
Bonjour à tous,

En fait, j'aimerai importer un fichier txt sous excel (ça c'est fait) mais pour un type de fichier délimité par des séparateurs espaces.

Je pense que c'est assez simple mais je ne connais pas la commande pour le type de fichier et le type de séparateur.

Je vous remercie d'avance.

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 avril 2013 à 12:40
Bonjour,
à partir de VB.Net, je suppose, puisque discussion ouverte dans :
Forum > VB.NET et VB 2005

Bien.
Quels objets as-tu donc déclaré dans VB.Net pour piloter Excel à l'aide de VBA ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Voici mon code pour le moment :

Sub ImportTextFile()

Dim DestBook As Workbook, SourceBook As Workbook
Dim DestCell As Range
Dim RetVal As Boolean

' Turn off screen updating.
Application.ScreenUpdating = False

' Set object variables for the active book and active cell.
Set DestBook = ActiveWorkbook
Set DestCell = ActiveCell

' Show the Open dialog box.
RetVal = Application.Dialogs(xlDialogOpen).Show ("*.txt")

' If Retval is false (Open dialog canceled), exit the procedure.
If RetVal = False Then Exit Sub

' Set an object variable for the workbook containing the text file.
Set SourceBook = ActiveWorkbook

' Copy the contents of the entire sheet containing the text file.
Range(Range("A1"), Range("A1").SpecialCells(xlLastCell)).Copy

' Activate the destination workbook and paste special the values
' from the text file.
DestBook.Activate
DestCell.PasteSpecial Paste:=xlValues

' Close the book containing the text file.
SourceBook.Close False

End Sub
0
Utilisateur anonyme
4 avril 2013 à 15:54
Bonjour,

C'est juste du VBA, il n'y a rien de VB.net là-dedans. Et puis, ce code est supposé charger un fichier texte dans une feuille et copier le contenu dans une autre feuille.

Donc, il se passe quoi, réellement chez-vous avec cela ?
0
En fait pas grand chose...

J'ai enregistré ce que je voulais faire en macro :



Sub Macro1()
'
' Macro1 Macro
'

'Importer le fichier txt
ChDir "C:\Répertoires"
Workbooks.OpenText Filename:="C:\Répertoires\Nomfichier.txt", _
Origin:=xlMSDOS, _
StartRow:=1, _
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=True, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=True, _
Other:=False, _
FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True


'Supprimer les premières lignes vides
Rows("1:8").Select
Selection.Delete Shift:=xlUp
'Supprimer la première colonne inutile
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft


'Rassembler les FX
Rows("7:10").Select
Selection.Delete Shift:=xlUp
Rows("12:15").Select
Selection.Delete Shift:=xlUp


'Rassembler les FY et coller la colonne à coté de celle des FX
ActiveWindow.SmallScroll Down:=24
Rows("31:34").Select
Selection.Delete Shift:=xlUp
Rows("36:39").Select
Selection.Delete Shift:=xlUp
Range("C26:C40").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-48
Range("D2").Select
ActiveSheet.Paste


'Rassembler les FZ et coller la colonne à coté de celle des FY
ActiveWindow.SmallScroll Down:=48
Rows("55:58").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Rows("60:63").Select
Selection.Delete Shift:=xlUp
Range("C50:C64").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-72
Range("E2").Select
ActiveSheet.Paste


'Rassembler les MX et coller la colonne à coté de celle des FZ
ActiveWindow.SmallScroll Down:=72
Rows("79:82").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Rows("84:87").Select
Selection.Delete Shift:=xlUp
Range("C74:C88").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-81
Range("F2").Select
ActiveSheet.Paste


'Rassembler les MY et coller la colonne à coté de celle des MX
ActiveWindow.SmallScroll Down:=96
Rows("103:106").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Rows("108:111").Select
Selection.Delete Shift:=xlUp
Range("C98:C112").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-120
Range("G2").Select
ActiveSheet.Paste


'Rassembler les MZ et coller la colonne à coté de celle des MY
ActiveWindow.SmallScroll Down:=120
Rows("127:130").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Rows("132:135").Select
Selection.Delete Shift:=xlUp
Range("C122:C136").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-147
Range("H2").Select
ActiveSheet.Paste


'Supprimer le bas de la feuille
Range("A17:H192").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveWindow.SmallScroll Down:=-24


'Créer titres des colonnes
Range("C1").Select
ActiveCell.FormulaR1C1 = "FX"
Range("D1").Select
ActiveCell.FormulaR1C1 = "FY"
Range("E1").Select
ActiveCell.FormulaR1C1 = "FZ"
Range("F1").Select
ActiveCell.FormulaR1C1 = "MX"
Range("G1").Select
ActiveCell.FormulaR1C1 = "MY"
Range("H1").Select
ActiveCell.FormulaR1C1 = "MZ"


Range("C20").Select

ActiveWorkbook.SaveAs Filename:="C:\Répertoires\Nomfichier.xls", _
FileFormat:=xlExcel8, _
Password:="", _
WriteResPassword:="", _
ReadOnlyRecommended:=False, _
CreateBackup:=False

End Sub



Pour supprimer les vides automatiquement j'ai réussi à la faire autrement mais faut que je l'adapte à mon cas, car dès qu'une ligne vide apparaît je dois aussi supprimer les 3 suivantes qui ne sont pas nécessairement vides.
0
Rejoignez-nous