Répéter un copier/coller spécial grâce à une macro ?[Excel 2007]

Fermé
derek - 21 févr. 2014 à 23:12
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 22 févr. 2014 à 16:21
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.


A voir également:

2 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
21 févr. 2014 à 23:50
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
0
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!
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
Modifié par eriiic le 22/02/2014 à 10:05
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
0
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...
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
22 févr. 2014 à 16:21
Extrêmement bizarre...
B5:AB17, comme demandé, est bien copié et transposé. Le bloc suivant doit se coller à la 1ère ligne vide qui est shT.Cells(Rows.Count, 7).End(xlUp).Row + 1 et pas autre chose dans la mesure où cette colonne 7 est complète.
Bref, je n'insiste pas plus.
eric
0