[Excel] Demande d'aide sur cas simple

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

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Un stagiaire cherche à automatiser l’assemblage de plusieurs fichiers CSV exportés par un logiciel afin de disposer les colonnes de chaque fichier côte à côte plutôt que les empiler. Le contexte implique Excel et VBA, avec des centaines de fichiers à traiter, et les utilisateurs demandent des instructions précises pour concaténer les colonnes et réorganiser le CSV sans perdre les entêtes. Des échanges évoquent des approches VBA, le recours à alt+F11, la gestion des séparateurs CSV et des limites liées au format numérique, aux paramètres régionaux et au traitement de fichiers volumineux.

Bobot (l’IA à votre service)
  1. 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 ??
    1. 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
      1. 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 ????
        1. 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
          1. 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.
            1. 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+
              1. 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
                1. Re,

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

                  A+
                  1. 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+
                    1. 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
                      1. 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+
                        1. 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
                          1. 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 ?
                            1. 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
                              • 1
                              • 2