Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

traitement fichier CSV

17 réponses
Avatar
j
Bonjour et tous mes voeux

Voici mon Pb.
Je récupère un fichier CSV de cette forme :

ligne1 (en tete) : a,b,c,d,e,f,g,h,i,k

ligne 2 (data) : 100,101,102,103,104,105
ligne 3 (data suite) : 106,107,108
ligne 4 (data suite) : 109,110

ligne 5 (data) : 200,201,202,203,204,205
ligne 6 (data suite) : 206,207,208
ligne 7 (data suite) : 209,210

ligne 8 (data) : 300,301,302,303,304,305
ligne 9 (data suite) : 306,307,308
ligne 10 (data suite) : 309,310

etc ....

Je souhaiterai que mes données soient sous la forme suivante :

a b c d e f g h i
j k
100 101 102 103 104 105 106 107 108 109 110
200 201 202 203 204 205 206 207 208 209 210
300 301 302 303 304 305 306 307 308 309 310

etc ...

le principe étant de récupérer les valeurs des 2 lignes en dessous et de les
mettrent a la suite de la premiere ligne.
Les données étant sur 3 lignes

si vous avez une idée pour automatiser ce que je fais manuellement !! GRAND
MERCI

7 réponses

1 2
Avatar
michdenis
Comme j'ai débuté la macro avec le fichier .csv
j'apprécierais si tu en publiais seulement le début pour voir l'organisation des données.


MichD
--------------------------------------------
Avatar
j
Merci mais le lien ne fonctionne pas !!!

"michel ou sam" a écrit dans le message de news:
4d2629e0$0$7695$

Bonjour,
il y a une possibilité sans macro :
une fois que tu as copié tes données en colonne A de la Feuil1
tu sélectionnes tes données et tu fais :
Données/Convertir et tu coches Délimité puis Virgule puis Terminer
Tes données vont se positionner sur plusieurs colonnes

Dans la Feuil2, il suffira de mettre les formules qui vont bien
J'ai mis les formules sur les 3 premières lignes en Feuil2, il suffira de
tirer vers le bas pour remplir la feuil2
http://www.cijoint.fr/cjlink.php?file=cj201101/cijpxfXp8u.xls

Bon , mais ça remplace pas une macro bien pensée qui irait te chercher
directement ton fichier CSV

Michel

"" a écrit dans le message de news:
4d260f11$0$796$
Bonsoir,

J'ai bien essayé de tester vos macros mais sans résultats même en
modifiant quelques paramètres.
Je joins donc un fichier exemple pour mieux me faire comprendre.

Dans ce fichier en feuil1 l'extraction (le changment de couleur est pour
montrer les données relatives a la même source)
En feuil2 un traitement (en manuel) du résultat souhaité

J'ai fais cela pour 3 exemples en sachant que mon fichier extract
(feuil1) comporte plus de 500 données

Merci de votre aide
http://cjoint.com/?0bgtSxLQDs7







"isabelle" a écrit dans le message de news:
ifva97$b19$
bonjour ,

en supposant que les données soient sur la feuil1 et le résultat mit sur
la feuil2

Sub Macro1()
With Sheets("Feuil1")
For i = 2 To .Range("A65536").End(xlUp).Row Step 3
For y = 0 To 2
For p = 1 To 10
If Not .Cells(i + y, p) = "" Then
x = x + 1
Sheets("Feuil2").Cells(i, x) = .Cells(i + y, p)
End If
Next
Next
x = 0
Next
End With
End Sub

isabelle

Le 2011-01-04 07:47, a écrit :
Bonjour et tous mes voeux

Voici mon Pb.
Je récupère un fichier CSV de cette forme :

ligne1 (en tete) : a,b,c,d,e,f,g,h,i,k

ligne 2 (data) : 100,101,102,103,104,105
ligne 3 (data suite) : 106,107,108
ligne 4 (data suite) : 109,110

ligne 5 (data) : 200,201,202,203,204,205
ligne 6 (data suite) : 206,207,208
ligne 7 (data suite) : 209,210

