Import fichier CSV et remaniement pour intégration dans .XLS

Tintin2256 Messages postés 25 Date d'inscription mardi 3 octobre 2017 Statut Membre Dernière intervention 18 septembre 2023 - 15 sept. 2023 à 22:26
Tintin2256 Messages postés 25 Date d'inscription mardi 3 octobre 2017 Statut Membre Dernière intervention 18 septembre 2023 - 18 sept. 2023 à 22:45

Bonjour,

Dans le cadre de mon travail, je génère des fichiers CSV regroupant différentes données d'exploitations (Temps de marche des pompes, consommations d'eau...). Le souci est que je génère un fichier par jour et mon client voudrait avoir une synthèse sur l'année.

L'idée est donc la suivante: Sur mon classeur Excel synthèse, je rajoute un bouton "Import données". L'appui sur ce bouton m'ouvre un fenêtre pour la sélection de mon fichier et ensuite, je récupère les données et je les remets en forme dans mon fichier synthèse.

j'ai commencé à me pencher sur le sujet et j'avoue que mes connaissances en VBA sont très limitées donc je sèche...

A l'heure actuelle, mon code ouvre la fenêtre de dialogue pour sélectionner le fichier, récupère le chemin de ce dernier et fin...

Pour faciliter la compréhension, voici le fichier CSV:

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

Et voici le fichier "Synthèse"

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

Merci d'avance à ceux qui prendront du temps pour m'aider.

PS: j'ai déjà regardé dans les précédentes discussions mais soit je ne comprends rien au code, soit ça ne correspond pas à mon besoin.


Windows / Chrome 116.0.0.0

A voir également:

3 réponses

mariam-j Messages postés 1082 Date d'inscription mercredi 9 mars 2022 Statut Membre Dernière intervention 23 mai 2024
16 sept. 2023 à 06:30

Bonjour,

Si je devais faire un truc pareil, je prendrais les relevés d'une semaine de 7 jours,

j'en ferais les moyennes, et je multiplierais par 52.

En incluant le mot:"Estimation".

Parce compiler 365 relevés, ça va pas être jouissif.

0

Bonjour mariam-j, 

Tout d'abord, merci d'avoir pris le temps de lire ma demande et d'y avoir répondu. 

Malheureusement, c'est une imposition de la part de mon client. Sinon, je ne m'embêterai pas et je ferai ces calculs dans mon automate et je générerait directement un fichier une fois par semaine.

0
Tintin2256 Messages postés 25 Date d'inscription mardi 3 octobre 2017 Statut Membre Dernière intervention 18 septembre 2023
18 sept. 2023 à 22:45

Bon, 

J'ai réussi à avancer un peu sur le sujet. J'arrive bien à importer mes données dans une feuille tampon que je créé puis que je supprime ensuite. Il y a sûrement moyen de faire beaucoup plus simple en passant par un tableau mais je n'ai pas ses compétences.

A présent, je sèche sur un point qui pourtant, semble hyper simple... Je veux copier des cellules de mon fichiers "tampon" vers une autre feuille et c'est là que le bas blesse...

J'ai essayé avec du ".Copy + paste", tu simple "=" et rien n'y fait...

Voici mon code si quelqu'un a un peu de temps pour m'aider.

Private Sub CommandButton1_Click()

On Error GoTo Fin

'Déclaration préliminaires
Dim wsheet As Worksheet, file_mrf As String
Dim i As Integer
Dim Var_traitement
Dim Jour
Dim Mois
Dim dernièreFeuille As String


file_mrf = Application.GetOpenFilename("Text Files (*.csv),*.csv", , "Provide Text or CSV File:")


'Ajout d'une feuille "tampon" qui accueillera les données du fichier'
Sheets.Add After:=Worksheets(Worksheets.Count())
dernièreFeuille = Sheets(Sheets.Count).Name
Sheets(dernièreFeuille).Name = "Tampon"


'Déclaration de la feuille active'
Set wsheet = ActiveWorkbook.Sheets("Tampon")

'Import des donnéees du fichiers CSV dans la feuille tampon'
With wsheet.QueryTables.Add(Connection:="TEXT;" & file_mrf, Destination:=wsheet.Range("A1"))
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.Refresh
End With
 
 
 'Découpage de la date pour récupération du jour et mois'
Var_traitement = Split(wsheet.Range("A3"), "/")
For i = LBound(Var_traitement) To UBound(Var_traitement)
    'Vous réalisez dans la boucle le traitement que vous souhaitez
Next i

'Recherche du mois en cours'
Mois = CInt(Var_traitement(0)) + 1

'recheche du jour en cours'
Jour = CInt(Var_traitement(1)) + 1

'Copie dans données dans la ligne correspondante'
Worksheets(Mois).Cells(3, Jour) = Worksheets("Tampon").Cells(1, 3)

Worksheets(Mois).Cells(3, Jour + 1).Value = "T'es nul"

'Suppression de la feuille tampon'
Application.DisplayAlerts = False
dernièreFeuille = Sheets(Sheets.Count).Name
Worksheets(dernièreFeuille).Delete

MsgBox "Fin de l'import"

GoTo Fin

Fin:

End Sub

0