[Excel] Demande d'aide sur cas simple

Nicow -  
 Nicow -
Bonjour,
Je suis actuellement en stage pour 3 mois et je voudrais un code qui ferait passer cette durée à 2 mois (ou moins si c'est possible).

Mon problème :
Mon logiciel exporte des données d'un fichier sous forme de quatre colonnes de chiffre en .csv. Lorsque j'ouvre silmutanément plusieurs fichiers pour aller plus vite, et que j'exporte en .csv, le logiciel me colle les quatre colonnes de chaque fichier "à la suite". Moi je voudrais les déplacer et les mettre côte à côte.

Un petit schéma :

Situation initiale :

colonne 1 colonne 2 colonne 3 colonne 4

chiffre >> chiffre >> chiffre >> chiffre
.
. fichier 1
.
chiffre >> chiffre >> chiffre >> chiffre
chiffre >> chiffre >> chiffre >> chiffre
.
. fichier 2
.
chiffre >> chiffre >> chiffre >> chiffre

But :

colonne 1 colonne 2 colonne 3 colonne 4 >>> colonne 5 colonne 6 colonne 7 colonne 8

chiffre >> chiffre >> chiffre >> chiffre >>>>> chiffre >> chiffre >> chiffre >> chiffre
. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .
. >>>>>>>> fichier 1 >>>>>>>>>>>>>>>>>> . >>>>>>>>>>>>fichier 2
. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> .
chiffre >> chiffre >> chiffre >> chiffre >>>>> chiffre >> chiffre >> chiffre >> chiffre

Une petite indication utile, dans la colonne 2, chaque fichier part de 0 et croit jusqu'à un chiffre à virgule indéterminé.
Voilà j'ai une multitude de fichier excel avec en moyenne une centaine de fichiers. Je n'y connais rien en VBA et programmation excel, mais je suis débrouillard, alors soyez un minimum précis s'il vous plaît et ce serait gentil de m'aider vous ferez un heureux :).
Merci à vous.
A voir également:

26 réponses

f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

Mon logiciel exporte des données d'un fichier ??? lequel

Voilà j'ai une multitude de fichier excel avec en moyenne une centaine de fichiers certainement !!!!


alors soyez un minimum précis s'il vous plaît et vous ??
0
Nicow
 
Bonjour,

C'est gentil de répondre, néanmoins je ne comprend pas votre réaction, j'ai essayé d'être un maximum précis sur le principe, quant au logiciel il ne vous dira absolument rien car très spécifique et réservé au monde industriel et je suis également soumis à des règles de confidentialité.

Ensuite, je vais essayé de résumer mon problème. Mon logiciel me sort chaque fichier sous forme de quatre colonne de chiffre, les uns à la suite des autres, et la seule manière de différencier le début de la fin d'un fichier c'est la récurrence de la deuxième colonne (qui va de zéro jusqu'à un nombre indéterminé).

Quand je demandais d'être précis, je pensais surtout à l'utilisation de la console VBA s'il y a besoin de rentrer du code.

Ce que je pense qu'il est possible de faire, c'est de créer un code qui sépare tous les fichiers (en repérant les lignes entre deux zéros de la deuxième colonne par exemple) et de me les décaler de manière à ce que la première ligne de chaque fichier (celle qui comporte le zéro à la deuxième colonne) s'ajuste avec la première ligne du fichier précédent mais quelques colonnes plus loin.

Est-ce assez précis ?

Merci de votre attention
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

C'est gentil de répondre, néanmoins je ne comprend pas votre réaction

Ma reaction n'est pas épidermique, mais je vois que cette fois, vous avez ete tres precis dans votre demande. Il faut bien comprendre que nous ne voyons pas ce que vous faites, ni vos fichiers, donc l'expose de votre demande est capital pour que vous puissiez avoir une solution correspondant a votre attente.

Details supplementaires: quel excel avez-vous, fichier csv avec quel separateur ????
0
Nicow
 
Bonjour,

Oui je comprend parfaitement que vous n'avez pas le même point de vu que moi mais je pensais avoir été assez précis dès le début. Enfin bref si vous comprenez un peu mieux mon cas maintenant, le but est atteint.

Je vais vous décrire comment je traite le csv pour le mettre en forme dans une feuille excel.
Assistant Importation de texte
Etape 2 sur 3 : Séparateur à virgule.
Etape 3 sur 3 : Avancé\Séparateur de décimale : un point "."

Version : Microsoft Office Professional Plus 2010
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,

je regarde cela.

A+
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,

un exemple de code, le bouton import_fichier peut vous servir si le fichier importe a toujours le meme nom. J'ai teste avec un fichier csv separateur ".". A vous de tester et de rendre compte.

https://www.cjoint.com/c/CGkpJlssIHo

A+
0
Nicow
 
Salut,

merci pour votre aide !

Alors, tout d'abord, j'ai besoin d'un séparateur à virgule pour mes fichiers .csv, si vous me dites comment faire je peux aller changer cela.

Sinon, j'ai copier mon csv dans les colonnes A, B, C, D, et appuyé sur Traitement_Fichier; ça a fait quelque chose mais alors pour comprendre ce que ça a fait... Il a découpé certaine partie du fichier et les a décalé en haut à droite, c'est tous ce que je peux dire.
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

Je vais vous décrire comment je traite le csv pour le mettre en forme dans une feuille excel.
Assistant Importation de texte
Etape 2 sur 3 : Séparateur à virgule
Etape 3 sur 3 : Avancé\Séparateur de décimale : un point "."


Vous pouvez faire l'import directement comme ci-dessus sur la feuil1


pour la macro Import_fichier: remplacez le "." par "," voir ci-dessous

.TextFileOtherDelimiter = ","

si vous voulez l'utiliser.

ça a fait quelque chose mais alors pour comprendre ce que ça a fait... Il a découpé certaine partie du fichier et les a décalé en haut à droite, c'est tous ce que je peux dire. Sauf erreur de ma part cela fait ce que vous avez demande:

feuil1----> donnees importees
feuil2----> decoupage des donnees importees par paquets "entre" deux 0 via le code associe au bouton (VBA feuil1)

La localisation des donnees decoupees est peut-etre a discuter.

Le code est commente pour le bouton Traitement_Fichier, vous pourrez comprendre ce qui se passe.

A+
0
Nicow
 
Bonjour,

Le séparateur de décimale est bien un point, mais le séparateur de colonne est une virgule.

Ca découpe et ça déplace au bon endroit, mais pas par paquet de fichier (colonne 2, de 0 à chiffre indéterminé).

Je vais essayer de corriger moi même, j'ai fait un peu de C++ fut un temps, j'ai juste une question :

Comment puis-je modifier le code derrière les boutons ? :)

