Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Rassembler les données de plusieurs feuilles dans une feuille récapitulative

FCMLE44

XLDnaute Impliqué
Supporter XLD
Bonjour

Dans le fichier en pièce jointe, je souhaite rapatrier dans la feuille RECAP, toutes les données des autres onglets de cette manière
Colonne A et B des onglets dans les colonnes A et B de la feuille Récap
En colonne C de la feuille RECAP, le nom de l'onglet d'ou provient les données rapatriée
Colonne C à K des onglets dans les colonnes D à L de la feuille Récap

Dans un second temps, je souhaiterais pouvoir créer un ou des onglets identiques à celui déja présent uniquement avec le tableau mais sans données

Quelqu'un aurait une idée ?

Merci
 

Pièces jointes

  • Classeur2.xlsx
    34.1 KB · Affichages: 20

Cousinhub

XLDnaute Barbatruc
Bonjour,
Dans la requête de Rachid
Tu accèdes à l'éditeur Power Query en appuyant simultanément sur Alt + F12
A droite, tu vois les étapes

Tu sélectionnes l'étape nommée "Lignes filtrées1" (comme sur la photo)
Dans la barre de formule (si elle n'est pas présente, tu vas dans le ruban "Affichage, et tu valides "Barre de formule"), tu vois le filtre appliqué, et ici, il est sur la colonne SOCIETE
Remplace SOCIETE par NOM (par exemple), puis "Fichier/Fermer et Charger" (attention, garde bien les [ et ] )

 

Pièces jointes

  • 1696249073927.png
    24.2 KB · Affichages: 6

FCMLE44

XLDnaute Impliqué
Supporter XLD
Merci mais je n'utilises pas la requête de Rachid mais la macro de CP4
 

cp4

XLDnaute Barbatruc
Bonjour tout le monde,

@FCMLE44 : Si j'ai bien compris, code modifié à tester.
VB:
Option Explicit

Sub Recapitulation()
   Dim ws As Worksheet, dl As Long, dl2 As Long, Fr As Worksheet, c As Range
   Set Fr = ThisWorkbook.Worksheets("recap")
   Application.ScreenUpdating = False
   With Fr
      dl = .Cells(Rows.Count, 1).End(xlUp).Row
      If dl > 5 Then .Range(.Cells(6, 1), .Cells(dl, 12)).ClearContents
   End With

   For Each ws In Worksheets
      If ws.Name <> "RECAP" Then
         dl2 = ws.Cells(Rows.Count, 1).End(xlUp).Row
         If dl2 > 5 And ws.Cells(dl2, 1) <> "" Then
            For Each c In ws.Range(ws.Cells(6, 1), ws.Cells(dl2, 1))
               dl = Fr.Cells(Rows.Count, 1).End(xlUp).Row + 1
               Fr.Cells(dl, 1) = c
               Fr.Cells(dl, 2) = c.Offset(0, 1)
               Fr.Cells(dl, 3) = ws.Name
               Fr.Cells(dl, 4) = c.Offset(0, 2)
               Fr.Cells(dl, 5) = c.Offset(0, 3)
               Fr.Cells(dl, 6) = c.Offset(0, 4)
               Fr.Cells(dl, 7) = c.Offset(0, 5)
               Fr.Cells(dl, 8) = c.Offset(0, 6)
               Fr.Cells(dl, 9) = c.Offset(0, 7)
               Fr.Cells(dl, 10) = c.Offset(0, 8)
               Fr.Cells(dl, 11) = c.Offset(0, 9)
               Fr.Cells(dl, 12) = c.Offset(0, 10)
            Next c
         End If
      End If
   Next
   Application.ScreenUpdating = True
   MsgBox "Recap terminée!", vbInformation + vbOKOnly, "TRAITEMENT"

End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…