Copier/Trier et Imprimer plusieurs pages avec une seule macr

Bonjour à tous,

J'aimerais pouvoir copier/coller/trier et imprimer des données qui sont modifiées à chaque semaine avec une seule macro. À mon niveau de connaissance, je dois créer une macro par semaine pour exécuter la tâche. (Voir fichier en pièce jointe)

Il y a un bouton à chaque semaine qui active la macro de semaine en semaine. Le tout débute par la Sem2.

Vous remarquerez que dans les macros que j'ai crées pour les Sem2, Sem3, Sem4, dans le fichier en pièce jointe, le premier tableau qui doit être copié/collé/Imprimer est situé dans la Sem2, alors que tous les autres tableaux sont situés dans la Sem1 (Semaine précédent).

J'aimerais pouvoir exécuter toutes ces opérations qu'avec une seule macro, semaine après semaine.

Exemple : Si j'active le bouton de la Sem3, la macro copie/colle/trie et imprime les données de la Sem3 et Sem2. Si j'active le bouton de la Sem6, la macro copie/colle/trie et imprime les données de la Sem6 et Sem5.... et ainsi de suite jusqu'à 34 semaines, selon les codes que j'ai crées en pièce jointe.

Le jeu comprend 34 semaines. Ce qui implique que je dois créer 34 macros. Est-ce possible de faire toutes ces opérations en une seule macro ?

21classeur1v1.xlsm (280.40 Ko)

Merci beaucoup de votre aide.

Bonjour Golfeur01

Voici ton fichier avec le code qui va bien (normalement)

A+

Bonjour BrunoM45,

Merci beaucoup pour ta réponse rapide.

Le code oubli une tâche lors de son activation. Il ne copie ni trie les données qui se trouve en BE2 de la feuille "Donnees" ce qui fait qu'elles n'apparaissent pas sur la feuille "Stats_equipe" lors de l'impression. Je ne comprend pas pourquoi.

Tout le reste fonctionne parfaitement après une petite correction au code que je me suis permis de faire.

L'impression des "Stats_equipe" ainsi que celle des "Billets_Capitaines" ne fonctionnait pas car les deux codes d'impression était précédés d'un simple guillemet, ce qui les mettaient en texte. J'ai enlevé le guillemet et le tout fonctionne.

Merci encore pour ton aide.

Bonjour BrunoM45,

Je viens de réaliser que j'ai un problème plus gros que je le pensais. Je m'explique.

Un de tes collègues m'a suggéré de changer la nomination de mes semaines de Sem.01, Sem.02...à Sem1, Sem2..... Il semble que plus les noms sont simples, ça diminue les causes de problème. Je n'en doute pas une seule seconde.

C'est ce que j'ai fait dans le fichier que je t'ai envoyé. Mon problème est que dans mon fichier principale, les semaines se nomment Sem.01, Sem.02, Sem.03....Sem.10, Sem.11....Sem.28

J'ai tenté de changer le nom des semaines dans mon fichier principale sans succès. Les macros existantes sont conçues pour le nom existant et j'ai beau modifier les codes, rien n'y fait. Ces macros sont très volumineuses.

Comme il n'est pas approprié de demander à un intervenant de changer le travail d'un autre intervenant, puis-je te demander d'adapter ton code au nom des semaines (Sem.01, Sem.02.... Sem.10, Sem.11...Sem.28) afin que lorsque je vais l'incérer dans mon fichier principale il fonctionnera sans problème. J'ai tenté de modifier le nom des semaines dans ton code, sans succès. Mes connaissances étant plutôt limitées en VBA.

Je t'envoie le fichier avec le nom des semaines, modifié.

Je m'excuse pour le travail supplémentaire. En espérant que ce ne soit pas trop compliqué.

Merci et bonne journée.

bonsoir golfeur01, brunoM45 et le forum

as tu essayer la recherche en vba pour remplacer tes noms, quand tu es dans vba tu sélectionne un nom et tu fait "CTRL +F pour acceder a la recherche et si tu clique sur "remplacer " un 2ème espace ce créer ou tu peux écrire le nom qui doit remplacer celui qui est sélectionner et aussi tu peux choisir la procédure , le module ou le projet si tu sais ou ils se trouvent, si éparpillé dans tous les codes où pas

après tu peux cliquer sur remplacer et il remplacera un par un et si c'est remplacer tout alors il fera tout en même temps et si tu as plusieurs noms a changer c'est bisrepetita

voila comment se présente la recherche

rechercher

Bonjour grisan29,

Je te remercie pour la suggestion. Je connais bien la procédure pour remplacer un nom ou autres données dans la macro. Mon problème n'est pas de remplacer une grande quantité de noms mais plutôt de remplacer le mot par le bon mot (Ex: Remplacer "Sem" par "Sem." Après avoir renommé mes feuilles Sem1, Sem2.... par Sem.01, Sem.02.... je remplace le mot "Sem", dans le code, par une autre version comme "Sem." ou "Sem.0", le code cesse de fonctionner. J'ai essayé toutes les façons de renommer "Sem" sans succès.

Dès que j'essaie l'inverse dans mon fichier principale et renomme mes semaines Sem.01...Sem.02....par Sem1, Sem2..... les codes déjà inscrits dans ce fichier cessent de fonctionner. Comme je l'ai mentionné dans mon message précédent, mes connaissances en VBA sont très limitées.

Merci quand même pour la suggestion. Le fait que tu es pris le temps de regarder le fichier est très apprécié.

