Copie dans une case en fonction du nom de l'onglet

Bonjour à tous,

Je viens à vous, telle la brebis égarée dans excel. J'aimerai faire la copie de certaines lignes d'onglets dans un onglet de synthèse et que les lignes copiées le soient sur la ligne correspondant au nom de l'onglet.

J'ai des onglets par année et je voudrais faire le tableau de toutes les années.

Je vous mets en copie un exemple sur une page excel.

Je pense avoir compris que la case B3 (et F3, J3, N3...) est celle que je dois changer par une fonction reconnaissant le nom de l'onglet d'origine (en l’occurrence 1990) pour sélectionner la colonne B, ligne 1990 et y copier le contenu.

Y-a-t-il une bonne âme pour me suggérer une solution svp?

Voici ce que la macro a généré (il y a du déchet en code mais du moment que ça fonctionne):

Sub Macro4()

'

' Macro4 Macro

'

' Touche de raccourci du clavier: Ctrl+q

'

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Range("B35:E35").Select

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("B3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B36:E36").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("F3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B37:E37").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("J3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B38:E38").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("N3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B39:E39").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("R3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B40:E40").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("V3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollColumn = 2

ActiveWindow.ScrollColumn = 3

ActiveWindow.ScrollColumn = 4

ActiveWindow.ScrollColumn = 5

ActiveWindow.ScrollColumn = 6

ActiveWindow.ScrollColumn = 7

ActiveWindow.ScrollColumn = 8

ActiveWindow.ScrollColumn = 9

ActiveWindow.ScrollColumn = 10

ActiveWindow.ScrollColumn = 11

ActiveWindow.ScrollColumn = 12

ActiveWindow.ScrollColumn = 13

ActiveWindow.ScrollColumn = 14

ActiveWindow.ScrollColumn = 15

ActiveWindow.ScrollColumn = 16

ActiveWindow.ScrollColumn = 17

ActiveWindow.ScrollColumn = 18

ActiveWindow.ScrollColumn = 19

ActiveWindow.ScrollColumn = 20

ActiveWindow.ScrollColumn = 21

ActiveWindow.ScrollColumn = 22

ActiveWindow.ScrollColumn = 23

ActiveWindow.ScrollColumn = 24

ActiveWindow.ScrollColumn = 25

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B41:E41").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("Z3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B42:E42").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("AD3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B43:E43").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("AH3").Select

ActiveSheet.Paste

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B44:E44").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("AL3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B45:E45").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("AP3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B46:E46").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("AT3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollColumn = 26

ActiveWindow.ScrollColumn = 27

ActiveWindow.ScrollColumn = 28

ActiveWindow.ScrollColumn = 29

ActiveWindow.ScrollColumn = 30

ActiveWindow.ScrollColumn = 31

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B47:E47").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Range("K54").Select

Sheets("Feuil1").Select

Range("AX3").Select

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

ActiveWindow.ScrollWorkbookTabs Position:=xlFirst

Sheets("1990").Select

Range("B49:E49").Select

Application.CutCopyMode = False

Selection.Copy

ActiveWindow.ScrollWorkbookTabs Position:=xlLast

Sheets("Feuil1").Select

Range("BB3").Select

ActiveWindow.SmallScroll ToRight:=5

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

End Sub

6exemple.xlsx (11.43 Ko)

Bonjour et bienvenue,

Mangon a écrit :

Je viens à vous, telle la brebis égarée dans excel

alors méfie-toi du grand méchant loup qui se travestit souvent en "macro-usine-à-gaz" (le déguisement en mère-grand a fait long feu, il faut bien qu'il se renouvelle un peu!)

Pour autant que je comprenne ce que fait ton code et que les données en rouge correspondent à ce qui figure dans l'onglet "1990" (mais alors, tant qu'à faire, tu aurais pu laisser l'onglet en question!?) tu peux obtenir le même résultat -me semble-t-il- à l'aide de la fonction INDIRECT

Merci de ta réponse U.Milité!

Effectivement la fonction indirect fait le job. Je n'ai pas réussi à bien la coupler avec la fonction colonne pour bien incrémenter mais je m'en suis sorti! Merci encore!!

Bonjour,

Mangon a écrit :

Je n'ai pas réussi à bien la coupler avec la fonction colonne pour bien incrémenter

Personne n'a dit que tu étais condamné à t'en sortir sans aide ... avant de proposer une solution, je voulais m'assurer que tu n'étais pas opposé à une solution par formule.

Si tu repasses par ici, deux propositions en annexe:

  • la première (ligne en rouge pâle) fonctionne même si les régions en ligne 1 sont dans un ordre différent de celles en colonne A de la feuille "1990"
  • la seconde (dans les tons verts) part du principe que l'ordre est identique ... la formule est donc un poil plus simple et plus courte
19exemple-mangon.xlsx (13.73 Ko)

Merci à nouveau!!

J'ai utilisé la formule comme ça en remplaçant la ligne de référence pour chaque région:

=INDIRECT($A27&"!b35")

Les fonctions que tu utilises me sont inconnues, il faudra que je me penche dessus, je remarque qu'en les connaissant c'est super rapide d'organiser les données!

Merci encore de tes lumières!!

Rechercher des sujets similaires à "copie case fonction nom onglet"