Consolider plusieurs tableaux avec conditions

Bonjour,

Fervent lecteur du forum depuis plusieurs années, il m'a souvent dépanné pour de chouettes projets. Malheureusement, je commence à coincer sur mon dernier fichier.

Mon objectif est de pouvoir fairez des tableaux de synthèses de plusieurs feuilles (existantes ou à créer).

Mon besoin est donc d'avoir 2 tableaux récapitulatifs sur base de ces autres feuilles (ROBINSON A3, ROBINSON A5, Feuilles à créer) :

  1. Sur base du projet (case B3)
  2. Sur base du lot (colonne C des tableaux)

J'ai tenté des Combinaisons de tableau et des RECHERCHEV & SIERREUR mais je n'arrive pas à qqch de correct.
J'ai également essayé avec la somme de la même cellule dans toutes les feuilles et puis un tri mais les nouvelles feuilles ne sont alors pas additionnées car ajoutée à la fin.

Auriez-vous des pistes de réflexions pour moi ?

Merci d'avance à tous :)

Bonjour,

Essayez ceci, sur la feuille "SYNTHESE", cliquez sur le bouton "Synthèse"

Cdlt

Bonjour Arturo,

Cela fonctionne à merveille. J'ai un peu chipoté dans le code pour adapter deux trois chose et ça fonctionne à merveille.

Histoire d'apprendre, possible de me donner quelques explications de plus ?

Un tout grand merci !!

Voilà le détail;

Option Explicit

Sub Synthese()
    'Déclaration des variables
    Dim f1 As Worksheet, f2 As Worksheet
    Dim i As Long, Lig_f1 As Long, Lig_f2 As Long
    Dim DerLig_f2 As Long, Nb_Lig_f2 As Long
    Dim Projet As String, Unite As String

    Application.ScreenUpdating = False 'Evite les rafraichissements de l'écran et accélère l'exécution de la macro
    Set f1 = Sheets("SYNTHESE") 'attribution de la variable f1 à la feuille "SYNTHESE"
    f1.Range("A2:M10000").Clear 'on efface les précédents résultats de la feuille "SYNTHESE
    Lig_f1 = 2 'Ligne de destination des données dans la feuille "SYNTHESE"
    For i = 1 To Sheets.Count 'on passe toutes les feuilles en revue, de la feuille 1 à la dernière feuille
        If Sheets(i).Name <> "BDD" And Sheets(i).Name <> "BASE" And Sheets(i).Name <> "MODELE" _
            And Sheets(i).Name <> "BESOINS" And Sheets(i).Name <> "RECAP" And Sheets(i).Name <> "SYNTHESE" Then
            'si la feuille à tester est différente de toutes celles énumérées ci-dessus alors:
            Set f2 = Sheets(Sheets(i).Name) 'attribution de la variable f2 à chaque feuille à tester
            Projet = f2.Range("B3") 'on releve le nom du projet
            Unite = f2.Range("B4") 'on relevé l'unité
            DerLig_f2 = f2.Range("A" & Rows.Count).End(xlUp).Row 'on cherche la dernière ligne de la  feuille
            Lig_f2 = 18 ' première ligne où commencent les données

            'comme chaque tableau de données est un tableau structuré dont le nombre de lignes est fixé par le modèle, _
            et comme la dernière ligne de l'un n'est pas n'est pas forcément celle de l"autre, alors on recherche la réelle dernière ligne
            Do While f2.Cells(Lig_f2, "A") <> "" And f2.Cells(Lig_f2, "A") <> "Total" 'si les lignes testées ne sont pas vides et différentes du total
                Lig_f2 = Lig_f2 + 1 'on passe à la ligne suivante
            Loop

            Nb_Lig_f2 = Lig_f2 - 19 'nombre de lignes réellement utilisées

            'Copie de la plage de valeur dans la feuille "SYNTHESE"
            Range(f1.Cells(Lig_f1, "C"), f1.Cells(Lig_f1 + Nb_Lig_f2, "M")).Value = f2.Range("A18:K" & Lig_f2 - 1).Value

            'Copie du projet et de l'unité
            f1.Range("A" & Lig_f1 & ":A" & Lig_f1 + Nb_Lig_f2).Value = Projet
            f1.Range("B" & Lig_f1 & ":B" & Lig_f1 + Nb_Lig_f2).Value = Unite

             'on défini la nouvelle ligne de destination
            Lig_f1 = Lig_f1 + Nb_Lig_f2 + 1
        End If
    Next i
    f1.Cells.EntireRow.AutoFit 'on adapte la heuteur des lignes
    f1.Rows(1).RowHeight = 85 'on fixe la hauteur de la ligne des titres

    'libération de la mémoire
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

