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
Bonjour et bienvenue,
Mangon a écrit :Je viens à vous, telle la brebis égarée dans excel
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,
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.Mangon a écrit :Je n'ai pas réussi à bien la coupler avec la fonction colonne pour bien incrémenter
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
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!!