[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.

26 réponses

  • 1
  • 2
  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. 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
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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

    je regarde cela.

    A+
    0
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  8. 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
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  10. 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
  11. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

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

    A+
    0
  12. Nicow
     
    Comment puis-je modifier le code derrière les boutons ? :)
    0
  13. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  14. 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
  15. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  16. 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
  17. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  18. 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
  19. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    tout est envisageable.
    0
  20. Nicow
     
    Bonjour,

    Auriez-vous une piste ? Macro ou code VBA ?

    Merci
    0
  21. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  • 1
  • 2