Synthèse de plusieurs onglets

Résolu
en2mots Messages postés 170 Statut Membre -  
 Maurice -
Bonjour,

Ci-dessous le fichier relatif à ma question.

https://mon-partage.fr/f/v36kz6vI/

Normalement, mon fichier complet possédera 125 onglets numérotés + un onglet "synthèse".

je voudrais une macro sur l'onglet synthèse qui recupère les infos de chaque onglet numéroté pour les insérer dans les colonnes : F, G, H, I, K, M, P, R, T et W

L'info de la colonne F doit correspondre à la cellule D20 des onglets numérotés
L'info de la colonne G doit correspondre à la cellule D25 des onglets numérotés
L'info de la colonne H doit correspondre à la cellule D30 des onglets numérotés
L'info de la colonne I doit correspondre à la cellule C36 des onglets numérotés
L'info de la colonne K doit correspondre à la cellule B53 des onglets numérotés
L'info de la colonne M doit correspondre à la cellule B54 des onglets numérotés
L'info de la colonne P doit correspondre à la cellule B61 des onglets numérotés
L'info de la colonne R doit correspondre à la cellule B62 des onglets numérotés
L'info de la colonne T doit correspondre à la cellule B63 des onglets numérotés
L'info de la colonne W doit correspondre à la cellule B68 des onglets numérotés

Condition :

