Création tableau d'actions à partir de plusieurs onglets

Bonjour,

Plusieurs services de mon entreprise alimentent une feuille Excel avec les actions à mener, actions spécifiques à leur service.
J'ai donc un onglet par service (aujourd'hui 3 services, demain il y en aura 5) dans cette feuille Excel.

L'idée pour moi serait d'obtenir, dans ce même fichier, un 4ème onglet, dans lequel sont récapitulées toutes les actions à mener, tous services confondus.
Chaque service ayant ses propres données, je ne souhaite récupérer que les données présentes dans l’onglet "Bilan".

Comment automatiser cela afin d'éviter d'avoir à faire des copier/coller "à la main", tout en prenant en compte que chaque service alimente "son onglet" régulièrement, et que du coup, l'important des nouvelles actions dans l'onglet "Bilan" ne doit pas générer de doublons...

En vous remerciant.

Bonjour à tous !

Une proposition via Power Query :

Bonjour le fil, bonjour le forum,

Une autre proposition VBA en pièce jointe avec un CommandButton Récup etle code ci-dessous :

Private Sub CommandButton1_Click()
Dim OSA As Worksheet 'déclare la variable OSA (Onglet Service A)
Dim OSB As Worksheet 'déclare la variable OSB (Onglet Service B)
Dim OSC As Worksheet 'déclare la variable OSC (Onglet Service C)
Dim OB As Worksheet 'déclare la variable OB (Onglet Bilan)
Dim CAP() As Variant 'déclare le tableau de variables CAP (Colonnes À Copier)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DLO As Integer 'déclare la variable DLO (Dernière Ligne de l'Onglet en cours)
Dim DLB As Integer 'déclare la variable DLB (Dernière Ligne de Bilan)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Byte 'déclare la variable K (incrément)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set OSA = Worksheets("Service A") 'définit l'onglet OSA
Set OSB = Worksheets("Service B") 'définit l'onglet OSB
Set OSC = Worksheets("Service C") 'définit l'onglet OSC
Set OB = Worksheets("Bilan") 'définit l'onglet Bilan
OB.Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'efface les anciennes données de l'onglet Bilan
For Each O In Worksheets 'boucle 1 : sur tous les onglets O du classeur
    If Not O.Name = "Bilan" Then 'condition : si le nom de l'onglet n'est pas "Bilan"
        Select Case O.Name 'agit en fonction du nom de l'onglet O
            Case "Service A" 'cas "Service A"
                CAP = Array(1, 6, 7, 8, 9) 'définit les colonnes à copier
            Case "Service B" 'cas "Service B"
                CAP = Array(1, 4, 5, 6, 7) 'définit les colonnes à copier
            Case "Service C" 'cas "Service C"
                CAP = Array(1, 3, 4, 5, 6) 'définit les colonnes à copier
        End Select 'fin de l'action en fonction du nom de l'onglet O
        DLO = O.Cells(Application.Rows.Count, ("A")).End(xlUp).Row 'définit la dernière ligne éditée de l'onglet O
        For I = 2 To DLO 'boucle 2 : des lignes 2 à DLO
            DLB = OB.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définit la première ligne vide de l'onglet OB
            For J = 0 To 4 'boucle 3 : sur les 5 colonnes à copier
                If J = 0 Then K = J + 1 Else K = J + 2 'si J est supérieure à 0 alors K = J + 2 (à cause de la construction de ton tableau !)
                OB.Cells(DLB, K).Value = O.Cells(I, CAP(J)).Value 'récupère dans la cellule ligne DLB colonne K de l'onglet OB, la valeur de la cellule ligne I colonne CAP(J) de l'onglet O
            Next J 'prochaine colonne de la boucle 3
            OB.Cells(DLB, 2).Value = O.Name 'récupère le nom de l'onglet O dans la cellule ligne DLB, colonne 2 de l'onglet OB
        Next I 'prochaine ligne de la boucle 2
    End If 'fin de la condition
Next O 'prochain onglet de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub

Si tu rajoutes des onglets il te faudra modifier le code dans la partie Select Case en décrivant les colonnes à copier des nouveaux onglets mais il aurait été plus malin de les avoir toutes au même endroit ! Je ne connais pas le pouvoir de Query mais je pense que pour lui ce n'est pas un problème...

le fichier :


Hello ThauThème !

Je ne connais pas le pouvoir de Query mais je pense que pour lui ce n'est pas un problème...


Avec une convention de nommage des tableaux structurés (t_ServiceX avec X= A à Z.......), la requête Power Query prévue s'adaptera automatiquement.

Arf JFL ! J'étais sûr que tu allais me dire ça...

Donc ça y est, je suis de mauvaise humeur pour toute la journée. Va vraiment falloir que je le prenne ce pouvoir de Query !...

Bonjour de nouveau !

. Va vraiment falloir que je le prenne ce pouvoir de Query !...

Je suis (très) étonné du retard à l'allumage manifesté......

Et puis que dire d'Excel.......2010.... un tantinet dépassé non ?

Rien d'étonnant si tu connaissais le personnage...

Bonjour,

Désolé pour ma réponse tardive...Le Covid est passé par là.

Merci pour vos propositions.

Celle de ThauThème me parle mieux , mais je jetterai un œil sur PowerQuery que je ne connais absolument pas.

@ThauThème: malheureusement, difficile de mettre les colonnes à copier à la même place.

Je me permets 1 question:

Une fois l'importation effectuée, le tableau d'actions est généré. Je souhaiterais dans un second temps effectuer l'inverse.
C'est à dire, si dans l'onglet bilan, une action est complétée ou modifiée (an ajoutant par exemple la date de clôture réelle), la modification soit également apportée dans l'onglet correspondant.

Encore merci.

Bonjour à tous !

Bonjour,

Désolé pour ma réponse tardive...Le Covid est passé par là.

Prompt rétablissement et.....

Rechercher des sujets similaires à "creation tableau actions partir onglets"