Convertir avec VBA
dan
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
je suis a la recherche d'une solution pour convertir un fichier texte que j'ouvre avec excel 2010, et je voudrai qu'au lancement de la macro, excel organise le fichier,
le fichier texte se décompose de la facon suivante : les données se trouvent dans la colonne A, chaque ligne comprens de nombreuse infos séparées de la faon suivante :
Info1|Info2|Info3|etc
je voudrais que chaque donnée qui se trouve entre les séparateurs"|" aille dans une nouvelle colonne, mais de quelle facon ?
je suis bien passé par l'enregistreur de macro mais je ne comprend pas le code décrit,
et pour le reproduire ! le mieux c'est de le comprendre
je voudrais aussi savoir comment organiser mes différentes commandes dans vb pour les lancer toutes en éxécutant une seule macro ?
Merci d'avance de votre retour,
et excusé mon ignorance
je suis a la recherche d'une solution pour convertir un fichier texte que j'ouvre avec excel 2010, et je voudrai qu'au lancement de la macro, excel organise le fichier,
le fichier texte se décompose de la facon suivante : les données se trouvent dans la colonne A, chaque ligne comprens de nombreuse infos séparées de la faon suivante :
Info1|Info2|Info3|etc
je voudrais que chaque donnée qui se trouve entre les séparateurs"|" aille dans une nouvelle colonne, mais de quelle facon ?
je suis bien passé par l'enregistreur de macro mais je ne comprend pas le code décrit,
et pour le reproduire ! le mieux c'est de le comprendre
je voudrais aussi savoir comment organiser mes différentes commandes dans vb pour les lancer toutes en éxécutant une seule macro ?
Merci d'avance de votre retour,
et excusé mon ignorance
3 réponses
-
Bonjour,
Un exemple :
Option Explicit 'Variables globales utiles pour le traitement Private Wk As Workbook Private ws As Worksheet Private cheminFichier As String '-- Macro Principale --- Public Sub MaMacro() InitVar 'Lancement de la procédure d'initialisation des variables OuvertureFichierTxt 'Lancement de l'ouverture et la lecture du fichier txt CloseVar 'Lancement de la procédure de fermeture des objets et libération de la mémoire End Sub '--- Initialisation des variables --- Private Sub InitVar() Set Wk = ThisWorkbook 'Créer un objet Workbook Set ws = Wk.Worksheets(1) 'Créer un objet Worksheet de l'instance Wk cheminFichier = "D:\CCM\monFichierTxt.txt" 'Chemin complet et nom du fichier à traiter End Sub 'Fermeture des objets Private Sub CloseVar() Set ws = Nothing Set Wk = Nothing End Sub '--- Ouverture du fichier txt --- Private Sub OuvertureFichierTxt() Dim fp As Integer Dim chaine As String '--- Ouverture du fichier txt fp = FreeFile Open cheminFichier For Input As fp While Not EOF(fp) 'Parcours toutes les lignes du fichier Input #fp, chaine Call TransposeExcel(chaine) 'Appel de la procédure de traitement de la ligne Wend Close fp End Sub '--- Traitement de la ligne et insertion dans Excel --- Private Sub TransposeExcel(ByVal strChaine As String) Dim mTab Dim i As Integer Dim DerLig As Long 'Récupération des éléments dans un tableau mTab = Split(strChaine, "|") 'Récupère la dernière ligne de la colonne A pour insertion à la suite DerLig = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 'Parcours le tableau For i = LBound(mTab) To UBound(mTab) 'Insertion des valeur dans Excel ws.Cells(DerLig, i + 1).Value = mTab(i) Next i End Sub
;0)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau -
Mon dieu que tu te compliques la vie Polux :
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, OtherChar:="|"
Ici, Selection peut être remplacé par un simple Range qui contient donc les données au format Info1|Info2|
Si le séparateur est autre que |, il faut remplacer la valeur de OtherChar:=
-
Bonsoir à tous,
à la limite, pourquoi une macro alors qu'excel peut le faire directement ?
'Données / Convertir...', Choisir 'Délimité' et mettre le séparateur |
Et toutes les données sont réparties en colonne.
eric