Récupérer Kilométrage parc véhicules

Bonjour,

J'ai besoin de votre aide pour créer un tableau récupérant les kms de début et de fin de plusieurs véhicules d'un parc depuis plusieurs classeurs.

je souhaiterai récupéré le kilométrage des véhicules se trouvant dans plusieurs classeurs fermés ayant plusieurs feuilles

Mes contraintes :

A partir d'un tableau recensant tous les véhicules d'un parc de bus

récupérer le plus petit et le plus grand kilométrage d'un véhicule en comparant tous les kilométrages ( des différents classeurs ) de ce même véhicule.

Certains véhicules peuvent être plusieurs fois présents sur la même feuille et peuvent être aussi présent sur la 2eme et 3eme feuille du même classeur (car peuvent circuler sur plusieurs lignes le même jour).

Les fichiers (source) ne peuvent pas être modifiés (mise en forme) et doivent rester fermés (si possible)

fichiers joints :

2 classeurs 01.xls et 02.xls contenant les numéros de véhicules avec leur kilométrage ( avec 3 feuilles par classeur )

result.xls , le tableau résultat que je souhaite obtenir.

Mes connaissances en Excel et VBA étant très limitées, j'ai besoin de pistes ou conseils sur les fonctions ou macros à utiliser.

Merci d'avance

3601.zip (16.20 Ko)
3102.zip (18.03 Ko)
48result.xlsx (11.02 Ko)

Bonjour,

mets les fichiers dans un seul dossier (et rien d'autres)

Option Explicit

Sub importer()
Dim wbk1 As Workbook, tbl1 As ListObject, wbk2 As Workbook, ws2 As Worksheet
Dim MonRepertoire, Repertoire As FileDialog, monFichier$
Dim col, derL, lig

    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Application.FileDialog(msoFileDialogFolderPicker).Title = "Choix du répertoire de stockage des fichiers générés"
    Repertoire.Show
    If Repertoire.SelectedItems.Count = 0 Then Exit Sub
    MonRepertoire = Repertoire.SelectedItems(1) & "\"

    Set wbk1 = ThisWorkbook
    Set tbl1 = wbk1.ActiveSheet.ListObjects(1)
    If Not tbl1.DataBodyRange Is Nothing Then tbl1.DataBodyRange.Delete
    monFichier = Dir(MonRepertoire & "*.xls*")

    Do While monFichier <> ""
        Debug.Print monFichier
        Set wbk2 = Workbooks.Open(MonRepertoire & monFichier)

            For Each ws2 In wbk2.Worksheets
                For col = 2 To ws2.Cells(1, Columns.Count).End(xlToLeft).Column Step 6
                    derL = ws2.Cells(Rows.Count, col).End(xlUp).Row
                    If derL > 1 Then
                        tbl1.ListRows.Add
                        lig = tbl1.ListRows.Count
                        ws2.Cells(2, col).Resize(derL - 1, 4).Copy Destination:=tbl1.DataBodyRange.Cells(lig, 1)
                    End If
                Next
            Next

        Application.DisplayAlerts = False
            wbk2.Close False
        Application.DisplayAlerts = True
        monFichier = Dir
    Loop

    Sheets(2).Select
    ActiveSheet.PivotTables(1).PivotCache.Refresh

End Sub
11km.xlsm (29.87 Ko)

Bonjour à tous

Une version PowerQuery

Modifier le chemin puis Données, Actualiser Tout

A noter que les sources ne sont pas très propres : tantôt on trouve véhicule avec ou sans accent

Si d'autres écarts de ce type, la requête peut ne pas fonctionner

17km-pq.xlsx (26.92 Ko)

Bonjour et merci à tous les 2 pour votre réactivité et le temps passer sur ma demande.

En fait j’ai plus de 30 fichiers à traiter 01.xls..30.xls

le power query me retourne des erreurs, faut que je vérifie la propreté des fichiers .

la requête vba ne traite pas bien les kms de début et fin de kms ,pour chaque véhicule , faut que je regarde en détail pourquoi .

En tout cas merci pour votre travail , je vais investiguer à partir de vos solutions qui semblent bien correspondre à mes besoins .

Bonne soirée

Pour ma part, par véhicule, je prends la valeur mini du début et maxi de la fin. Il faut bi sûr que le véhicule soit parfaitement identifié de la même façon. Il faut aussi que la structure du document soit respecté en terme de positionnement des tableaux. S'il faut dans certains cas faire une recherche du positionnement des tableaux c'st possible.

Bonjour à tous

C'est sûr qu'une modification des tableaux sources pour l'avenir serait bienvenue :

  • pas de tableaux superposés, qui plus est à des positions variables qui créent un chevauchement de lignes,
  • des titres homogènes

Comme on dit vulgairement mer...e IN, mer...e OUT

Que ce soit en VBA ou PowerQuery cela simplifierait et et accélèrerait nettement le traitement

Rechercher des sujets similaires à "recuperer kilometrage parc vehicules"