Pb mise en page import fichier.csv
Dernière réponse : dans Programmation
Bonsoir
,
Je viens de chercher un peu d'aider afin de résoudre un problème auquel je suis actuellement confronté.
Afin de d'éviter les taches répétitives, je me suis lancer dans un petit développement VBA qui consiste à
ouvrir un fichier .csv, l'utilisateur aura le choix du fichier (format des données identique pour chaque fichier,
fonction utilisée: GetOpenfilename), importer les données de ce fichier dans un nouvelle feuille excel créée au préalable.
Mon soucis, à l'aide du code ci-dessous, est que j'obtiens une erreur 1004 lors de l'exécution du code.Quand je supprime les "=" du fichier importé
cela résout le problème et la mise en page se fait correctement. Après plusieurs essais infructueux, je lance un appel à l'aide pour me sortir de ce mauvais pas,mais connaissances étant limitées au niveau du développement Vba.
Quelles commandes à insérer dans les lignes de code pour que mon import se fasse correctement?
D'avance, merci pour votre aide...
Psit67
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
Données importées non ok
Reference;="Zone 1";="Zone 2";="Zone 3"
#Description;AAAA-BBBBBB-A-A;AAAA-BBBBB;CCCC-B-A
#Analyse;;="............";="........."
1;1234;France;;;
2;1111;Allemagne;;;
3;5555;Suisse;;;
4;888;Belgique;;;
5;36;Autriche;
6;6789;Luxembourg;
7;3456;Angleterre;
Données importées ok
Reference;Zone 1;Zone 2;Zone 3
#Description;AAAA-BBBBBB-A-A;AAAA-BBBBB;CCCC-B-A
#Analyse;;"""............""";"""........."""
1;1234;France;
2;1111;Allemagne;
3;5555;Suisse;
4;888;Belgique;
5;36;Autriche;
6;6789;Luxembourg;
7;3456;Angleterre;
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
affichage souhaité:
Référence Zone 1 Zone 2 Zone 3
Description AAAA-BBBB-A-A AAAA-BBBBB CCCC-B-A
#Analyse ......... ........
1 1234 France
2 1111 Allemagne
3 5555 Suisse
4 888 Belgique
5 36 Autriche
6 6789 Luxembourg
7 3456 Angleterre
6 6789 Luxembourg
,Je viens de chercher un peu d'aider afin de résoudre un problème auquel je suis actuellement confronté.
Afin de d'éviter les taches répétitives, je me suis lancer dans un petit développement VBA qui consiste à
ouvrir un fichier .csv, l'utilisateur aura le choix du fichier (format des données identique pour chaque fichier,
fonction utilisée: GetOpenfilename), importer les données de ce fichier dans un nouvelle feuille excel créée au préalable.
Mon soucis, à l'aide du code ci-dessous, est que j'obtiens une erreur 1004 lors de l'exécution du code.Quand je supprime les "=" du fichier importé
cela résout le problème et la mise en page se fait correctement. Après plusieurs essais infructueux, je lance un appel à l'aide pour me sortir de ce mauvais pas,mais connaissances étant limitées au niveau du développement Vba.
Quelles commandes à insérer dans les lignes de code pour que mon import se fasse correctement?
D'avance, merci pour votre aide...
Psit67
----------------------------------------------------------------------------------------------
'Rechcerche Fichier .csv'
Sub OuvertureFichier()
Dim Fichier As Variant
ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Files *.csv (*.csv), *.csv")
If Fichier <> False Then
Lire Fichier
Else
Call SortieSuiteAPB("Erreur Ouverture Fichier Impossible")
End If
End Sub
---------------------------------------------------------------------------------------------
'import des informations'
Function Lire(ByVal NomFichier As String)
Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1
Separateur = ";"
Cells.Clear
NumFichier = FreeFile
iRow = 1
Open NomFichier For Input As #NumFichier
Do While Not EOF(NumFichier)
iCol = 1
Line Input #NumFichier, Chaine
Ar = Split(Chaine, Separateur)
For i = LBound(Ar) To UBound(Ar)
Cells(iRow, iCol) = (Ar(i))
iCol = iCol + 1
Next
iRow = iRow + 1
Loop
Close #NumFichier
End Function
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
Données importées non ok
Reference;="Zone 1";="Zone 2";="Zone 3"
#Description;AAAA-BBBBBB-A-A;AAAA-BBBBB;CCCC-B-A
#Analyse;;="............";="........."
1;1234;France;;;
2;1111;Allemagne;;;
3;5555;Suisse;;;
4;888;Belgique;;;
5;36;Autriche;
6;6789;Luxembourg;
7;3456;Angleterre;
Données importées ok
Reference;Zone 1;Zone 2;Zone 3
#Description;AAAA-BBBBBB-A-A;AAAA-BBBBB;CCCC-B-A
#Analyse;;"""............""";"""........."""
1;1234;France;
2;1111;Allemagne;
3;5555;Suisse;
4;888;Belgique;
5;36;Autriche;
6;6789;Luxembourg;
7;3456;Angleterre;
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
affichage souhaité:
Référence Zone 1 Zone 2 Zone 3
Description AAAA-BBBB-A-A AAAA-BBBBB CCCC-B-A
#Analyse ......... ........
1 1234 France
2 1111 Allemagne
3 5555 Suisse
4 888 Belgique
5 36 Autriche
6 6789 Luxembourg
7 3456 Angleterre
6 6789 Luxembourg
Autres pages sur : mise page import fichier csv
Lassé par la pub ? Créez un compte
Meilleure solution
Salut les ptits gars,
Scusez-moi, la neige me retenait.
Eh, Psit, étudie un peu ça :
C'est bonnard ?
Scusez-moi, la neige me retenait.
Eh, Psit, étudie un peu ça :
Dim s As String
iRow = 1
Do While Not EOF(NumFichier)
Line Input #NumFichier, Chaine
Ar = Split(Chaine, Separateur)
iCol = 1
For i = LBound(Ar) To UBound(Ar)
s = Ar(i)
' // Supprimons le signe égal en début d'élément
If Left(s, 1) = "=" Then s = Mid(s, 2)
' // Supprimons les guillemets si il y en a au début et à la fin
If Left(s, 1) = """" And Right(s, 1) = """" Then s = Mid(s, 2, Len(s) - 2)
Cells(iRow, iCol) = s
iCol = iCol + 1
Next
iRow = iRow + 1
Loop
C'est bonnard ?
Bonjour,
Le fichier csv correspond a un export d'une base d'informations.
La valeur des informations contenu sont différentes mais le format ou la mise en page sont identiques à l'exemple donné ci dessus.
Ce fichier csv est importé, à l'aide du code ci-dessus, dans une feuille excel, où je retravaille l'ensemble des informations pour obtenir le résultat voulu.
J'espère t'avoir amené les information souhaitées.
Bonne journée
Le fichier csv correspond a un export d'une base d'informations.
La valeur des informations contenu sont différentes mais le format ou la mise en page sont identiques à l'exemple donné ci dessus.
Ce fichier csv est importé, à l'aide du code ci-dessus, dans une feuille excel, où je retravaille l'ensemble des informations pour obtenir le résultat voulu.
J'espère t'avoir amené les information souhaitées.
Bonne journée
Si je comprend bien, tu souhaites te débarrasser des " et des ; qui traînent encore dans le fichier résultat que te crée ton programme? C'est bien ça?
Au passage: ne connaissant pas le format source de tes données, notre solution ne pourra guère être élégante, tout au plus pourra-t-on modifier ton code pour faire disparaître les caractères parasites...
Une dernière chose: c'est normal que dans le résultat "voulu" Angleterre et Luxembourg soient inversés?
Au passage: ne connaissant pas le format source de tes données, notre solution ne pourra guère être élégante, tout au plus pourra-t-on modifier ton code pour faire disparaître les caractères parasites...
Une dernière chose: c'est normal que dans le résultat "voulu" Angleterre et Luxembourg soient inversés?
Thore a dit :
Tu as beaucoup de fichier comme cela a traiter ?car si tu en as un ou 2
Nopad++ et en 15min c'est fait !
j'ai tester avec ton exemple !
a+
L'objectif final est d'obtenir un fichier excel facile d'utilisation (lancement d'une seule macro et utilisable par n'importe qui), qui permets d'importer ces données, et d'avoir un rendu rapide (pas de taches répétitives du style copier/coller)
La partie répétitive a déjà été traitée, malheureusement je bute sur l'importation.
Merci pour ta solution;)
Spit67
Storos a dit :
Si je comprend bien, tu souhaites te débarrasser des " et des ; qui traînent encore dans le fichier résultat que te crée ton programme? C'est bien ça?Au passage: ne connaissant pas le format source de tes données, notre solution ne pourra guère être élégante, tout au plus pourra-t-on modifier ton code pour faire disparaître les caractères parasites...
Une dernière chose: c'est normal que dans le résultat "voulu" Angleterre et Luxembourg soient inversés?
- Oui, je voudrais faire disparaitre les " et les =, les point virgules sont considérés comme des tabulations et mettent les informations qui suivent dans les cellules suivantes de ma feuille de travail.
- Je suis a la recherche un bout de code qui serai inséré dans le code existant de préférence.
- Concernant l'inversion, cela est du a une erreur de frappe de ma part lors de la copie, merci de ne pas en tenir compte.
Comme je l'ai expliqué a Thore, l'objectif final étant d'avoir un fichier excel facile d'utilisation (utilisable par n'importe qui), le fichier d'import ayant toujours le même format mais avec des valeurs différentes.
La partie du code concernant le traitement des données de l'import est déjà en place, elle prend juste les valeurs au bon endroit de la feuille de travail et les traite comme souhaitées, la feuille de travail est supprimée à la fin de la macro, il ne reste plus alors que la feuille principale du fichier excel.
Merci pour ton aide
Psit67 a dit :
L'objectif final est d'obtenir un fichier excel facile d'utilisation (lancement d'une seule macro et utilisable par n'importe qui), qui permets d'importer ces données, et d'avoir un rendu rapide (pas de taches répétitives du style copier/coller)La partie répétitive a déjà été traitée, malheureusement je bute sur l'importation.
Merci pour ta solution;)
Spit67
Tu as tester ?
Thore a dit :
Tu as tester ?oui, j'ai testé, le soucis est que les "=" me provoquent une erreur 1004 au moment du traitement, ce qui stoppe la macro.....
J'ai essayé de modifier le code comme je pouvais (en rajoutant des lignes traitant les caractères non désirable) mais le résultat final ne correspondait plus
Bonne Soirée
Hello Zeb,
Merci pour ces quelques lignes de code elles ont réussie à résoudre mon "fameux" pb
SUPER, je vais pourvoir poursuivre mon développement, à charge de revanche.....
Je remercie aussi les 2 autres personnes qui se sont données la peine de se pencher sur mon problème.
Bonnes Fetes de Fin d'Année.
Psit67
Merci pour ces quelques lignes de code elles ont réussie à résoudre mon "fameux" pb
SUPER, je vais pourvoir poursuivre mon développement, à charge de revanche.....Je remercie aussi les 2 autres personnes qui se sont données la peine de se pencher sur mon problème.
Bonnes Fetes de Fin d'Année.
Psit67
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumVba fichier csv
- ForumEnregistrer un fichier csv
- ForumDelete fichier csv
- ForumConversion fichier csv
- ForumComment convertir un fichier en csv
- ForumJava fichier csv
- ForumTransformer fichier en csv
- ForumQueseque un fichier csv
- ForumC4est quoi un fichier csv
- benchmarkMettre un fichier en csv
- Voir plus
![[:zeb:6] [:zeb:6]](http://m.bestofmedia.com/sfp/design/usr/fr/smilies/77/40/zeb:6.gif)