ligne 8 (data) : 300,301,302,303,304,305
ligne 9 (data suite) : 306,307,308
ligne 10 (data suite) : 309,310

etc ....

Je souhaiterai que mes données soient sous la forme suivante :

a b c d e f g h i
j k
100 101 102 103 104 105 106 107 108 109 110
200 201 202 203 204 205 206 207 208 209 210
300 301 302 303 304 305 306 307 308 309 310

etc ...

le principe étant de récupérer les valeurs des 2 lignes en dessous et
de les
mettrent a la suite de la premiere ligne.
Les données étant sur 3 lignes

si vous avez une idée pour automatiser ce que je fais manuellement !!
GRAND
MERCI













Avatar
j
Bonjour

Voici le fichier csv (les premieres lignes)
Merci
http://cjoint.com/?0bhiFIT5Jcx


"michdenis" a écrit dans le message de news:
ig64bk$qim$
Comme j'ai débuté la macro avec le fichier .csv
j'apprécierais si tu en publiais seulement le début pour voir
l'organisation des données.


MichD
--------------------------------------------

Avatar
michel ou sam
Bonjour,
j'ai testé, pour moi le lien est bon.

Nota : j'ai oublié d'enlever la macro que tu avais mise dans ce fichier

Michel

"" a écrit dans le message de news:
4d2636f7$0$5229$
Merci mais le lien ne fonctionne pas !!!

"michel ou sam" a écrit dans le message de news:
4d2629e0$0$7695$

Bonjour,
il y a une possibilité sans macro :
une fois que tu as copié tes données en colonne A de la Feuil1
tu sélectionnes tes données et tu fais :
Données/Convertir et tu coches Délimité puis Virgule puis Terminer
Tes données vont se positionner sur plusieurs colonnes

Dans la Feuil2, il suffira de mettre les formules qui vont bien
J'ai mis les formules sur les 3 premières lignes en Feuil2, il suffira de
tirer vers le bas pour remplir la feuil2
http://www.cijoint.fr/cjlink.php?file=cj201101/cijpxfXp8u.xls

Bon , mais ça remplace pas une macro bien pensée qui irait te chercher
directement ton fichier CSV

Michel

"" a écrit dans le message de news:
4d260f11$0$796$
Bonsoir,

J'ai bien essayé de tester vos macros mais sans résultats même en
modifiant quelques paramètres.
Je joins donc un fichier exemple pour mieux me faire comprendre.

Dans ce fichier en feuil1 l'extraction (le changment de couleur est pour
montrer les données relatives a la même source)
En feuil2 un traitement (en manuel) du résultat souhaité

J'ai fais cela pour 3 exemples en sachant que mon fichier extract
(feuil1) comporte plus de 500 données

Merci de votre aide
http://cjoint.com/?0bgtSxLQDs7







"isabelle" a écrit dans le message de news:
ifva97$b19$
bonjour ,

en supposant que les données soient sur la feuil1 et le résultat mit
sur la feuil2

Sub Macro1()
With Sheets("Feuil1")
For i = 2 To .Range("A65536").End(xlUp).Row Step 3
For y = 0 To 2
For p = 1 To 10
If Not .Cells(i + y, p) = "" Then
x = x + 1
Sheets("Feuil2").Cells(i, x) = .Cells(i + y, p)
End If
Next
Next
x = 0
Next
End With
End Sub

isabelle

Le 2011-01-04 07:47, a écrit :
Bonjour et tous mes voeux

Voici mon Pb.
Je récupère un fichier CSV de cette forme :

ligne1 (en tete) : a,b,c,d,e,f,g,h,i,k

ligne 2 (data) : 100,101,102,103,104,105
ligne 3 (data suite) : 106,107,108
ligne 4 (data suite) : 109,110

ligne 5 (data) : 200,201,202,203,204,205
ligne 6 (data suite) : 206,207,208
ligne 7 (data suite) : 209,210

ligne 8 (data) : 300,301,302,303,304,305
ligne 9 (data suite) : 306,307,308
ligne 10 (data suite) : 309,310

