Répéter un copier/coller spécial grâce à une macro ?[Excel 2007]
derek
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Alors voilà mon problème maintes et maintes fois abordé mais les réponses que j'ai consultées ne m'aident pas à y voir plus clair...
J'ai:
-un fichier excel avec 31 onglets (plusieurs à vrai dire, beaucoup même)
-tous les onglets ont la même structure
-je cherche à"copier/coller transposer" la section B5:AB17 de chaque onglet dans un onglet récapitulatif , appelons le "total", les unes à la suite des autre, de haut en bas en commençant par la cellule G2 de l'onglet "total"
Je ne maîtrise pas du tout le VBA évidemment, même si j'ai très envie d'apprendre. Du coup j'ai tenté de créer une macro en enregistrant l'action pour le premier onglet. Mais biensur je ne parviens pas à comprendre comment on peut automatiser ça sur plusieurs onglets, donc elle ne me sert strictement à rien...
Je serait extrêmement reconnaissant à la personne qui m'offrirait ma première macro! et j'espère bien qu'elle me permettra de percer quelques secrets de cet outil magique!
Merci d'avance.
Alors voilà mon problème maintes et maintes fois abordé mais les réponses que j'ai consultées ne m'aident pas à y voir plus clair...
J'ai:
-un fichier excel avec 31 onglets (plusieurs à vrai dire, beaucoup même)
-tous les onglets ont la même structure
-je cherche à"copier/coller transposer" la section B5:AB17 de chaque onglet dans un onglet récapitulatif , appelons le "total", les unes à la suite des autre, de haut en bas en commençant par la cellule G2 de l'onglet "total"
Je ne maîtrise pas du tout le VBA évidemment, même si j'ai très envie d'apprendre. Du coup j'ai tenté de créer une macro en enregistrant l'action pour le premier onglet. Mais biensur je ne parviens pas à comprendre comment on peut automatiser ça sur plusieurs onglets, donc elle ne me sert strictement à rien...
Je serait extrêmement reconnaissant à la personne qui m'offrirait ma première macro! et j'espère bien qu'elle me permettra de percer quelques secrets de cet outil magique!
Merci d'avance.
2 réponses
-
Bonsoir,
un exemple :Sub Total() Dim sh As Worksheet, shT As Worksheet Dim derlig As Long Set shT = Worksheets("Total") Application.ScreenUpdating = False For Each sh In Worksheets If sh.Name <> "Total" Then derlig = Application.Max(2, shT.Cells(Rows.Count, 7).End(xlUp).Row + 1) sh.[B5:AB17].Copy Sheets("Total").Cells(derlig, 7).PasteSpecial Paste:=xlPasteValues, Transpose:=True End If Next sh shT.[G2].Select Application.ScreenUpdating = True End Sub
Pour moi le code parle de lui-même, je ne l'ai pas commenté. N'hésite pas à utiliser F1 sur les fonctions qui ne te parlent pas.
https://www.cjoint.com/?DBvxWqZOIj8
eric
-
Merci!
Bon même si j'arrive pas à comprendre 90% du code, j'ai trifouillé le "Row + 1)" en "Row + 5)" car sinon il me manquait à chaque fois les 4 dernières lignes (sans que je comprenne pour autant exactement ce que ça signifie malheureusement...)
Mais merci beaucoup!-
Bonjour,
Le vba ne se fait pas au hasard.
shT.Cells(Rows.Count, 7).End(xlUp).Row + 1 : dernière ligne utilisée de la colonne G (la 7) +1. C'est donc la 1ère ligne libre où écrire le bloc suivant.
Si la colonne G peut ne pas être complète il fallait le dire. Dans ce cas utilise une colonne que tu sais toujours complète.
eric -
C'est pas la colonne G qui est incomplète, ce sont les tableaux qui une fois transposés se collent bien à la suite les uns des autres mais en omettant à chaque fois les 4 dernières lignes avec Row +1, problème réglé avec Row+5, même si la macro commence le collage sur G6 au lieu de G2.
Et oui j'ai bien compris que le VBA ne se fait pas au hasard... -
-