Macro convertion csv
Résolu
Emy_lee
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
Emy_lee Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Emy_lee Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Selection.texttocolumns destination
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
3 réponses
Bonjour
Si vous prenez le même séparateur vous devriez obtenir le même résultat que se soit en EXCEL ou avec le VBA.
Puisque ça marche quand vous le faites manuellement, utilisez l'enregistreur de macros et conservez le code obtenu (au passage, comparez- le avec votre macro, pour détecter ou se trouve l'anomalie).
Cdlt
Si vous prenez le même séparateur vous devriez obtenir le même résultat que se soit en EXCEL ou avec le VBA.
Puisque ça marche quand vous le faites manuellement, utilisez l'enregistreur de macros et conservez le code obtenu (au passage, comparez- le avec votre macro, pour détecter ou se trouve l'anomalie).
Cdlt
N'y a t_il pas 2 points virgules consécutifs?
Pourrait-on avoir un extrait de la colonne "A" avant conversion?
Pourrait-on avoir un extrait de la colonne "A" avant conversion?
Ci-dessous la colonne A que je convertie :
Date : 08/2015;;;;;;;;;
TEST :;;;;;;;;;
COLL. EXT = AA ;COLL. INT = AA;;;;;;;;
AAAA;2011;2012;2013;2014;;;;;
2011;802;79;77;12;;;;;
2012;653;357;147;29;;;;;
2013;584;247;57;17;;;;;
2014;344;596;0;0;;;;;
2015;0;5;0;0;;;;;
Titre :;;;;;;;;;
COLL. EXT = AA ;COLL. INT = AA;;;;;;;;
AAAA;2011;2012;2013;2014;;;;;
2011;51;3;45;10;;;;;
2012;80;1;48;7;;;;;
2013;125;1;123;18;;;;;
2014;0;0;6;92;;;;;
2015;0;0;0;1;;;;;
Titre = test :;;;;;;;;;
COLL. EXT = AA ;COLL. INT = AA;;;;;;;;
AAAA;2011;2012;2013;2014;2015;2016;;;
2011;24;0;0;19;25;5;90;33;3
2012;32;0;0;17;28;5;116;28;8
2013;8;2;0;10;20;2;67;15;2
2014;0;0;0;0;64;0;19;9;1
2015;0;0;0;0;0;0;16;7;1
Test = Titre :;;;;;;;;;
COLL. EXT = AA ;COLL. INT = AA;;;;;;;;
AAAA;2011;2012;2013;2014;2015;2016;;;
2011;2;1;1;1;;;;;
2012;9;5;7;0;;;;;
2013;20;7;4;0;;;;;
2014;0;5;0;0;;;;;
2015;0;0;0;0;;;;;
Merci pour votre aide.
Date : 08/2015;;;;;;;;;
TEST :;;;;;;;;;
COLL. EXT = AA ;COLL. INT = AA;;;;;;;;
AAAA;2011;2012;2013;2014;;;;;
2011;802;79;77;12;;;;;
2012;653;357;147;29;;;;;
2013;584;247;57;17;;;;;
2014;344;596;0;0;;;;;
2015;0;5;0;0;;;;;
Titre :;;;;;;;;;
COLL. EXT = AA ;COLL. INT = AA;;;;;;;;
AAAA;2011;2012;2013;2014;;;;;
2011;51;3;45;10;;;;;
2012;80;1;48;7;;;;;
2013;125;1;123;18;;;;;
2014;0;0;6;92;;;;;
2015;0;0;0;1;;;;;
Titre = test :;;;;;;;;;
COLL. EXT = AA ;COLL. INT = AA;;;;;;;;
AAAA;2011;2012;2013;2014;2015;2016;;;
2011;24;0;0;19;25;5;90;33;3
2012;32;0;0;17;28;5;116;28;8
2013;8;2;0;10;20;2;67;15;2
2014;0;0;0;0;64;0;19;9;1
2015;0;0;0;0;0;0;16;7;1
Test = Titre :;;;;;;;;;
COLL. EXT = AA ;COLL. INT = AA;;;;;;;;
AAAA;2011;2012;2013;2014;2015;2016;;;
2011;2;1;1;1;;;;;
2012;9;5;7;0;;;;;
2013;20;7;4;0;;;;;
2014;0;5;0;0;;;;;
2015;0;0;0;0;;;;;
Merci pour votre aide.
Je mexcuse vraiment pour le derangemeng. Mais voila jai changé carrement de tactique jai utilisé une nouvelle macro qui ouvre directement le fichier csv en le convertissant avant de le copié et ca marche nikel par contre le chemin du fichier est en dur dans le code la je vx le rendre dynamique en recuperant le contenu dune cellule ou je vx mettre le chemin et la ca marche pas. Voici ma macro : Sub Macro3()
'
' Macro3 Macro
'
'
Sheets("Importer").Select
Range("A2").Select
Chemin = Range("A2").Value
Nom = Range("B2").Value
ActiveCell.FormulaR1C1 = _
Chemin
'Range("A5").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;Chemin", _
Destination:=Range("$A$15"))
.Name = Nom
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierNone
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = ""
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
'
' Macro3 Macro
'
'
Sheets("Importer").Select
Range("A2").Select
Chemin = Range("A2").Value
Nom = Range("B2").Value
ActiveCell.FormulaR1C1 = _
Chemin
'Range("A5").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;Chemin", _
Destination:=Range("$A$15"))
.Name = Nom
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierNone
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = ""
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Besoin de précisions:
Quand vous dites "ça ne marche pas", il ne se passe rien? ou bien y a-t-il un message d'erreur? dans ce cas où s'arrête le programme?
Pour déceler l'erreur, faites du pas à pas (positionnez-vous au milieu de la macro et avancez par F8).
Autre chose:
En A2, y a-t-il
"Lecteur:\répertoire\sous-répertoire\Nom de fichier.ext" ?
ou bien
En A2 "Lecteur:\répertoire\sous-répertoire\"
et en B2
"Nom de fichier.ext" ? si c'est ce cas de figure, n'oubliez pas de mettre un antislash "\" à la fin en A2.
Si malgré tout ça, tout vous semble correct, pouvez-vous me recopier les contenus de A2 et B2?
"Range("A2").Select " ne sert à rien.
ActiveCell.FormulaR1C1 = Chemin cette ligne ne sert à rien aussi, elle ne fait que recopier au même endroit ce qu'elle vient d'enregistrer 2 lignes au-dessus.
Quand vous dites "ça ne marche pas", il ne se passe rien? ou bien y a-t-il un message d'erreur? dans ce cas où s'arrête le programme?
Pour déceler l'erreur, faites du pas à pas (positionnez-vous au milieu de la macro et avancez par F8).
Autre chose:
En A2, y a-t-il
"Lecteur:\répertoire\sous-répertoire\Nom de fichier.ext" ?
ou bien
En A2 "Lecteur:\répertoire\sous-répertoire\"
et en B2
"Nom de fichier.ext" ? si c'est ce cas de figure, n'oubliez pas de mettre un antislash "\" à la fin en A2.
Si malgré tout ça, tout vous semble correct, pouvez-vous me recopier les contenus de A2 et B2?
"Range("A2").Select " ne sert à rien.
ActiveCell.FormulaR1C1 = Chemin cette ligne ne sert à rien aussi, elle ne fait que recopier au même endroit ce qu'elle vient d'enregistrer 2 lignes au-dessus.
Re bonjour, effectivement quand jexecute jai une erreur qui saffiche qui est : erreur d'execution '1004'impossible de trouver le fichier texte pour lactualisation de cette plage de donnees externes.assurez vous que le texte na ete ni deplacé ni renommé et ressayez.
et quand je debogue il sarrete sur la derniere ligne .refresh backgroundquery :=false
Pour info la cellule a2 contient le chemin dacces de mon fichier+le nom du fichier.csv et la cellule b2 contien le nom du fichier.csv
et quand je debogue il sarrete sur la derniere ligne .refresh backgroundquery :=false
Pour info la cellule a2 contient le chemin dacces de mon fichier+le nom du fichier.csv et la cellule b2 contien le nom du fichier.csv
Voici ma macro :
ThisWorkbook.Worksheets("Base").Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=True, 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)), TrailingMinusNumbers:=True
N.b : mon separateur est ;
Merci davance pour votre réponse