etc ....

Je souhaiterai que mes données soient sous la forme suivante :

a b c d e f g h i
j k
100 101 102 103 104 105 106 107 108 109 110
200 201 202 203 204 205 206 207 208 209 210
300 301 302 303 304 305 306 307 308 309 310

etc ...

le principe étant de récupérer les valeurs des 2 lignes en dessous et
de les
mettrent a la suite de la premiere ligne.
Les données étant sur 3 lignes

si vous avez une idée pour automatiser ce que je fais manuellement !!
GRAND
MERCI

















Avatar
j
Bonjour

Excat, maintenant j'ai pu récupérer le fichier.
Il est vrai que cela peut déjà aider en attendant une macro tip top

Merci
Bonne journée

"michel ou sam" a écrit dans le message de news:
4d26c6e2$0$32429$
Bonjour,
j'ai testé, pour moi le lien est bon.

Nota : j'ai oublié d'enlever la macro que tu avais mise dans ce fichier

Michel

"" a écrit dans le message de news:
4d2636f7$0$5229$
Merci mais le lien ne fonctionne pas !!!

"michel ou sam" a écrit dans le message de
news: 4d2629e0$0$7695$

Bonjour,
il y a une possibilité sans macro :
une fois que tu as copié tes données en colonne A de la Feuil1
tu sélectionnes tes données et tu fais :
Données/Convertir et tu coches Délimité puis Virgule puis Terminer
Tes données vont se positionner sur plusieurs colonnes

Dans la Feuil2, il suffira de mettre les formules qui vont bien
J'ai mis les formules sur les 3 premières lignes en Feuil2, il suffira
de tirer vers le bas pour remplir la feuil2
http://www.cijoint.fr/cjlink.php?file=cj201101/cijpxfXp8u.xls

Bon , mais ça remplace pas une macro bien pensée qui irait te chercher
directement ton fichier CSV

Michel

"" a écrit dans le message de news:
4d260f11$0$796$
Bonsoir,

J'ai bien essayé de tester vos macros mais sans résultats même en
modifiant quelques paramètres.
Je joins donc un fichier exemple pour mieux me faire comprendre.

Dans ce fichier en feuil1 l'extraction (le changment de couleur est
pour montrer les données relatives a la même source)
En feuil2 un traitement (en manuel) du résultat souhaité

J'ai fais cela pour 3 exemples en sachant que mon fichier extract
(feuil1) comporte plus de 500 données

Merci de votre aide
http://cjoint.com/?0bgtSxLQDs7







"isabelle" a écrit dans le message de news:
ifva97$b19$
bonjour ,

en supposant que les données soient sur la feuil1 et le résultat mit
sur la feuil2

Sub Macro1()
With Sheets("Feuil1")
For i = 2 To .Range("A65536").End(xlUp).Row Step 3
For y = 0 To 2
For p = 1 To 10
If Not .Cells(i + y, p) = "" Then
x = x + 1
Sheets("Feuil2").Cells(i, x) = .Cells(i + y, p)
End If
Next
Next
x = 0
Next
End With
End Sub

isabelle

Le 2011-01-04 07:47, a écrit :
Bonjour et tous mes voeux

Voici mon Pb.
Je récupère un fichier CSV de cette forme :

ligne1 (en tete) : a,b,c,d,e,f,g,h,i,k

ligne 2 (data) : 100,101,102,103,104,105
ligne 3 (data suite) : 106,107,108
ligne 4 (data suite) : 109,110

ligne 5 (data) : 200,201,202,203,204,205
ligne 6 (data suite) : 206,207,208
ligne 7 (data suite) : 209,210

ligne 8 (data) : 300,301,302,303,304,305
ligne 9 (data suite) : 306,307,308
ligne 10 (data suite) : 309,310

etc ....

Je souhaiterai que mes données soient sous la forme suivante :

a b c d e f g h i
j k
100 101 102 103 104 105 106 107 108 109
110
200 201 202 203 204 205 206 207 208 209
210
300 301 302 303 304 305 306 307 308 309
310

