Reporter des informations d'un onglet sur un autre onglet

Bonsoir,

Hier, GGautier, Xorsankukai et Gmb m'ont filé un sacré coup de main pour construire une macro qui permet de dupliquer des onglets.

Ils m'ont donné plusieurs exemples et j'ai construit ma macro à partir de ce fichier :

155dupliquer.xlsm (30.80 Ko)

Si on prend la page de synthèse, il y a une macro qu permet de reporter tous les noms à la suite avec le score total de chaque élève (tableau de gauche).

Moi, je voudrai savoir s'il est possible de reporter les noms dans une case précise ?

Dans mon exemple, il y a 2 élèves : pierre et paul et je souhaite pouvoir reprendre ces 2 noms en case E6 et E11...

Si je fais la même chose pour 4 élèves, les noms seront reportés en E6, E11, E16 et E21 et ainsi de suite.

Je ne sais pas si c'est très clair mais j'ai mis un tableau dans l'onglet "synthèse" en rouge...

Merci pour votre aide

Petitejiji

Bonsoir Petitejiji,

Un essai....

Sub listeonglet()   'noms des onglets en colonne A, formule en colonne B
Dim i As Integer

     Sheets("Synthèse").Activate
     Range("A6:A" & Rows.Count).ClearContents
     Range("E6:E" & Rows.Count).ClearContents

     Range("A6").Select
    For i = 4 To Sheets.Count
        ActiveCell.Value = Sheets(i).Name
        ActiveCell.Offset(1, 0).Select
    Next i

    Range("E6").Select
     For i = 4 To Sheets.Count
        ActiveCell.Value = Sheets(i).Name
        ActiveCell.Offset(5, 0).Select
    Next i
End Sub

Mais tu vas avoir un souci si tu veux utiliser des formules en colonne F,

35dupliquer-2.xlsm (30.73 Ko)

Bonne soirée,

Salut Xorsankukai,

Merci pour ta réponse hyper rapide... oui en effet, tu as raison, je ne vais pas pouvoir reporter mes formules... mais en tout cas, j'ai testé et ta macro fonctionne super bien

C'est peut-être ma manière de résoudre mon problème qui n'est pas la bonne....

En fait, une fois que les onglets sont crées, il faudrait que je puisse faire une sorte de synthèse (nom élève et ses scores) mais peut-être que la solution ne passe pas par une macro? Mais comme je ne connais pas à l'avance le nombre d'onglet que je vais créer, je ne peux pas faire un report pure et simple de case....

32dupliquer.xlsm (29.48 Ko)

PS : juste une question (une autre) : quand je crée des onglets, il y a une boîte de message vide qui s'affiche. C'est possible d'avoir un message du type "confirmez-vous la création de X onglets?"

Merci encore

Petitejiji

Re,

C'est peut-être ma manière de résoudre mon problème qui n'est pas la bonne...

Je t'invite à lire ce sujet qui traite d'un cas similaire, j'ai tenté de le traiter par VBA mais notre ami Bruno45 a démontré qu'on pouvait le faire par formule....

https://forum.excel-pratique.com/viewtopic.php?f=2&t=121857

Bonne soirée,

Bonjour,

Nouvel essai:

  • on crée les onglets par macro
  • on traite le reste par formules
32dupliquer4.xlsm (32.04 Ko)

Cordialement,

Salut Xorsankukai,

Merci beaucoup pour ton aide.

Je vais effectivement reprendre la formule de Bruno45. C'est plus simple pour moi et elle fonctionne très bien.

Et d'ailleurs, je te remercie pour le dernier exemple.

Alors j'ai repris ton code, comme ça :

Sub listeonglet()   'noms des onglets en colonne A, formule en colonne B
Dim i As Integer

     Sheets("feuil3").Activate
     Range("A9:A" & Rows.Count).ClearContents

     Range("A9").Select
    For i = 7 To Sheets.Count
        ActiveCell.Value = Sheets(i).Name
        ActiveCell.Offset(5, 0).Select
    Next i

End Sub

Avec ce code, toutes les 5 lignes, j'ai un nouveau nom qui apparaît (c'est ce que j'avais demandé !..... ). Mais comme je vais utiliser les formules de Bruno45, c'est possible d'avoir 5 fois le premier nom, puis 5 fois le deuxième nom... et ainsi de suite ?

En effet, je suis coincée pour la présentation de la première colonne. Il me faudrait plutôt une présentation de ce type :

capture

Merci encore et bonne journée

Petitejiji

Bonjour Petitejiji,

Essaie ainsi:

 Range("E6").Select
     For i = 4 To Sheets.Count
        ActiveCell.Value = Sheets(i).Name
        ActiveCell.Offset(1, 0) = Sheets(i).Name
        ActiveCell.Offset(2, 0) = Sheets(i).Name
        ActiveCell.Offset(3, 0) = Sheets(i).Name
        ActiveCell.Offset(4, 0) = Sheets(i).Name
        ActiveCell.Offset(5, 0).Select
    Next i
10dupliquer.xlsm (28.21 Ko)

Cordialement,

Salut Xorsankukai,

Ça marche du tonnerre !!! Merci beaucoup

Je peux te demander un dernier truc ?

C'est possible sur la base du même code de faire en sorte qu'on saute une ligne entre chaque nom du type :

capture

Bon là, c'est juste de la présentation.... mais si c'est possible, ce serait vraiment cool !!

Petitejiji

Re,

faire en sorte qu'on saute une ligne entre chaque nom du type

Range("E6").Select
     For i = 4 To Sheets.Count
        ActiveCell.Value = Sheets(i).Name
        ActiveCell.Offset(1, 0) = Sheets(i).Name
        ActiveCell.Offset(2, 0) = Sheets(i).Name
        ActiveCell.Offset(3, 0) = Sheets(i).Name
        ActiveCell.Offset(4, 0) = Sheets(i).Name
        ActiveCell.Offset(6, 0).Select
    Next i
24dupliquerv5.xlsm (24.88 Ko)

Cordialement,

Oh là là, Xorsankukai, tu es mon héroooooooooooooo

Merci beaucoup pour ton aide qui a été vraiment super efficace ainsi qu'à GGautier, Gmb sans oublier Bruno45 (pour son précédent post sur la même thématique).

Vous êtes super

Bon week-end à tous

Petitejiji

Rechercher des sujets similaires à "reporter informations onglet"