les onglets numérotés ne doivent pas être (nous ferons des copier coller sur les onglets d'ù l'importance de garder la structure telle quel modifiés dans leur structure y compris la fusion des cellules car ce sont des documents déjà utilisés comme tels et on ne pourra pas les modifier au près des personnes qui rempliront le document.
Il doit y avoir 125 onglets numérotés au final

Merci pour votre aide

6 réponses

  1. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour,

    Voici une macro pour effectuer le report des données.

    Sub Test()
    Dim Ws As Worksheet
    Dim Ligne As Integer
    Application.ScreenUpdating = False
    For Each Ws In Worksheets
    If Ws.Name <> "SYNTHESE" Then
    Ligne = CInt(Ws.Name) + 3
    With Worksheets("SYNTHESE")
    'L 'info de la colonne F doit correspondre à la cellule D20 des onglets numérotés
    .Cells(Ligne, "F") = Ws.Range("D20")
    'L 'info de la colonne G doit correspondre à la cellule D25 des onglets numérotés
    .Cells(Ligne, "G") = Ws.Range("D25")
    'L 'info de la colonne H doit correspondre à la cellule D30 des onglets numérotés
    .Cells(Ligne, "H") = Ws.Range("D30")
    'L 'info de la colonne I doit correspondre à la cellule C36 des onglets numérotés
    .Cells(Ligne, "I") = Ws.Range("C36")
    'L 'info de la colonne K doit correspondre à la cellule B53 des onglets numérotés
    .Cells(Ligne, "K") = Ws.Range("B53")
    'L 'info de la colonne M doit correspondre à la cellule B54 des onglets numérotés
    .Cells(Ligne, "M") = Ws.Range("B54")
    'L 'info de la colonne P doit correspondre à la cellule B61 des onglets numérotés
    .Cells(Ligne, "P") = Ws.Range("B61")
    'L 'info de la colonne R doit correspondre à la cellule B62 des onglets numérotés
    .Cells(Ligne, "R") = Ws.Range("B62")
    'L 'info de la colonne T doit correspondre à la cellule B63 des onglets numérotés
    .Cells(Ligne, "T") = Ws.Range("B63")
    'L 'info de la colonne W doit correspondre à la cellule B68 des onglets numérotés
    .Cells(Ligne, "W") = Ws.Range("B68")
    End With
    End If
    Next Ws
    Application.ScreenUpdating = True
    End Sub


    Remarque : il me semble que l'emplacement des données dans ton classeur ne correspond pas exactement à ce que tu as indiqué.
    A vérifier ...

    A+
    1
    1. Pierre1310 Messages postés 8854 Statut Membre 652
       
      Bonjour Gyrus,

      Désolé si je te déranger mais tu pourrai m'expliquer comment l'objet "ws" change de feuille sans que tu le dise?
      0
      1. Gyrus Messages postés 3360 Statut Membre 526 > Pierre1310 Messages postés 8854 Statut Membre
         
        Bonjour,

        Avec la boucle For Each Ws In Worksheets ... Next Ws
        Traduction : pour chaque feuille de l'ensemble des feuilles du classeur ...

        Avec cette boucle, toutes les feuilles sont traitées. Il reste alors à isoler celle qui ne doit pas être prise en compte, à savoir la feuille "SYNTHESE" avec l'instruction
        If Ws.Name <> "SYNTHESE" Then

        A+
        0
    2. Pierre1310 Messages postés 8854 Statut Membre 652
       
      Merci bonne journée :)
      0
    3. en2mots Messages postés 170 Statut Membre
       
      Merci à tous les deux ! impeccable !
      0
  2. Pierre1310 Messages postés 8854 Statut Membre 652
     
    Bonjour,

    Je dois faire l'addition des tous les onglets(de 1 à 50)?
    0
    1. en2mots Messages postés 170 Statut Membre
       
      non, en fait nous nous allons remplir uniquement les onglets de 1à 125 (dans la réalité), et on nous demande de reporter aussi les infos des 125 onglets dans le tableau synthèse. En fait je voudrais par exemple quand je saisie la fiche de l'onglet 1, que les infos saisies se reportent en synthèse sur la ligne qui porte le numéro 1 (au niveau des numéros colonne A) etc.... et ça pour

      L'info de la colonne F doit correspondre à la cellule D20 des onglets numérotés
      L'info de la colonne G doit correspondre à la cellule D25 des onglets numérotés
      L'info de la colonne H doit correspondre à la cellule D30 des onglets numérotés
      L'info de la colonne I doit correspondre à la cellule C36 des onglets numérotés
      L'info de la colonne K doit correspondre à la cellule B53 des onglets numérotés
      L'info de la colonne M doit correspondre à la cellule B54 des onglets numérotés
      L'info de la colonne P doit correspondre à la cellule B61 des onglets numérotés
      L'info de la colonne R doit correspondre à la cellule B62 des onglets numérotés
      L'info de la colonne T doit correspondre à la cellule B63 des onglets numérotés
      L'info de la colonne W doit correspondre à la cellule B68 des onglets numérotés

      En temps normal des formules suffiraient mais 125 onglets et 125 lignes c pas possible... je voudrais une macro qui se réfère au numéro d'onglet 1, 2, 3, 4 etc et qui reporte en synthèse par rapport au numéro en colonne A les infos des références ci-dessus
      0
    2. Pierre1310 Messages postés 8854 Statut Membre 652
       
      Ok je regarde ce que je peux faire
      0
  3. Maurice
     
    Bonjour
    tu peux aussi faire comme ca
    Sub TestOnglet()
    Dim Onglet As String
    On Error Resume Next
    Sheets("SYNTHESE").Select
    Application.ScreenUpdating = False
       For F = 4 To Range("A" & Rows.Count).End(xlUp).Row
          Onglet = Range("A" & F).Value
             With Sheets(Onglet)
                Range("F" & F).Value = .Range("D20")
                Range("G" & F).Value = .Range("D25")
                Range("H" & F).Value = .Range("D30")
                Range("I" & F).Value = .Range("C36")
                Range("K" & F).Value = .Range("B53")
                Range("M" & F).Value = .Range("B54")
                Range("P" & F).Value = .Range("B61")
                Range("R" & F).Value = .Range("B62")
                Range("T" & F).Value = .Range("B63")
                Range("W" & F).Value = .Range("B68")
             End With
       Next
    Application.Goto [A4], True
    End Sub
    

    A+
    Maurice
    0
    1. en2mots Messages postés 170 Statut Membre
       
      ci
      0
    2. en2mots Messages postés 170 Statut Membre
       
      merci
      0
    3. en2mots Messages postés 170 Statut Membre
       
      Bonjour Maurice,

      Je dois changer le nom des onglets... non plus des chiffres (1,2,3,4...) mais des lettres (exemple : "aub lux", "aub moul", etc...) comment retarvailler la macro car ça ne marche pas si je change les noms des onglets et de la colonne de référence... Merci pour ton aide
      0
  4. Maurice
     
    Bonjour
    je veux bien regarder mes il me faut au mouin un modèle de ton fichier
    avec ta macro
    A+
    Maurice
    0
    1. en2mots Messages postés 170 Statut Membre
       
      https://www.cjoint.com/c/FFCnnRnc6qV

      Voilà le fichier. L'onglet qui devrait s'appeler "1" j'ai modifier et en fait à ce jour je ne sais pas quel noms seront donnés aux onglets mais ça peut être chiffres et lettres ou juste un mot ou deux

      Merci pour ton aide
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Maurice
     
    Bonjour
    a mettre dans un module
    Sub Recap()
    Dim Ws As Worksheet
    Dim Ligne As Integer
    Ligne = 4
        Application.ScreenUpdating = False
        For Each Ws In Worksheets
            If Ws.Name <> Feuil1.Name Then
    '  Ligne = CInt(Ws.Name) + 3
                With Feuil1
                    'L 'info de la colonne F doit correspondre à la cellule D20 des onglets numérotés
                    .Cells(Ligne, "F") = Ws.Range("D20")
                    'L 'info de la colonne G doit correspondre à la cellule D25 des onglets numérotés
                    .Cells(Ligne, "G") = Ws.Range("D25")
                    'L 'info de la colonne H doit correspondre à la cellule B30 des onglets numérotés
                    .Cells(Ligne, "H") = Ws.Range("B33")
                    'L 'info de la colonne I doit correspondre à la cellule C36 des onglets numérotés
                    .Cells(Ligne, "I") = Ws.Range("C36")
                    'L 'info de la colonne K doit correspondre à la cellule B53 des onglets numérotés
                    .Cells(Ligne, "K") = Ws.Range("B53")
                    'L 'info de la colonne M doit correspondre à la cellule B54 des onglets numérotés
                    .Cells(Ligne, "M") = Ws.Range("B54")
                    'L 'info de la colonne P doit correspondre à la cellule B61 des onglets numérotés
                    .Cells(Ligne, "P") = Ws.Range("B61")
                    'L 'info de la colonne R doit correspondre à la cellule B62 des onglets numérotés
                    .Cells(Ligne, "R") = Ws.Range("B62")
                    'L 'info de la colonne T doit correspondre à la cellule B63 des onglets numérotés
                    .Cells(Ligne, "T") = Ws.Range("B63")
                    'L 'info de la colonne W doit correspondre à la cellule B68 des onglets numérotés
                    .Cells(Ligne, "W") = Ws.Range("B68")
                    Ligne = Ligne + 1
                End With
            End If
        Next Ws
        Application.ScreenUpdating = True
    End Sub
    

    A+
    Maurice
    0
    1. en2mots Messages postés 170 Statut Membre
       
      Bonjour Maurice,

      Ça fonctionne très bine, merci beaucoup mais du coup tu peux m'expliquer ce que tu as fait comme modif. Ca me permettra de mieux comprendre et d'apprendre un truc. Merci
      0
  7. Maurice
     
    Bonjour

    j'ais juste changer la variable Ligne

    pour faire vraiment une recape voir ton fichier en retour

    http://www.cjoint.com/c/FFDpWqsLifK
    A+
    Maurice
    0