etc ...

le principe étant de récupérer les valeurs des 2 lignes en dessous et
de les
mettrent a la suite de la premiere ligne.
Les données étant sur 3 lignes

si vous avez une idée pour automatiser ce que je fais manuellement !!
GRAND
MERCI





















Avatar
michdenis
Bonjour,

Essaie ceci, après test sur ton fichier CSV, ça roule !

Dans la procédure tu dois adapter le nom de l'onglet de la feuille
où tes données seront copiées.

J'ai tenu pour acquis que les données étaient copiées dans le même
classeur que celui où tu insèreras la macro.

'--------------------------------------------
Sub Importer_Un_Fichier_CSV()

Dim A As Long, X As Long, NbLignes As Long
Dim T As Variant, WholeLine As String
Dim Fichier As String, Sep As String
Dim B As Integer

'Chemin et fichier .csv
Fichier = "c:_Num_Series_routeur_CG13_v2.csv"
'Choix du séparateur d'élément de ton fichier .csv
Sep = ","
'*****************************************
On Error Resume Next

X = FreeFile
Open Fichier For Input Access Read As #X
Application.ScreenUpdating = False
With Worksheets("sheet1") 'Nom feuille à adapter
While Not EOF(1)
NbLignes = NbLignes + 1
If NbLignes = 1 Then
Line Input #X, WholeLine
T = Split(WholeLine, Sep)
A = A + 1
.Range("A" & A).Resize(, UBound(T) + 1) = T
WholeLine = ""
Else
For B = 1 To 4
Line Input #X, WholeLine
Temp = Temp & WholeLine & ","

Next
T = Split(Temp, Sep)
Temp = ""
A = A + 1
.Range("A" & A).Resize(, UBound(T) + 1) = T
WholeLine = ""
End If
Wend
Close #X
Application.EnableEvents = False
With .Range("Z1")
.Value = 1
.Copy
End With
.Range("A1").CurrentRegion.PasteSpecial xlPasteValues, _
xlPasteSpecialOperationMultiply
.Range("Z1").Value = ""
.Range("A1").Select
Application.CutCopyMode = False
Application.EnableEvents = True
End With
Application.ScreenUpdating = True
End Sub
'--------------------------------------------


MichD
--------------------------------------------
"" a écrit dans le message de groupe de discussion : 4d26fed4$0$1586$

Bonjour

Excat, maintenant j'ai pu récupérer le fichier.
Il est vrai que cela peut déjà aider en attendant une macro tip top

Merci
Bonne journée

"michel ou sam" a écrit dans le message de news:
4d26c6e2$0$32429$
Bonjour,
j'ai testé, pour moi le lien est bon.

Nota : j'ai oublié d'enlever la macro que tu avais mise dans ce fichier

Michel

"" a écrit dans le message de news:
4d2636f7$0$5229$
Merci mais le lien ne fonctionne pas !!!

"michel ou sam" a écrit dans le message de
news: 4d2629e0$0$7695$

Bonjour,
il y a une possibilité sans macro :
une fois que tu as copié tes données en colonne A de la Feuil1
tu sélectionnes tes données et tu fais :
Données/Convertir et tu coches Délimité puis Virgule puis Terminer
Tes données vont se positionner sur plusieurs colonnes

Dans la Feuil2, il suffira de mettre les formules qui vont bien
J'ai mis les formules sur les 3 premières lignes en Feuil2, il suffira
de tirer vers le bas pour remplir la feuil2
http://www.cijoint.fr/cjlink.php?file=cj201101/cijpxfXp8u.xls

Bon , mais ça remplace pas une macro bien pensée qui irait te chercher
directement ton fichier CSV

Michel

"" a écrit dans le message de news:
4d260f11$0$796$
Bonsoir,

J'ai bien essayé de tester vos macros mais sans résultats même en
modifiant quelques paramètres.
Je joins donc un fichier exemple pour mieux me faire comprendre.

