Imprimer des onglets à partir d'un tableau en page de garde
Fermé
Bonjour,
je travaille depuis quelques jours sur une macro:
j'ai un fichier excel 2010 contenant plusieurs onglets (je vais les appeler ici Onglet1/Onglet2/Onglet3...), mon premier onglet sert de page de garde pour constituer un dossier. Sur cette page j'y ai mis un tableau sous forme de formulaire, ce dernier s'ouvre lorsque clique sur un bouton. Je souhaite pouvoir inscrire le nombre de copie de chaque onglet que je souhaite imprimer et lancer ensuite l'impression. J'ai réussi à faire un code en mettant la référence de la cellule dans le code ( "copies=[ref]") mais le procédé s'arrête si la cellule est vide ou égale à zéro (j'ai le code d'erreur m'ordonnant d'indiquer un chiffre compris entre 1 et 37000 et des brouettes)
Auriez vous une solution ?
Merci d'avance
je travaille depuis quelques jours sur une macro:
j'ai un fichier excel 2010 contenant plusieurs onglets (je vais les appeler ici Onglet1/Onglet2/Onglet3...), mon premier onglet sert de page de garde pour constituer un dossier. Sur cette page j'y ai mis un tableau sous forme de formulaire, ce dernier s'ouvre lorsque clique sur un bouton. Je souhaite pouvoir inscrire le nombre de copie de chaque onglet que je souhaite imprimer et lancer ensuite l'impression. J'ai réussi à faire un code en mettant la référence de la cellule dans le code ( "copies=[ref]") mais le procédé s'arrête si la cellule est vide ou égale à zéro (j'ai le code d'erreur m'ordonnant d'indiquer un chiffre compris entre 1 et 37000 et des brouettes)
Auriez vous une solution ?
Merci d'avance
A voir également:
- Imprimer des onglets à partir d'un tableau en page de garde
- Comment imprimer un tableau excel sur une seule page - Guide
- Tableau croisé dynamique - Guide
- Tableau word - Guide
- Tableau ascii - Guide
- Supprimer une page word - Guide
4 réponses
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
2 mai 2014 à 14:45
2 mai 2014 à 14:45
Bonjour
Difficile à dire sans connaître ta macro
mais le problème doit pouvoir se contourner avec un IF qui teste si la valeur est > 0
lignes de macro avec sans doute une boucle For...
copies=ref
If copies >0 then
lignes de macro pour l'impression
End if
suite de la macro (dont le Next de la boucle ...
Cdlmnt
Difficile à dire sans connaître ta macro
mais le problème doit pouvoir se contourner avec un IF qui teste si la valeur est > 0
lignes de macro avec sans doute une boucle For...
copies=ref
If copies >0 then
lignes de macro pour l'impression
End if
suite de la macro (dont le Next de la boucle ...
Cdlmnt
bonjour merci pour le début de réponse
voici donc la macro:
note: la commande se faisant à partir de Onglet1, la référence est en case A1, les liaisons ne sont plus bonnes dès la deuxième ligne car A3 fait référence à l'onglet1 alors que j'ai activé l'onglet2 mais je règlerais cela plus tard...
voici donc la macro:
note: la commande se faisant à partir de Onglet1, la référence est en case A1, les liaisons ne sont plus bonnes dès la deuxième ligne car A3 fait référence à l'onglet1 alors que j'ai activé l'onglet2 mais je règlerais cela plus tard...
Private Sub CommandButton2_Click()
'
' ImpressionDossierFormulaire
'
'
Sheets("Onglet1").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=[A1], Collate:=True, IgnorePrintAreas:=False
Sheets("Onglet2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=[A3], Collate:=True, IgnorePrintAreas:=False
Sheets("Onglet3").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=[AB1], Collate:=True, _
IgnorePrintAreas:=False
Sheets("Onglet4").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=[A5], Collate:=True, _
IgnorePrintAreas:=False
Sheets("Onglet5").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=[A6], Collate:=True, _
IgnorePrintAreas:=False
Sheets("Onglet6").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=[A7], Collate:=True, _
IgnorePrintAreas:=False
Sheets("Onglet7").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=[A8], Collate:=True, _
IgnorePrintAreas:=False
End Sub
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
2 mai 2014 à 17:01
2 mai 2014 à 17:01
Essaie de modifier ta macro ainsi :
Sheets("Onglet1").Select
if range("A1").value >0 then ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=[A1], Collate:=True, IgnorePrintAreas:=False
idem pour les autres impressions
Cdlmnt
Sheets("Onglet1").Select
if range("A1").value >0 then ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=[A1], Collate:=True, IgnorePrintAreas:=False
idem pour les autres impressions
Cdlmnt
Bonjour
j'ai modifié la macro comme telle:
cela ne fonctionne pas, le procédé s'arrête toujours si la cellule A1 de la première ligne est nulle
j'ai modifié la macro comme telle:
Sheets("Onglet1").Select
If Range("A1").Value > 0 Then ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=[A1], Collate:=True, IgnorePrintAreas:=False
Sheets("Onglet2").Select
If Range("M1").Value > 0 Then ActiveWindow.SelectedSheets.PrintOut Copies:=[M1], Collate:=True, IgnorePrintAreas:=False
Sheets("Onglet3").Select
If Range("AB1").Value > 0 Then ActiveWindow.SelectedSheets.PrintOut Copies:=[AB1], Collate:=True, IgnorePrintAreas:=False
...
Sheets("Onglet15").Select
If Range("AB1").Value > 0 Then ActiveWindow.SelectedSheets.PrintOut Copies:=[A17], Collate:=True, _
IgnorePrintAreas:=False
End Sub
cela ne fonctionne pas, le procédé s'arrête toujours si la cellule A1 de la première ligne est nulle
via55
Messages postés
14512
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
18 janvier 2025
2 741
5 mai 2014 à 11:58
5 mai 2014 à 11:58
Bonjour,
Précise à chaque fois la feuille où trouver la valeur ;
If sheets(("Onglet1").Range("A1").Value > 0 Then ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=[A1], Collate:=True, IgnorePrintAreas:=False
Cdlmnt
Précise à chaque fois la feuille où trouver la valeur ;
If sheets(("Onglet1").Range("A1").Value > 0 Then ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=[A1], Collate:=True, IgnorePrintAreas:=False
Cdlmnt
Bonjour
Je voie un truc comme ca
Sub Test()
Set Sh = Sheets("Liste")
Sheets("Onglet1").Select
Nc = Val(Sh.Range("A1").Value)
If Nc > 0 Then
ActiveWindow.SelectedSheets.PrintOut Copies:=Nc, Collate:=True
End If
'
'
Set Sh = Nothing
End Sub
Je voie un truc comme ca
Sub Test()
Set Sh = Sheets("Liste")
Sheets("Onglet1").Select
Nc = Val(Sh.Range("A1").Value)
If Nc > 0 Then
ActiveWindow.SelectedSheets.PrintOut Copies:=Nc, Collate:=True
End If
'
'
Set Sh = Nothing
End Sub
Cette dernière solution fonctionne plutôt bien, il faut juste retirer le "End If" sinon ça passe pas.
Dernière petite chose: lorsque je lance l'impression, chaque onglet va s'afficher successivement. Est-il possible qu'une fois que je lance l'impression, il n'y ai pas ce défilement ? Je suppose qu'il faut modifier le "ActiveWindow" ?
Dernière petite chose: lorsque je lance l'impression, chaque onglet va s'afficher successivement. Est-il possible qu'une fois que je lance l'impression, il n'y ai pas ce défilement ? Je suppose qu'il faut modifier le "ActiveWindow" ?