Macro VBA. Impression de plusieurs feuilles d'un classeur en fonction d'une autre feuille

Christine15

XLDnaute Nouveau
Bonjour,

J'espère que vous allez bien. Je me présente je m'appelle Christine et je travaille au sein d'un service QSE.


Dans un fichier Excel je cherche à effectuer plusieurs impressions automatique d'une feuille, en fonction du nombre de lignes remplies d'un tableau d'une autre feuille du même classeur, avec un bouton d'impression (que j'ai déjà créé sur la feuille 'Nom participant".

Je vous joint le fichier pour comprendre plus facilement.

C'est à dire que je souhaiterais qu'il y ait autant d'impression de la feuille "Appréciation de formation" que de personne participant à la formation dans la feuille "Nom participant".

Pourriez-vous m'aider svp ?

Je vous remercie.

Bonne journée à vous
 

Pièces jointes

  • Support de formation test.xlsm
    497.3 KB · Affichages: 4
Solution
Bonjour,

Le nombre de participant étant en A16 de la feuille "Nom participant" :
Sans sélection ni activation de la feuille
VB:
Sub ImpressionAppréciation()
' Travailler à partir de ce classeur, sans activation de la feuille
    With ThisWorkbook
        .Sheets("Appréciation de formation").PrintOut _
                Copies:=.Sheets("Nom participant").Range("A16"), _
                Collate:=True, _
                IgnorePrintAreas:=False
    End With
End Sub
Ce modèle, avec la structure With...EndWith, s'assure qu'on travaille bien à partir du classeur qui contient la macro (ThisWorkbook) et que ce sont de ses feuilles qu'il s'agit.
On ne sait jamais à partir de quel classeur sera lancée une macro.
Si vous travaillez sur plusieurs...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Le nombre de participant étant en A16 de la feuille "Nom participant" :
Sans sélection ni activation de la feuille
VB:
Sub ImpressionAppréciation()
' Travailler à partir de ce classeur, sans activation de la feuille
    With ThisWorkbook
        .Sheets("Appréciation de formation").PrintOut _
                Copies:=.Sheets("Nom participant").Range("A16"), _
                Collate:=True, _
                IgnorePrintAreas:=False
    End With
End Sub
Ce modèle, avec la structure With...EndWith, s'assure qu'on travaille bien à partir du classeur qui contient la macro (ThisWorkbook) et que ce sont de ses feuilles qu'il s'agit.
On ne sait jamais à partir de quel classeur sera lancée une macro.
Si vous travaillez sur plusieurs classeurs ouverts, ne pas faire référence au classeur (comme dans les modèles de l'enregistreur de macro) peut poser des problèmes.

Sur le modèle de vos autre macros d'impression :
Code:
Sub ImpressionAppréciation()
'
' ImpressionConvention Macro
'
Dim nbParticipants As Integer

' Récupération du nombre de participants.
nbParticipants = Sheets("Nom participant").Range("A16")

    Sheets("Convention").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=nbParticipants, Collate:=True, _
        IgnorePrintAreas:=False
End Sub
 

Christine15

XLDnaute Nouveau
Bonjour,

Le nombre de participant étant en A16 de la feuille "Nom participant" :
Sans sélection ni activation de la feuille
VB:
Sub ImpressionAppréciation()
' Travailler à partir de ce classeur, sans activation de la feuille
    With ThisWorkbook
        .Sheets("Appréciation de formation").PrintOut _
                Copies:=.Sheets("Nom participant").Range("A16"), _
                Collate:=True, _
                IgnorePrintAreas:=False
    End With
End Sub
Ce modèle, avec la structure With...EndWith, s'assure qu'on travaille bien à partir du classeur qui contient la macro (ThisWorkbook) et que ce sont de ses feuilles qu'il s'agit.
On ne sait jamais à partir de quel classeur sera lancée une macro.
Si vous travaillez sur plusieurs classeurs ouverts, ne pas faire référence au classeur (comme dans les modèles de l'enregistreur de macro) peut poser des problèmes.

Sur le modèle de vos autre macros d'impression :
Code:
Sub ImpressionAppréciation()
'
' ImpressionConvention Macro
'
Dim nbParticipants As Integer

' Récupération du nombre de participants.
nbParticipants = Sheets("Nom participant").Range("A16")

    Sheets("Convention").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=nbParticipants, Collate:=True, _
        IgnorePrintAreas:=False
End Sub

Bonjour Hasco,

Je vous remercie de votre retour.

Alors je travailles qu'avec un seul classeur. Du coup j'utilise le premier VB.
Par contre je ne comprends pas ce que vous voulez dire par "Sans sélection ni activation de la feuille" svp
 

Christine15

XLDnaute Nouveau
Lorsque je mets le VB cela me mets :

1682516502027.png
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Alors, sans sélection ni activation de la feuille cela veut dire que si la macro est lancée (par bouton ou autre) à partir de n'importe quelle feuille, elle lancera l'impression sans que la feuille "Appréciation de formation" ne soit sélectionnée ou activée, ce que font vos autres macros.

Lorsque je mets le VB cela me mets :

1682516502027.png
C'est normal.
Le point rouge foncé dans la marge grise et la ligne en face est ce qu'on appel un point d'arrêt, qui posé avant le lancement de la macro, et parfois par inadvertance par appui sur F9, force celle-ci à s'arrêter sur la ligne dans laquelle se trouve le curseur.
Comme la ligne fait partie d'un bloc d'instruction "with...end with", c'est tout le bloc qui est sélectionné et surligné en jaune. Il indique la(les) lignes en cours d'exécution.
Lorsque c'est comme ça, vous pouvez passer à la ligne suivante par F8 ou continuer la macro normalement par F5 ou l'arrêter complètement en cliquant sur le petit carré bleu de la barre d'outils.
Cela permet aux développeurs de tester leurs programmes et variables entre autre.

Cordialement
 
Dernière édition:

Christine15

XLDnaute Nouveau
Re,

Alors, sans sélection ni activation de la feuille cela veut dire que si la macro est lancée (par bouton ou autre) à partir de n'importe quelle feuille, elle lancera l'impression sans que la feuille "Appréciation de formation" ne soit sélectionnée ou activée, ce que font vos autres macros.


C'est normal.
Le point rouge foncé dans la marge grise et la ligne en face est ce qu'on appel un point d'arrêt, qui posé avant le lancement de la macro, et parfois par inadvertance par appui sur F9, force celle-ci à s'arrêter sur la ligne dans laquelle se trouve le curseur.
Comme la ligne fait partie d'un bloc d'instruction "with...end with", c'est tout le bloc qui est sélectionné et surligné en jaune. Il indique la(les) lignes en cours d'exécution.
Lorsque c'est comme ça, vous pouvez passer à la ligne suivante par F8 ou continuer la macro normalement par F5 ou l'arrêter complètement en cliquant sur le petit carré bleu de la barre d'outils.
Cela permet aux développeurs de tester leurs programmes et variables entre autre.

Cordialement

Je suis désolée mais je n'arrive toujours pas à exécuter cette macro.....

1682586589802.png
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,
Je suis désolée mais je n'arrive toujours pas à exécuter cette macro.....


Euh ! sur votre classeur, moi non plus ! :)
Le message vous signale qu'un objet n'existe pas.
Avez-vous vérifié l'exactitude des noms, au caractère près ?
Vous avez une espace traînante en fin de nom de feuille "Appréciation de formation "
Supprimez déjà cette espace et vous verrez
 

Hasco

XLDnaute Barbatruc
Repose en paix
Depuis que ce système a été mis en place, non seulement il n'a rien apporté mais en plus il a fait se dégradé rapidement l'ambiance du site où beaucoup d'intervenants ce sont mis en chasse de bons points, préférant facilité et quantité que qualité.
Et nombreux demandeurs semblent penser que plus la réponse est complexe et incompréhensible meilleur elle est mélangeant eux aussi quantité et complexité avec qualité. Il ne se rendent pas compte la plupart du temps qu'ils s'enchaînent à des soit-disants "sachants" et préfèrent ça plutôt qu'apprendre.

Un exemple d'aujourd'hui :
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Perso ce qui m’énerve se sont les demandeurs :

-Qui mettent une image au lieu du fichier et quand on leur demande le fichier ils répondent c'est confidentiel.
-Qui posent une question et ne viennent jamais voir la réponse donnée.
-Qui posent une question incompréhensible sauf pour eux !
......

@Phil69970
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 167
dernier inscrit
miriame