Dans ce fichier en feuil1 l'extraction (le changment de couleur est
pour montrer les données relatives a la même source)
En feuil2 un traitement (en manuel) du résultat souhaité

J'ai fais cela pour 3 exemples en sachant que mon fichier extract
(feuil1) comporte plus de 500 données

Merci de votre aide
http://cjoint.com/?0bgtSxLQDs7







"isabelle" a écrit dans le message de news:
ifva97$b19$
bonjour ,

en supposant que les données soient sur la feuil1 et le résultat mit
sur la feuil2

Sub Macro1()
With Sheets("Feuil1")
For i = 2 To .Range("A65536").End(xlUp).Row Step 3
For y = 0 To 2
For p = 1 To 10
If Not .Cells(i + y, p) = "" Then
x = x + 1
Sheets("Feuil2").Cells(i, x) = .Cells(i + y, p)
End If
Next
Next
x = 0
Next
End With
End Sub

isabelle

Le 2011-01-04 07:47, a écrit :
Bonjour et tous mes voeux

Voici mon Pb.
Je récupère un fichier CSV de cette forme :

ligne1 (en tete) : a,b,c,d,e,f,g,h,i,k

ligne 2 (data) : 100,101,102,103,104,105
ligne 3 (data suite) : 106,107,108
ligne 4 (data suite) : 109,110

ligne 5 (data) : 200,201,202,203,204,205
ligne 6 (data suite) : 206,207,208
ligne 7 (data suite) : 209,210

ligne 8 (data) : 300,301,302,303,304,305
ligne 9 (data suite) : 306,307,308
ligne 10 (data suite) : 309,310

etc ....

Je souhaiterai que mes données soient sous la forme suivante :

a b c d e f g h i
j k
100 101 102 103 104 105 106 107 108 109
110
200 201 202 203 204 205 206 207 208 209
210
300 301 302 303 304 305 306 307 308 309
310

etc ...

le principe étant de récupérer les valeurs des 2 lignes en dessous et
de les
mettrent a la suite de la premiere ligne.
Les données étant sur 3 lignes

si vous avez une idée pour automatiser ce que je fais manuellement !!
GRAND
MERCI





















Avatar
j
super sympa, merci
je vais tester cela
Bonne soirée

"michdenis" a écrit dans le message de news:
ig76lu$52o$
Bonjour,

Essaie ceci, après test sur ton fichier CSV, ça roule !

Dans la procédure tu dois adapter le nom de l'onglet de la feuille
où tes données seront copiées.

J'ai tenu pour acquis que les données étaient copiées dans le même
classeur que celui où tu insèreras la macro.

'--------------------------------------------
Sub Importer_Un_Fichier_CSV()

Dim A As Long, X As Long, NbLignes As Long
Dim T As Variant, WholeLine As String
Dim Fichier As String, Sep As String
Dim B As Integer

'Chemin et fichier .csv
Fichier = "c:_Num_Series_routeur_CG13_v2.csv"
'Choix du séparateur d'élément de ton fichier .csv
Sep = ","
'*****************************************
On Error Resume Next

X = FreeFile
Open Fichier For Input Access Read As #X
Application.ScreenUpdating = False
With Worksheets("sheet1") 'Nom feuille à adapter
While Not EOF(1)
NbLignes = NbLignes + 1
If NbLignes = 1 Then
Line Input #X, WholeLine
T = Split(WholeLine, Sep)
A = A + 1
.Range("A" & A).Resize(, UBound(T) + 1) = T
WholeLine = ""
Else
For B = 1 To 4
Line Input #X, WholeLine
Temp = Temp & WholeLine & ","

Next
T = Split(Temp, Sep)
Temp = ""
A = A + 1
.Range("A" & A).Resize(, UBound(T) + 1) = T
WholeLine = ""
End If
Wend
Close #X
Application.EnableEvents = False
With .Range("Z1")
.Value = 1
.Copy
End With
.Range("A1").CurrentRegion.PasteSpecial xlPasteValues, _
xlPasteSpecialOperationMultiply
.Range("Z1").Value = ""
.Range("A1").Select
Application.CutCopyMode = False
Application.EnableEvents = True
End With
Application.ScreenUpdating = True
End Sub
'--------------------------------------------


