Convertir avec VBA
dan
-
eriiic Messages postés 25847 Statut Contributeur -
eriiic Messages postés 25847 Statut Contributeur -
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
A voir également:
- Convertir avec VBA
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Convertir youtube en mp3 avec audacity - Guide
- Convertir epub en kindle - Guide
- Convertir kindle en epub - Guide
- Convertir audio en texte word - Guide
3 réponses
Bonjour,
Un exemple :
;0)
«Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
Nicolas Boileau
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 :
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:=
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:=