VBA automatiser index+equiv

Bonjour A Tous! j'espère fortement trouver une solution, car cela fais déjà des mois que je rame, sans solution...

Donc mon Problème est le suivant; j'ai un fichier excel qui contient 3 colonnes (categorie;references;conso) et 30000 lignes qui est mise à jour quotidiennement dans le même classeur sur des feuil différentes,c'est à dire; chaque jour est classé dans une nouvelle feuille soit 31 feuil par mois; il faut chaque mois regrouper toutes ces feuil dans une unique feuil Nommé "RENDU".j'y suis parvenu par INDEX + EQUIV sauf que, a chaque fois je dois saisir cette formule sur 31 colonnes tout les mois. y'aurait-il pas un moyen par VBA d'automatiser ce tracking???

j'ai peur de n’être explicite, j'espère que le fichier joint vous aidera a mieux comprendre.

Merci d'avance pour votre Disponibilité

Cdt,

27tacking.xlsx (20.97 Ko)

Bonjour,

Tu dis avoir 30000 lignes à traiter. Faut-il comprendre que tu as 30000 références ?

Actuellement, comment détermines-tu la liste des références à inscrire dans la colonne A de la feuille "RENDU" ?

A+

Frangy Merci de m'avoir aussi vite répondu;

oui, 30000 références . j'ai la liste des 30000 références, pour déterminer celle qui seront dans la feuille RENDU, normalement ça devrais être une synthèse de toute les références qui ont eu une activités au moins une fois dans le mois. sauf que, je les utilises toutes et, toutes les références ne sont forcement pas activent tout les jours et peut être tout le mois.

j’espère avoir répondu a ta question

merci

Voici une proposition à tester.

Les références doivent être placées initialement dans la feuille "Base".

Le programme effectue la copie des références puis la mise en place des formules de recherche pour chacune des feuilles.

89tacking.xlsm (33.70 Ko)

A+

Bonjour,

Merci Beaucoup, je teste et te donne un Feedback

wouah !!!! j'avais pas cru que ce si soit possible !!!

Dis, ci c'est trop demandé pourrais tu m'expliquer le code je rêve de pouvoir arriver a un tel niveau de codage, juste pour savoir quel formation as tu fais pour être aussi fort ????

je suis impressionné !!!

BIG Merci.

Bonjour,

Voici le code commenté

Sub Regrouper()
Dim Ws As Worksheet
Dim Col As Integer
Dim DerLig As Long
    'Pour gagner en temps de traitement et obtenir un meillleur effet visuel, on désactive l'actualisation de l'écran
    Application.ScreenUpdating = False
    'Pour gagner en temps de traitement, , on désactive le mode de calcul automatique
    Application.Calculation = xlCalculationManual
    'La colonne initiale pour placer les consos est la colonne B
    Col = 2
    ' le traitement s'applique sur la feuille "RENDU"
    With Worksheets("RENDU")
        'On supprime les données de la feuillle
        .Cells.Clear
        'On copie les données de la colonne A de la feuille "Base"
        'et on les colle à partir de la cellule A1 sur la feuille "RENDU"
        Worksheets("Base").Columns(1).Copy .Range("A1")
        'On détermine le numéro de la dernière ligne renseignée dans la colonne A
        DerLig = .Range("A" & Rows.Count).End(xlUp).Row
        'On balaye toutes les feuilles du classeur
        For Each Ws In Worksheets
            'Si le nom de la feuille est différent de "RENDU" ou "Base"
            If Ws.Name <> "RENDU" And Ws.Name <> "Base" Then
                'Alors, on copie le nom de la feuille sur la première ligne
                .Cells(1, Col) = Ws.Name
                'On copie la formule sur la plage comprise entre la deuxième ligne et la derniere ligne
                .Range(.Cells(2, Col), .Cells(DerLig, Col)).Formula = _
                "=IFERROR(INDEX(INDIRECT(" & .Cells(1, Col).Address(, 0) & "&""!C:C""),MATCH($A2,INDIRECT(" & .Cells(1, Col).Address(, 0) & "&""!B:B""),0)),"""")"
                'On incrémente le numéro de colonne
                Col = Col + 1
            End If
        Next Ws
    End With
    'On active le mode de calcul automatique
    Application.Calculation = xlCalculationAutomatic
End Sub

Comme tu peux le constater, ce code ne présente pas de difficulté particulière.

Pour m'aider dans le codage, j'utilise simplement quelques astuces qui s'apprennent avec le temps.

A+

Grand merci ,

si j'ai des interrogations j'espère, pouvoir revenir vers vous sans toute fois être embêtent... ?!!!

OK c'est cool je comprends mieux le code

en admettant que le classeur qui porte Base et RENDU soit différent de celui d'ou viennent les données quel modification devrais-je faire sur le code ???

Dans l’exemple joint, le classeur tacking.xlsm contient les feuilles "RENDU" et "Base" ainsi que la macro de traitement.

Le classeur ClasseurDonnées.xlsx contient les données à traiter.

Pour tester la procédure, il faut que les 2 classeurs soient ouverts.

A+

34tacking.xlsm (20.39 Ko)

Cool Ça fonction très Bien

Rechercher des sujets similaires à "vba automatiser index equiv"