Bonjour à tous,

Je me replonge dans ce projet et j'ai un souci avec le VBA :

  • Dans l'onglet SYNTHESE, lors du rafraichissement, la première ligne change de nom alors que je voudrais qu'elle soit fixe.
  • Dans l'onglet SYNTHESE, loris du rafraichissement, les lignes 2 et 3 s'ajoutent et je ne sais pas d'où elles viennent.

L'objectif de ce changement est de pouvoir mettre mon TCD de l'onglet RECAP PROJET à jour facilement avec les bons noms de cellules.

Merci d'avance de votre temps et excellente journée.

B.

Bonjour,

Je vois que vous avez sélectionné des filtres, le code rapatrie toutes les lignes filtrées ou pas, souhaitez-vous uniquement le rapatriement des lignes filtrées?

En attendant, voici:

Cdlt

Bonjoiur Arthuro83,

Déjà merci de votre support et votre suivi rapide :)

L'idéal serait de rapatrier seulement les lignes filtrées. Le tableau de synthèse serait alors moins lourd.
Par contre, la mise à jour à jour de Synthèse doit repasser dans tous les onglets car les filtres sont susceptibles de changer par la suite.

Merci d'avance et excellente aprem.

B.

Bonjour,

Voici le fichier modifié:

Cdlt

Bonjour,

Malheureusement, le rafraichissement de l'onglet SYNTHESE ne fonctionne pas correctement.

J'ai tenté de trouver la solution mais impossible de modifier le VBA.

Merci d'avance :)

Bonjour,

Malheureusement, le rafraichissement de l'onglet SYNTHESE ne fonctionne pas correctement.

J'ai tenté de trouver la solution mais impossible de modifier le VBA.

Qu'avez-vous fait comme opération?

Le code VBA est accessible et modifiable à souhait, y avez-vous apporté des modifications? si OUI, déposez-le ici pour que je regarde.

CDlt

Bonjour,

Je repris la dernière version proposée dans votre dernier post.

L'incrémentation d'une nouvelle unité fonctionne mais une fois que je mets à jour (via le VBA) dans l'onglet SYNTHESE, le tableau ne se complète pas correctement.

Je n'ai donc pas modifié le VBA, pas encore assez expérimenté pour y arriver :p

Merci.

J'ai un peu perdu le fil, pourriez-vous me mettre à disposition le fichier avec l'incrémentation d'une nouvelle unité, afin que je puisse faire tourner la macro en pas à pas et voir où ça coince. Il serait même préférable que vous mettiez aussi le même fichier mais avec le résultat attendu, ça me simplifierez considérablement le travail d'analyse, merci.

Bonjour,

En effet, c'est plus simple de récapituler. Encore merci pour votre temps :)

PROCESS DE BASE

  1. L'onglet MODELE est remis à zéro (recopie de l'onglet BASE & remise à zéro des filtres) : OK
  2. L'onglet MODELE est complété (coordonnées clients, modification des filtres, du statut et des quantités) : OK
  3. La fiche de la nouvelle unité est créée sur base de MODELE avec le nouveau nom issues des cases B3 et B4 : OK
  4. Les fiches d'unités sont ensuite parfois modifiées manuellement avec les quantités, les statuts ou les prix : OK
  5. L'onglet SYNTHSE devrait reprendre toutes les informations des unités séparées : NOK (le contenu lors du run de la Macro ne reprend pas les différentes informations des unités)
  6. L'onglet RECAP PROJET permet alors de faire un TCD sur base du tableau de synthèse : NOK (le TCQ ne fonctionne pas car le nom des colonnes de l'onglet SYNTHSE ont été modifié).

