Compiler plusieurs onglets Excel sur un onglet Synthese

DSisco Messages postés 3 Statut Membre -  
DSisco Messages postés 3 Statut Membre -
Bonjour à tous,

Je vous écris aujourd'hui car je rencontre un problème avec une macro pour compiler mon fichier Excel que je vous joins ici :

https://www.cjoint.com/?0DxkZRYkHtz

Depuis 2 jours, j'essaie de trouver une macro qui me permettrait de compiler mes 7 onglets dans un onglet "SYNTHESE".

Il est important pour moi de garder ces onglets car chacun de mes sites gère son onglet et me le renvoie. Le copier/coller à chaque mise à jour dans ce fichier excel ne me dérange pas.

En revanche, les directeurs eux consultent uniquement l'onglet SYNTHESE, d'où mon besoin de compiler mes 7 onglets dans celui ci, et de pouvoir faire des mises à jour automatique (où même s'il y a une manip à faire pour la mise à jour, ce n'est pas grave, du moment que l'on a une compilation à la fin).

Ne connaissant rien aux macros ou au langage VBA j'ai tenté de me débrouiller seule à partir de codes trouver sur les forums, mais je n'arrive jamais à compiler plus de 3 onglets, et là je vous avoue, je craque un peu...

Le code est disponible dans les modules du fichier excel joint, si vous le souhaitez, je peux vous le remettre dans un message ici.

Je vous remercie tous par avance pour votre précieuse aide!

2 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Corriges la destination, au lieu de "A1" & x écrire "A" & x

    Par exemple, corriges la ligne :
        Sheets("Site de VALENCE").Rows("2:" & x).Copy Sheets("SYNTHESE").Range("A1" & y)

    par :
        Sheets("Site de VALENCE").Rows("2:" & x).Copy Sheets("SYNTHESE").Range("A" & y)

    0
    1. DSisco Messages postés 3 Statut Membre
       
      Bonjour Patrice,

      Merci pour ton conseil. Malheureusement mon problème persiste...
      J'ai réussi à compiler les 3 premiers onglets sur mon onglets synthèse, dès que j'ajoute le 4ie, il vient remplacer les résultats du 3ie.

      Sub test_conso()
      '

      Dim x As Long, y As Long

      Sheets("SYNTHESE").Cells.ClearContents

      x = Worksheets("IRFSS RA").Range("A" & Rows.count).End(xlUp).Row
      Sheets("IRFSS RA").Rows("3:" & x).Copy Sheets("SYNTHESE").Range("A4")


      x = Worksheets("Site de LYON").Range("A1").End(xlDown).Row
      y = Sheets("SYNTHESE").Range("A" & Rows.count).End(xlUp).Row + 1
      Sheets("Site de LYON").Rows("3:" & x).Copy Sheets("SYNTHESE").Range("A" & y)

      x = Worksheets("Site de ST ETIENNE").Range("A1").End(xlDown).Row
      y = Sheets("SYNTHESE").Range("A" & Rows.count).End(xlUp).Row + 1
      Sheets("Site de ST ETIENNE").Rows("3:" & x).Copy Sheets("SYNTHESE").Range("A" & y)

      x = Worksheets("Site de VALENCE").Range("A1").End(xlDown).Row
      y = Sheets("SYNTHESE").Range("A" & Rows.count).End(xlUp).Row + 1
      Sheets("Site de VALENCE").Rows("3:" & x).Copy Sheets("SYNTHESE").Range("A" & y)


      End Sub


      Est ce que tu as une idée de ce que je pourrais corriger pour arriver à tout combiner ?

      Merci :)
      0
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Essaies :
    Sub test_conso()
    Dim x As Long, y As Long
    
      Sheets("SYNTHESE").Cells.Clear
            
      Sheets("IRFSS RA").Cells.Copy Sheets("SYNTHESE").Range("A1") 'pour copier aussi les largeurs de colonne
        
      x = Worksheets("Site de LYON").Range("A" & Rows.count).End(xlUp).Row
      y = Sheets("SYNTHESE").Range("A" & Rows.count).End(xlUp).Row + 1
      Sheets("Site de LYON").Rows("2:" & x).Copy Sheets("SYNTHESE").Range("A" & y)
    
      x = Worksheets("Site de ST ETIENNE").Range("A" & Rows.count).End(xlUp).Row
      y = Sheets("SYNTHESE").Range("A" & Rows.count).End(xlUp).Row + 1
      Sheets("Site de ST ETIENNE").Rows("2:" & x).Copy Sheets("SYNTHESE").Range("A" & y)
        
      x = Worksheets("Site de VALENCE").Range("A" & Rows.count).End(xlUp).Row
      y = Sheets("SYNTHESE").Range("A" & Rows.count).End(xlUp).Row + 1
      Sheets("Site de VALENCE").Rows("2:" & x).Copy Sheets("SYNTHESE").Range("A" & y)
        
    End Sub
    
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Après avoir vu les tableaux, la colonne A n'est pas toujours remplie il serait préférable d'utiliser :
      Option Explicit
      Sub test_conso()
      Dim n°L As Long       'n° ligne destination
      Dim d°L As Long       'dernière ligne source
      Dim wsS As Worksheet  'feuille source
      Dim wsD As Worksheet  'feuille destination
      
        Set wsD = Worksheets("SYNTHESE")
        wsD.Cells.Clear
        For Each wsS In Worksheets
          If wsS.Index <> wsD.Index And wsS.Range("C1").Value = "PROCESSUS" Then
            'pour chaque feuille concernée (sauf SYNTHESE, Param, liste déroulante, ...)
            If wsS.Range("B1").Value <> wsD.Range("B1").Value Then
              'si synthèse est vierge : copier la 1° feuille avec les titres
              wsS.Cells.Copy wsD.Range("A1")
            Else
              'sinon : ajouter les données
              n°L = wsD.Range("B" & Rows.count).End(xlUp).Row + 1
              d°L = wsS.Range("B" & Rows.count).End(xlUp).Row
              wsS.Rows("2:" & d°L).Copy wsD.Range("A" & n°L)
            End If
          End If
        Next wsS
        
      End Sub
      0
      1. DSisco Messages postés 3 Statut Membre > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
         
        Oh oui super!!! Cela à l'air de bien fonctionner (même si j'ai l'impression qu'une ou deux lignes sont encore supprimées au moment de la compilation!).

        Je vais voir pour mieux compléter toutes les colonnes de mon tableau voir comme la macro se comporte, je ferais des tests aussi quand je rajoute des lignes, voir comment tout cela se met à jour. Je te ferais un retour.

        En tout cas mille merci pour ton aide!
        0