Compilation de résultats

Bonjour tout le monde,

Après avoir fouillé sur le forum pour apprendre un peu VBA et essayer de trouver une réponse à mes besoins, c'est malheureusement avec grand regret que j'ai échoué...

Pour vous expliquer le plus clairement possible ce que j'aimerai faire, voici une petite liste :

  • Quand l'utilisateur ouvre la macro, elle lui demande de sélectionner un ou des fichiers (*.csv).
  • Il n'est pas nécessaire de les afficher à l'écran
  • Les fichiers sont toujours écrits de la même façon : 14 colonnes regroupant des informations (date, mesures, numéro de cuve,...)
  • La macro aurait donc pour but de copier toutes les lignes (à partir de la deuxième) de chaque fichier les unes à la suite des autres dans un unique nouveau fichier.
  • A la fin du copier/coller, soit l'utilisateur enregistre par lui-même le nouveau fichier soit la macro ouvre une boîte de dialogue pour l'enregistrement du fichier.

Le coeur de ma demande est surtout la sélection de plusieurs fichiers par l'utilisateur + le copier/coller dans un nouveau fichier.

Je vous joins un exemple de fichier *.csv

J'ai récupéré cette macro, que j'ai modifié pour ajouter la première ligne mais elle me copie les colonnes...

Sub Test2()
Dim Chemin As String
Dim I As Long, Import As String, Tableau As Double
Application.ScreenUpdating = False ' Désactive l'affichage
Cells.Clear ' Vide la feuille

Range("A1") = "Id"
Range("B1") = "Cuve"
Range("C1") = "Erreur"
Range("D1") = "Date"
Range("E1") = "Type"
Range("F1") = "T_bain"
Range("G1") = "T_liquidus"
Range("H1") = "%AlF3"
Range("I1") = "%Al2O3"
Range("J1") = "SH"
Range("K1") = "A"
Range("L1") = "B"
Range("M1") = "C"
Range("N1") = "D"
I = 2 ' Initialise la première ligne
Chemin = "TEST" ' Pour que la boucle ne s'arrête pas tout de suite
While Chemin <> "" ' Tant que Chemin n'est pas vide
Chemin = Application.GetOpenFilename("Excel, *.csv") ' Boite de dialogue
If InStr(Chemin, "\") = 0 Then ' Si Chemin n'a pas de \ donc que l'opérateur a fait annuler
GoTo Fin ' Va à l'étiquette Fin:
End If ' Fin du test
Open Chemin For Input As #1 ' Ouvre un fichier en lecture
Do While Not EOF(1) ' Tant qu'on est pas à la dernière ligne
' Set shSource = Sheets("Chemin")
' shSource.Rows(I).Copy
' Sheets("Feuille 1").Cells(I).Paste
Line Input #1, Import ' Lit la ligne et la stocke dans Import
Range("A" & I & ":N" & I).Value = Split(Replace(Import, ",", "."), Chr(59))
' Copie dans la ligne I colonnes A à E la ligne importée où les "," sont remplacées par des "."
' et Split crée un tableau en fonction des tabulations (Chr(59))
' C'est là qu'on pourrait faire appel aux 2 dernières valeurs du tableau, mais ce serait plus lourd
I = I + 1 ' On augmente le N° de la ligne
Loop ' On boucle dans le fichier
Close #1 ' On ferme le fichier
Wend ' On boucle sur l'ouverture de fichier
Fin: ' Etiquette pour quand on sort de la boucle
If I = 2 Then Exit Sub ' Si on a pas importer de fichier, on quitte la Sub
' Le problème, c'est que le Split envoie des nombres au format texte, d'où le traitement complémentaire
Range("O1") = 1 ' Met 1 en O1
Range("O1").Copy ' Copie O1
Range("A1:N" & I - 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
' Collage spécial en multiplication par 1 qui transforme les valeurs textes en nombres
Application.CutCopyMode = False ' Désactive la sélection du copier
Range("O1").Clear ' Ote le 1 en O1
Application.ScreenUpdating = True ' Rétablit l'affichage
End Sub

Merci d'avance pour votre aide et bonne journée à toutes et à tous !

Bonjour Fenfen,

si j'ouvre ton fichier.csv avec BlocNote, le séparateur est le ;

est-ce bien le cas ?

Bonjour sabV

C'est bien le cas, ce sont des ";".

Bonjour et Bienvenue sur le forum

Un essai à tester. Te convient-il ?

Bye !

8fenfeni-v1.zip (33.60 Ko)

Merci pour la réponse rapide et l'accueil !

Alors oui c'est l'idée, mais ca ne semble pas marcher car lorsque je compile les 3 fichiers, ça me donne le fichier joint.

C'est un peu surprenant, est-ce que ça fait la même chose chez toi ?

Fenfen a écrit :

est-ce que ça fait la même chose chez toi ?

Mais oui !

En fait, quand tu ouvres ton fichier avec le bloc-notes, on constate qu'il y a un peu de tout comme caractères pouvant être des séparateurs.

Et j'ai du mal à les identifier en tant que tels pour obtenir 14 colonnes.

Il faudrait donc que tu prennes par exemple les 10 premières lignes du fichier ".csv" et que tu les convertisses à la main pour essayer de comprendre comment il faut faire travailler la macro.

OK ?

Bye !

Okay je vais voir ça ! Merci !!

Désolé du temps de réponse...long week-end...

Rechercher des sujets similaires à "compilation resultats"