Microsoft 365 Créer un synthèse de plusieurs onglets

  • Initiateur de la discussion Initiateur de la discussion cdric78
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cdric78

XLDnaute Junior
Bonjour,
Je fais appel à vous pour m'aider à réaliser quelques choses que je n'arrive pas à faire.
Je souhaite faire une synthèse de plusieurs onglets dans un seul onglet.

Je possède plusieurs onglets (CARR. 1, CARR.2, CARR. 3) mais ce nombre d'onglet sera évolutif (et le nommage des onglets ne conservera pas la structure "CARR. ?").
Je souhaite que l'onglet "Synthèse" reprenne les valeurs A1 et les valeurs présentes dans la colonne C si il y a un "1" en D sur la même ligne. Par exemple l'onglet synthèse ne devra pas affiché le contenu C10 de l'onglet CARR. 1 car il n'y a pas de 1 en D10.

Dans mon exemple, l'onglet "Synthèse" affiche le résultat attendu.

Je vous remercie par avance pour votre aide.
 

Pièces jointes

Bonjour,

Merci à FANFAN38 pour cette macro.

Je souhaite savoir comment faire pour modifier la macro afin de conserver la mise en forme des cellules copiés (police, mise en forme, lien hypertexte etc...)

Merci par avance pour vos réponses.

VB:
Private Sub Worksheet_Activate()
  Dim i As Integer, j As Long, lig As Long
 ' Set sh = Sheets("Synthèse")
  Range("A2:B1000").ClearContents
  lig = Range("B" & Rows.Count).End(xlUp).Row + 1
  For i = 1 To Sheets.Count
    If Sheets(i).Name <> "Synthèse" Then
      Range("A" & lig) = Sheets(i).Range("A1")
      For j = 2 To Sheets(i).Range("D" & Rows.Count).End(xlUp).Row
        If Sheets(i).Range("D" & j) = 1 Then
          Range("B" & lig) = Sheets(i).Range("C" & j)
          lig = lig + 1
        End If
      Next
      lig = lig + 2
    End If
  Next
End Sub
 
Vous n'avez donc pas appliqué correctement mes instructions pour obtenir :
VB:
Private Sub Worksheet_Activate()
  Dim i As Integer, j As Long, lig As Long
 ' Set sh = Sheets("Synthèse")
  Range("A2:B1000").ClearContents
  lig = Range("B" & Rows.Count).End(xlUp).Row + 1
  For i = 1 To Sheets.Count
    If Sheets(i).Name <> "Synthèse" Then
      Sheets(i).Range("A1").Copy Range("A" & lig)
      For j = 2 To Sheets(i).Range("D" & Rows.Count).End(xlUp).Row
        If Sheets(i).Range("D" & j) = 1 Then
          Sheets(i).Range("C" & j).Copy Range("B" & lig)
          lig = lig + 1
        End If
      Next
      lig = lig + 2
    End If
  Next
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
142
Réponses
5
Affichages
960
Retour