MichD
--------------------------------------------
"" a écrit dans le message de groupe de discussion :
4d26fed4$0$1586$

Bonjour

Excat, maintenant j'ai pu récupérer le fichier.
Il est vrai que cela peut déjà aider en attendant une macro tip top

Merci
Bonne journée

"michel ou sam" a écrit dans le message de news:
4d26c6e2$0$32429$
Bonjour,
j'ai testé, pour moi le lien est bon.

Nota : j'ai oublié d'enlever la macro que tu avais mise dans ce fichier

Michel

"" a écrit dans le message de news:
4d2636f7$0$5229$
Merci mais le lien ne fonctionne pas !!!

"michel ou sam" a écrit dans le message de
news: 4d2629e0$0$7695$

Bonjour,
il y a une possibilité sans macro :
une fois que tu as copié tes données en colonne A de la Feuil1
tu sélectionnes tes données et tu fais :
Données/Convertir et tu coches Délimité puis Virgule puis Terminer
Tes données vont se positionner sur plusieurs colonnes

Dans la Feuil2, il suffira de mettre les formules qui vont bien
J'ai mis les formules sur les 3 premières lignes en Feuil2, il suffira
de tirer vers le bas pour remplir la feuil2
http://www.cijoint.fr/cjlink.php?file=cj201101/cijpxfXp8u.xls

Bon , mais ça remplace pas une macro bien pensée qui irait te chercher
directement ton fichier CSV

Michel

"" a écrit dans le message de news:
4d260f11$0$796$
Bonsoir,

J'ai bien essayé de tester vos macros mais sans résultats même en
modifiant quelques paramètres.
Je joins donc un fichier exemple pour mieux me faire comprendre.

Dans ce fichier en feuil1 l'extraction (le changment de couleur est
pour montrer les données relatives a la même source)
En feuil2 un traitement (en manuel) du résultat souhaité

J'ai fais cela pour 3 exemples en sachant que mon fichier extract
(feuil1) comporte plus de 500 données

Merci de votre aide
http://cjoint.com/?0bgtSxLQDs7







"isabelle" a écrit dans le message de news:
ifva97$b19$
bonjour ,

en supposant que les données soient sur la feuil1 et le résultat mit
sur la feuil2

Sub Macro1()
With Sheets("Feuil1")
For i = 2 To .Range("A65536").End(xlUp).Row Step 3
For y = 0 To 2
For p = 1 To 10
If Not .Cells(i + y, p) = "" Then
x = x + 1
Sheets("Feuil2").Cells(i, x) = .Cells(i + y, p)
End If
Next
Next
x = 0
Next
End With
End Sub

isabelle

Le 2011-01-04 07:47, a écrit :
Bonjour et tous mes voeux

Voici mon Pb.
Je récupère un fichier CSV de cette forme :

ligne1 (en tete) : a,b,c,d,e,f,g,h,i,k

ligne 2 (data) : 100,101,102,103,104,105
ligne 3 (data suite) : 106,107,108
ligne 4 (data suite) : 109,110

ligne 5 (data) : 200,201,202,203,204,205
ligne 6 (data suite) : 206,207,208
ligne 7 (data suite) : 209,210

ligne 8 (data) : 300,301,302,303,304,305
ligne 9 (data suite) : 306,307,308
ligne 10 (data suite) : 309,310

etc ....

Je souhaiterai que mes données soient sous la forme suivante :

a b c d e f g h i
j k
100 101 102 103 104 105 106 107 108 109
110
200 201 202 203 204 205 206 207 208 209
210
300 301 302 303 304 305 306 307 308 309
310

etc ...

le principe étant de récupérer les valeurs des 2 lignes en dessous
et
de les
mettrent a la suite de la premiere ligne.
Les données étant sur 3 lignes

si vous avez une idée pour automatiser ce que je fais manuellement
!!
GRAND
MERCI
























1 2