Imprimer Sélection sur plusieurs feuilles.
Résolu/Fermé
Nai
Messages postés
707
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
11 octobre 2024
-
20 mars 2015 à 10:48
Nai Messages postés 707 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 octobre 2024 - 12 mai 2015 à 13:27
Nai Messages postés 707 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 octobre 2024 - 12 mai 2015 à 13:27
A voir également:
- Sélectionner plusieurs feuilles excel vba
- Liste déroulante excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Si et excel - Guide
- Fusionner plusieurs feuilles excel en une seule - Guide
- Feuille de pointage excel - Télécharger - Tableur
7 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
22 mars 2015 à 16:25
22 mars 2015 à 16:25
Voir ceci pour imprimer directement sans prévisualisation:
https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-A-19
https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-A-19
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
23 mars 2015 à 08:09
23 mars 2015 à 08:09
Si la 1ère macro fonctionne, pourquoi ne pas mettre cela au début de la macro avant la boucle. Elle ne s'affichera qu'une fois seulement et l'utilisateur pourra faire son choix:
Sheets("nom de la 1ère feuille").Range("A34:K91").Select Application.Dialogs(xlDialogPrint).Show ActiveWindow.Selection.PrintPreview
Nai
Messages postés
707
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
11 octobre 2024
55
24 avril 2015 à 19:34
24 avril 2015 à 19:34
Merci et désolé pour le temps de réaction ^^
La macro donne donc ceci :
Ça fonctionne relativement bien ! :D
Les seuls hics, mais je chipote un soupçon :
- La macro a pour effet de lancer deux impressions distinctes (mais qu'importe).
- Par contre, je n'ai l'aperçu que de la première feuille (finalement, ça importe moins que je ne le pensais)
- Plus important, est-ce qu'il est possible de ne pas nommer la feuille par son nom mais par son chiffre (en l'occurrence, "Feuil2" et non "Machin") ?
La macro donne donc ceci :
Sub print_p1() Sheets("Accueil").Range("A34:K91").Select Application.Dialogs(xlDialogPrint).Show ActiveWindow.Selection.PrintPreview Dim Feuille For Each Feuille In ActiveWorkbook.Sheets If Feuille.Index > 1 And Feuille.Index < 16 Then Feuille.Select Range("A34:K91").Select End If Next Sheets(Array((2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14), (15), (16))).PrintOut Copies:=1, _ ActivePrinter:="", _ Collate:=True End Sub
Ça fonctionne relativement bien ! :D
Les seuls hics, mais je chipote un soupçon :
- La macro a pour effet de lancer deux impressions distinctes (mais qu'importe).
- Par contre, je n'ai l'aperçu que de la première feuille (finalement, ça importe moins que je ne le pensais)
- Plus important, est-ce qu'il est possible de ne pas nommer la feuille par son nom mais par son chiffre (en l'occurrence, "Feuil2" et non "Machin") ?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
2 mai 2015 à 15:41
2 mai 2015 à 15:41
Oui l'on peut nommer son nom par son chiffre, c'est le CodeName. Voir ceci:
Je pense que vu tes connaissances tu pourras l'adapter à tes besoins
'http://silkyroad.developpez.com/VBA/FeuilleDeCalcul/ Dim Ws As Worksheet 'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris 'en compte. 'ThisWorkbook correspond à l'objet classeur contenant la macro For Each Ws In ThisWorkbook.Worksheets 'Renvoie le CodeName de chaque feuille MsgBox Ws.CodeName Next Ws
Je pense que vu tes connaissances tu pourras l'adapter à tes besoins
Nai
Messages postés
707
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
11 octobre 2024
55
4 mai 2015 à 20:46
4 mai 2015 à 20:46
Merci pour cette réponse :)
J'ai résolu le problème avec :
Mais je ne comprend pas, j'ai plusieurs impression (dont certaines non demandées). Si j'ai bien compris, le Sheets array demande le numéro de la feuille dans l'ordre d'affichage. Ce sont donc les 30 premières feuilles à partir de la deuxième. Mais je n'indique donc pas le numéro spécifique de la feuille (Feuil1, Feuil2, etc...)
Qu'est-ce que ça imprime de votre côté ? https://www.cjoint.com/c/EEeuZs4bfbT
J'ai résolu le problème avec :
Sub print_p1() Application.ScreenUpdating = False Dim Feuille For Each Feuille In ActiveWorkbook.Sheets If Feuille.Index > 1 And Feuille.Index < 31 Then Feuille.Select Range("A34:K91").Select End If Next Application.Dialogs(xlDialogPrint).Show Sheets(Array((2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14), (15), (16), (17), (18), (19), (20), (21), (22), (23), (24), (25), (26), (27), (28), (29), (30), (31))).PrintOut Copies:=1, _ ActivePrinter:="", _ Collate:=True Call Impression.selectionner Application.ScreenUpdating = True End Sub
Mais je ne comprend pas, j'ai plusieurs impression (dont certaines non demandées). Si j'ai bien compris, le Sheets array demande le numéro de la feuille dans l'ordre d'affichage. Ce sont donc les 30 premières feuilles à partir de la deuxième. Mais je n'indique donc pas le numéro spécifique de la feuille (Feuil1, Feuil2, etc...)
Qu'est-ce que ça imprime de votre côté ? https://www.cjoint.com/c/EEeuZs4bfbT
Nai
Messages postés
707
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
11 octobre 2024
55
4 mai 2015 à 20:48
4 mai 2015 à 20:48
J'ai également deux fois la feuille de l'atelier 14 (Feuil40)...
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
9 mai 2015 à 08:48
9 mai 2015 à 08:48
si tu m'avais dit cela dès le départ, on aurait perdu moins de temps!!
Ça t'imprime les ateliers Machin à Plantes et 1 à 15 ?
Le problème vient de la sélection des feuilles. Je ne peux pas deviner les feuilles à copier quand tu mets:
pour moi ceux sont les feuilles de 2 à 31!
voici donc le code qui fonctionne pour imprimer les feuilles Machin à Plantes et les feuilles de 1 à 15:
a adapter pour les autres impressions.
Ça t'imprime les ateliers Machin à Plantes et 1 à 15 ?
Le problème vient de la sélection des feuilles. Je ne peux pas deviner les feuilles à copier quand tu mets:
Sheets(Array((2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12), (13), (14), (15), (16), (17), (18), (19), (20), (21), (22), (23), (24), (25), (26), (27), (28), (29), (30), (31))).PrintOut Copies:=1, _ ActivePrinter:="", _ Collate:=True
pour moi ceux sont les feuilles de 2 à 31!
voici donc le code qui fonctionne pour imprimer les feuilles Machin à Plantes et les feuilles de 1 à 15:
Sub print_p1() Application.ScreenUpdating = False Dim Feuille For Each Feuille In ActiveWorkbook.Sheets If Feuille.Index > 1 And Feuille.Index < 17 Then 'Feuilles Machin à Plantes Feuille.Select Range("A34:K91").Select Worksheets(Feuille.Name).PrintOut Copies:=1, _ ActivePrinter:="", _ Collate:=True Call Impression.selectionner End If Next For Each Feuille In ActiveWorkbook.Sheets If Feuille.Name >= 1 And Feuille.Name <= 15 Then 'Feuille' de 1 à 15 Feuille.Select Range("A34:K91").Select Worksheets(Feuille.Name).PrintOut Copies:=1, _ ActivePrinter:="", _ Collate:=True Call Impression.selectionner End If Next Application.ScreenUpdating = True End Sub
a adapter pour les autres impressions.
Nai
Messages postés
707
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
11 octobre 2024
55
12 mai 2015 à 11:38
12 mai 2015 à 11:38
Désolé. Je tâcherais d'être plus précis à l'avenir ;)
Effectivement, ça fonctionne beaucoup mieux ^^
Aussi, peut-on faire apparaître la boite de dialogue de l'imprimante (une seule fois) ? Mon impression (recto verso) place la reliure sur le haut, je voudrais pouvoir la placer à gauche.
Merci infiniment ! :)
Effectivement, ça fonctionne beaucoup mieux ^^
Aussi, peut-on faire apparaître la boite de dialogue de l'imprimante (une seule fois) ? Mon impression (recto verso) place la reliure sur le haut, je voudrais pouvoir la placer à gauche.
Merci infiniment ! :)
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
12 mai 2015 à 12:00
12 mai 2015 à 12:00
C'est simple, comme ceci:
Sub print_p1() Application.ScreenUpdating = False Dim Feuille Application.Dialogs(xlDialogPrint).Show 'affiche la boite de dialogue For Each Feuille In ActiveWorkbook.Sheets If Feuille.Index > 1 And Feuille.Index < 17 Then 'Feuilles Machin à Plantes Feuille.Select Range("A34:K91").Select Worksheets(Feuille.Name).PrintOut Copies:=1, _ ActivePrinter:="", _ Collate:=True Call Impression.selectionner End If Next For Each Feuille In ActiveWorkbook.Sheets If Feuille.Name >= 1 And Feuille.Name <= 15 Then 'Feuilles de 1 à 15 Feuille.Select Range("A34:K91").Select Worksheets(Feuille.Name).PrintOut Copies:=1, _ ActivePrinter:="", _ Collate:=True Call Impression.selectionner End If Next Application.ScreenUpdating = True End Sub
Nai
Messages postés
707
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
11 octobre 2024
55
12 mai 2015 à 13:27
12 mai 2015 à 13:27
Parfait !
Si seulement j'avais été clair plus tôt ;)
Merci !
Si seulement j'avais été clair plus tôt ;)
Merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
20 mars 2015 à 12:07
20 mars 2015 à 12:07
Bonjour,
Peut-être cela:
Peut-être cela:
Application.Dialogs(xlDialogPrint).Show
Nai
Messages postés
707
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
11 octobre 2024
55
20 mars 2015 à 14:13
20 mars 2015 à 14:13
Bonjour Le Pivert et merci :)
Je suppose à la place de :
Si oui, ça fonctionne presque. La boite de dialogue de l'imprimante s'ouvre en effet mais c'est la feuille active qui est cochée pour l'impression et non la sélection.
Je suppose à la place de :
ActiveWindow.Selection.PrintPreview
Si oui, ça fonctionne presque. La boite de dialogue de l'imprimante s'ouvre en effet mais c'est la feuille active qui est cochée pour l'impression et non la sélection.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
20 mars 2015 à 17:47
20 mars 2015 à 17:47
Essaie ceci:
Sub parcourir() Dim feuille For Each feuille In ActiveWorkbook.Sheets If feuille.Index > 1 And feuille.Index < 16 Then feuille.Select Range("A1:K91").Select Range(Selection, Selection.End(xlDown)).Select 'ActiveWindow.Selection.PrintPreview ' au choix Application.Dialogs(xlDialogPrint).Show ' au choix End If Next End Sub
Nai
Messages postés
707
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
11 octobre 2024
55
22 mars 2015 à 15:16
22 mars 2015 à 15:16
Merci pour cette réponse ! C'est super, ça fonctionne ^^
Cependant, je dois accepter l'impression de chacune des feuilles. N'est-il pas possible d'afficher toutes les sélections pour une seule impression ?
J'ai choisi :
Lorsque je lance la macro, j'ai l'aperçu de la sélection de la première feuille. J'imprime, et je passe à l'aperçu de la deuxième feuille, j'imprime, etc... pour les 16 feuilles.
En tout cas, encore merci !
Cependant, je dois accepter l'impression de chacune des feuilles. N'est-il pas possible d'afficher toutes les sélections pour une seule impression ?
J'ai choisi :
ActiveWindow.Selection.PrintPreview ' au choix
Lorsque je lance la macro, j'ai l'aperçu de la sélection de la première feuille. J'imprime, et je passe à l'aperçu de la deuxième feuille, j'imprime, etc... pour les 16 feuilles.
En tout cas, encore merci !
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
5 mai 2015 à 11:01
5 mai 2015 à 11:01
Essaie ceci:
a adapter pour les autres impressions
Sub print_p1() Application.ScreenUpdating = False Dim Feuille For Each Feuille In ActiveWorkbook.Sheets If Feuille.Name > 1 And Feuille.Name < 31 Then Feuille.Select Range("A34:K91").Select Worksheets(Feuille.Name).PrintOut Copies:=1, _ ActivePrinter:="", _ Collate:=True Call Impression.selectionner End If Next Application.ScreenUpdating = True End Sub
a adapter pour les autres impressions
Nai
Messages postés
707
Date d'inscription
vendredi 29 avril 2005
Statut
Membre
Dernière intervention
11 octobre 2024
55
8 mai 2015 à 23:31
8 mai 2015 à 23:31
Ça fonctionne correctement chez toi ?
Ça t'imprime les ateliers Machin à Plantes et 1 à 15 ?
Cette fois, je n'ai que les ateliers 2 à 15 :O
J'ai tenté sans le :
Des fois que ce soit ça qui gêne, mais non...
En tout cas, merci pour ta patience :)
Ça t'imprime les ateliers Machin à Plantes et 1 à 15 ?
Cette fois, je n'ai que les ateliers 2 à 15 :O
J'ai tenté sans le :
Call Impression.selectionner
Des fois que ce soit ça qui gêne, mais non...
En tout cas, merci pour ta patience :)
22 mars 2015 à 20:09
Mais ce n'est pas ce que je cherche ^^
Je suis parvenu à ceci :
L'argument Collate me faisait défaut. Là, tout fonctionne, à une exception : Pas d'aperçu :/ Le document est assemblé et imprimé sans aperçu et sans pouvoir sélectionner l'imprimante à utiliser.
A ce propos, j'aurais pu utiliser l'argument ActivePrinter, mais cela ne fait que choisir l'imprimante, toujours sans afficher l'aperçu :/
J'ai besoin que l'utilisateur puisse avoir un aperçu avant impression. Problème, quand je tente :
ou
Ca ne marche pas :/
On est pas loin du bout ! :)
Encore merci !