Bonne journée

bonsoir golfeur01 et le forum

j'ai indenté ton code et ai un bug pour un onglet apparemment absent

Sub CopierTrierImprimer()
    Dim Sht As Worksheet, ShtPrec As Worksheet, SemPrec As Integer
'Application.ScreenUpdating = False
' Définir la variable objet pour la feuille active
    Set Sht = ActiveSheet
' Calculer le numéro de semaine précédent
    SemPrec = Val(Mid(Sht.Name, 4, 2)) - 1
' Définir la variable objet pour la semaine précédente
    Set ShtPrec = Sheets("Sem" & SemPrec) <========================ici n'appartient pas a la sélection erreur 9
' Copier et imprimer les valeurs de la semaine Active
    Sht.Range("BG175:BO590").Copy
    With Sheets("Feuilles_pointage")
        .Range("A1").PasteSpecial Paste:=xlPasteValues
        .PrintOut Copies:=1
    End With
' Copier et imprimer les valeurs de la semaine précédente
    ShtPrec.Range("BQ175:BZ234").Copy
    With Sheets("Stats_individuelles")
        .Range("A1").PasteSpecial Paste:=xlPasteValues
        .PrintOut Copies:=1
    End With
    ShtPrec.Range("BE2:BH18").Copy
    ShtPrec.Range("BI2").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
' Trier les valeurs
    With ShtPrec.Sort
        With .SortFields
            .Clear
            .Add Key:=Range("BL2:BL18"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        End With
        .SetRange Range("BJ2:BL18")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    With ShtPrec.Sort
        With .SortFields
            .Clear
            .Add Key:=Range("CR178:CR193"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        End With
        .SetRange Range("CD177:CS193")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
' Copier et imprimer les valeurs triées STATS
    ShtPrec.Range("CD175:CS222").Copy
    With Sheets("Stats_equipe")
        .Range("B1").PasteSpecial Paste:=xlPasteValues
'.PrintOut Copies:=1
    End With
' Copier et imprimer les valeurs triées BILLET
    ShtPrec.Range("CU175:CY423").Copy
    With Sheets("Billets_Capitaines")
        .Range("A1").PasteSpecial Paste:=xlPasteValues
'.PrintOut Copies:=1
    End With
End Sub

Bonsoir grisan29,

Merci pour ton aide.

Je dois te dire que le code ne m'appartient pas mais a été créé par BrunoM45. Je n'ai pas les connaissances nécessaires pour changer le code d'une façon significative.

J'attend une réponse de BrunoM45 afin de savoir s'il peut modifier son code pour que je puisse l'intégrer dans mon fichier principale.

Encore merci et bonne soirée

Bonjour à tous, Golfeur01

golfeur01 a écrit :

Bonjour BrunoM45,

Le code oubli une tâche lors de son activation. Il ne copie ni trie les données qui se trouve en BE2 de la feuille "Donnees" ce qui fait qu'elles n'apparaissent pas sur la feuille "Stats_equipe" lors de l'impression. Je ne comprend pas pourquoi.

Parce que dans ton code initial, cette tâche n'était pas effectuée, j'ai juste optimisé ton code initial

golfeur01 a écrit :

Mon problème n'est pas de remplacer une grande quantité de noms mais plutôt de remplacer le mot par le bon mot (Ex: Remplacer "Sem" par "Sem." Après avoir renommé mes feuilles Sem1, Sem2.... par Sem.01, Sem.02.... je remplace le mot "Sem", dans le code, par une autre version comme "Sem." ou "Sem.0", le code cesse de fonctionner. J'ai essayé toutes les façons de renommer "Sem" sans succès.

Dans mon code initial, je partais du principe que le nom des feuilles n'allait pas être changé

Je récupérai donc les chiffres de la semaine à partir du 4ème caractère

Mid(ShtName,4,2)

Pour le nom de la feuille de la semaine précédente, j'ai donc créé une fonction qui permet de récupérer la valeur numérique ou qu'elle se trouve

J'ai également modifié la ligne pour la copie des valeurs de la feuille donnée, le reste est juste un petit ajustement de ta part

A+

Bonjour BrunoM45,

Merci pour ta réponse.

Un petit problème. Les données en BE2 de la feuille "Données" se copient/collent en BI2 de la feuille "Sem.01" plutôt que de se copier en BI2 de la feuille "Données".

Le reste du code fonctionne parfaitement. Très astucieux l'ajout de la fonction.

Merci beaucoup.

Bonjour golfeur01,

golfeur01 a écrit :

Bonjour BrunoM45,

Merci pour ta réponse.

Un petit problème. Les données en BE2 de la feuille "Données" se copient/collent en BI2 de la feuille "Sem.01" plutôt que de se copier en BI2 de la feuille "Données".

Le reste du code fonctionne parfaitement. Très astucieux l'ajout de la fonction.

Merci beaucoup.

Je pense que le code n'est vraiment pas compliqué à analyser

La modification est simple, il suffit de lire

Bonjour BrunoM45,

Je crois que tu me connais mieux que moi même. Après plusieurs tests j'ai réussi à faire fonctionner le tout.

Merci de m'avoir obligé à utiliser mes méninges plus que ce que je me croyais capable . Ça devrais me servir pour mes prochaines analyses.

Merci encore et bonne journée.

Je ferme le dossier.

Rechercher des sujets similaires à "copier trier imprimer pages seule macr"