merci
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,

Dans ce que je vous ai donne: debut fichier 0 colonne 2 et fin de fichier ligne avant 0 suivant.



A+
0
Nicow
 
Comment puis-je modifier le code derrière les boutons ? :)
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,

pour acceder au code VBA:

appuyez sur alt+F11
en haut a gauche: double clic sur feuil1
code dans fenetre de droite

comment sont decoupees vos fichiers ??? A quel endroit avez-vous le 0 colonne 2

votre 0: c'est 0 ou 0,00 ou ??

A+
0
Nicow
 
Bonjour,

Mon 0 est un "0.00".

Je vous envoie un .csv, les colonnes se séparent par virgule, et les points sont les virgules des nombres décimaux (excel en français ne comprend pas les chiffre à point, alors je les change en virgule).

http://cjoint.com/?3GlkCVLEV2q

Merci
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,

Il est donc normal que la decoupe ne soit pas bonne: 0 c'est pas 0.00

je vous modifie la chose avec ou sans les entetes de colonnes ???

A+
0
Nicow
 
Re,

AAAh ok, Excel modifie le 0.00 en 0 quand on importe le csv, je comprend maintenant que le code s'applique au .csv brut.

Avec les entêtes des colonnes ce serait parfait :).

Merci
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,

fichier modifie et teste avec votre fichier csv (bouton import invalidé), si vous avez besoin de l'utiliser, faites signe

https://www.cjoint.com/c/CGlls18s2fe

A+
0
Nicow
 
Ouaah nickel, ça marche au poil ! Merci encore !

Mon travail maintenant c'est de faire un graphique avec en X la colonne 2 et en Y la colonne 3, de chaque fichier, est-ce qu'une macro est envisageable dans ce cas ?
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Re,

tout est envisageable.
0
Nicow
 
Bonjour,

Auriez-vous une piste ? Macro ou code VBA ?

Merci
0
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 715
 
Bonjour,

Oui, deux codes pour que vous puissiez y reflechir:

il faut que le separateur de decimal de vos donnees corresponde a celui d'excel

'pour un graph:
Sub Test_new_sheet()
    Set new_sheet = Charts.Add
    new_sheet.Name = "L1"
    new_sheet.ChartType = xlLineMarkers
    new_sheet.SeriesCollection.NewSeries
    new_sheet.SetSourceData Source:=Range("feuil2!B2:C240")
    new_sheet.SeriesCollection(1).XValues = "=Feuil2!$B$2:$B$240"
    new_sheet.SeriesCollection(1).Name = "=Feuil2!$C$1"
End Sub



'pas modifie pour votre fichier
Sub Test_same_sheet()
    Dim Grf As ChartObject
    Dim Sh As Worksheet
 
    Set Sh = Sheets("feuil1")
    'EDIT On supprime le graphique nommé Toto de la feuille Données
    For Each Grf In Sh.ChartObjects
        If Grf.Name = "Toto" Then
            Grf.Delete
            Exit For
        End If
    Next Grf
    'On crée notre graphique
    Set Grf = Sh.ChartObjects.Add(140, 10, 500, 300)
    Grf.Name = "Toto"
    With Grf.Chart
        .ChartType = xlLineMarkers
        .SeriesCollection.NewSeries
        With .SeriesCollection(1)
            .Values = Sh.Range("B2:B14")
            .XValues = Sh.Range("A2:A14")
        End With
    End With
    Set Grf = Nothing
    Set Sh = Nothing
End Sub
0