Fusion plage données fichiers Excel en un seul

Bonjour,

Depuis quelques jours, je tente de trouver une macro me permettant de fusionner une plage de données fixe (C22:H45) avec un en tête également fixe (C18:H21) sur une seule feuille Excel, les données les unes en dessous des autres.

Ces fichiers de données sont créés tous les jours (bilan horaire journalier de débit d'une station d'épuration) avec comme architecture du fichier le nom suivant : D20161028.xls (date/mois/jour). Je joins 2 exemples.

Tous ces fichiers sont archivés dans un dossier nommé "RAP_PRETRAITEMENT"

Merci pour votre aide

Steven

24d20161022.zip (35.99 Ko)
32d20161021.zip (35.98 Ko)

Bonjour et bienvenue sur le forum

Quelque chose m'échapppe...

Pourquoi veux-tu fusionner des plages de cellules ? Tu vas perdre définitivement les données qu'elles contiennent...

Bye !

Bonsoir,

Ci-joint une proposition à tester.

> sélectionner le répertoire contenant tous les fichiers (et que ceux-là)

> les données de la plage indiquée sont récupérées et restituées à la suite

De ma compréhension, il ne s'agit pas de fusion

Sinon, tant pis, on recommencera autre chose

Bonne soirée

Bouben

Oui autant pour moi il ne s agit pas de "fusion" mais d un copier / coller

Je teste dès mardi et vous tiens informé !

Merci pour vote réactivité en tout cas

Bonjour,

Je viens de tester la macro sur mes données du mois de septembre, donc sur environ 30 fichiers.

Remarques :

  • ligne 8 à 31 = données du 21/10/16 alors que les données sont sur septembre !?
  • les débits importés ne sont pas justes car il y a une formule de soustraction dans les cellules du fichier d'origine, il faudrait pouvoir importer la valeur uniquement
  • a quoi correspond la colonne D ? la colonne E suffirait

Je vous rejoins le fichier Bilan

Merci

Quelqu'un pour m'aider Svp ?

Merci infiniment

Bonjour,

Ci-joint une nouvelle version à tester

Les réponses sur les 3 points :

- ligne 8 à 31 = données du 21/10/16 alors que les données sont sur septembre !?

A priori, cela correspond au fichier de récap qui serait enregistré dans le même répertoire que les autres fichiers à traiter.

=> contrôle complémentaire : prise en compte uniquement des fichiers avec un nom commençant par "D[nnnnnnnn]" (D + 8 chiffres)

- les débits importés ne sont pas justes car il y a une formule de soustraction dans les cellules du fichier d'origine, il faudrait pouvoir importer la valeur uniquement

=> modifié ; copie en valeur (pour éviter de récupérer les formules)

- a quoi correspond la colonne D ? la colonne E suffirait

Heure récupérée dans le fichier

=> OK, si pas besoin, colonne supprimée

Cordialement

Bouben

Enorme merci Bouben !

la macro fonctionne comme à mon idée

Super !

Cordialement

Bouben

Bien le bonjour,

Je me retrouve avec une situation similaire àcelle de " Diuck ", à l’exception que la plage de données que j'aimerais récupérer est "variable", n'y connaissant pas grand chose en vba je me dit que c'est au niveau de cette partie du code que je dois modifier quelque chose, oui mais par quoi ?

Si quelqu'un peut m'aider ou tu du moins me mettre sur la piste

d'avance merci

    'efface
    iEcr = oShRes.Range("F" & Rows.Count).End(xlUp).Row
    If iEcr >= 8 Then
        oShRes.Rows("8:" & iEcr).ClearContents
    End If

    For Each oFic In oFSO.GetFolder(sRep).Files
        Set oWBSource = Workbooks.Open(oFic.Path, , True)
        Set oShSource = oWBSource.Worksheets(3)
        iEcr = oShRes.Range("F" & Rows.Count).End(xlUp).Row + 1
        oShSource.Range("C10:J45").Copy
        ' oShSource.Range("C10:AZ" & Range("A65536").End(xlUp).Row).Copy  'ce que j'ai essayé en mettant en commentaire la ligne au dessus
        oShRes.Range("E" & iEcr).PasteSpecial xlPasteAll
        Application.CutCopyMode = False
        'nom du fichier
        oShRes.Range("B" & iEcr & ":B" & iEcr + 23).Value = oFic.Name 'remplacer le +23 par code vba variable
        'date
        oShRes.Range("C" & iEcr & ":C" & iEcr + 23).Value = oShSource.Range("D11").Value
        'heure 'remplacer le +23 par code vba variable
        oShRes.Range("D" & iEcr & ":D" & iEcr + 23).Value = oShSource.Range("D11").Value
        Set oShSource = Nothing 'remplacer le +23 par code vba variable
        oWBSource.Close False
        Set oWBSource = Nothing
    Next oFic

    'reprise des cadres
    oShRes.Range("E8:E" & iEcr + 23).Copy 'remplacer le +23 par code vba variable
    oShRes.Range("B8").PasteSpecial xlPasteFormats
    oShRes.Range("C8").PasteSpecial xlPasteFormats
    oShRes.Range("D8").PasteSpecial xlPasteFormats
    Application.CutCopyMode = False

Bonjour,

Une bonne âme pourrait me mettre sur la voie ?

D'avance merci

Rechercher des sujets similaires à "fusion plage donnees fichiers seul"