Est-ce plus claire ou avez-vous besoin d'autres informations ?

À noter que l'onglet SYNTHESE peut reprendre le détails de toutes les unités pour laquelle les unités sont différentes de 0 (mais ce n'est pas une obligation car c'est un tri qui peut être réalisé dans le TCD).

Un tout grand merci de votre aide et excellente journée.

B.

OK j'ai compris, en fait je pensais que les informations à rapatrier se trouvaient sur toutes les feuilles nommées "ROBINSON " or, apparemment cela peut être n'importe quel nom.

Voici le correctif

CDlt

Encore merci pour votre temps :)

Par contre, la macro synthèse ne fonctionne pas mieux :

image

Toutes les colonnes reprennent ALL :x

Merci d'avance ... encore et toujours !

Effectivement, il y a eu une petite erreur de saisie sur cette ligne:

            Set Zone_Filtree = Tbl.ListColumns(1).DataBodyRange.SpecialCells(xlCellTypeVisible)

il fallait ceci: Tbl.ListColumns(11) à la place de cela: Tbl.ListColumns(1)

le correctif:

Cdlt

J'ai vraiment intérêt à me mettre correctement au VBA ...

Voici l'erreur actuelle : (l'objectif étant de récupérer les informations différentes pour chaques colonnes)

image

Merci :)

J'ai vraiment intérêt à me mettre correctement au VBA ...Voici l'erreur actuelle : (l'objectif étant de récupérer les informations différentes pour chaques colonnes)

Désolé, c'est moi qui devrait être plus attentif, mais je fais plusieurs choses en même temps, donc la concentration s'en ressent.

Voici, cette fois -ci devrait être la bonne.

Cdlt

Bonjour,

Ce fichier comment a vraiment être efficace et j'ai besoin de faire quelques adaptations supplémentaires :

  1. Rajouter deux onglets RECAP PROJET (avec des TCD différents) > Quand je les rajoute, le tableau SYNTHESE bug
  2. N'agréger les tableaux GRAVIERE, ROBINSON, etc. dans le tableau SYNTHESE que SI la case F10 est cochée (Unité signée)
  3. Les intitulés de la page SYNTHESE ne sont pas corrects.
  4. Dans l'onglet SYNTHESE, comment pouvoir rajouter des informations dans les colonnes après M et qu'elles ne se décalent pas en cas de mise à jour des informations ?

Ayant fais quelques modifications, voici le document utilisé :

Un tout grand merci d'avance :)

Bonjour,

Si vous ajoutez plusieurs "Feuilles" RECAP PROJET".

la ligne de code à modifier est celle-ci

        If Sheets(i).Name <> "BDD" And Sheets(i).Name <> "BASE" And Sheets(i).Name <> "SYNTHESE" And Sheets(i).Name <> "RECAP PROJET" And Sheets(i).Name <> "MODELE" Then
et est à remplacer par celle-ci:
        If Sheets(i).Name <> "BDD" And Sheets(i).Name <> "BASE" And Sheets(i).Name <> "SYNTHESE" And Left(Sheets(i).Name, 12) <> "RECAP PROJET" And Sheets(i).Name <> "MODELE" Then
Pour la case à cocher en F10, faites un clic-droit sur la case à cocher, et affecter la cellule liée "$F$10" , parce que je ne suis pas sûr qu'à chaque recopie du modèle, le nom de la case à cocher ne change pas. En désignant la cellule F10 comme cellule à contrôler, on s'affranchit de cette éventualité.

Pour les 2 autres questions, soyez plus précis, je préfère même que vous déposiez un fichier avec le résultat attendu.

Cdlt
Rechercher des sujets similaires à "consolider tableaux conditions"