Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour à tous!
Comment fait-on pour qu'une feuille s’imprime automatiquement en A3 et en N&B dés qu'une cellule A1 est complétée (d'une valeur différente de zéro) puis validée (en tapant "enter") ?
Salut 2222olivier et forum
une solution assez simple, Sous windows, tu crées une nouvelle imprimante que tu paramètre en A3 N&B (comme tu veux quoi). que tu Nommes A3_NB (par exemple)
ensuite, tu crées crées une macro apprentissage (Menu Outils>>macro>>Nouvelle macro)
tu sélectionnes ton imprimante, tu valides, tu resélectionnes l'imprimante par défaut.
tu arrêtes l'enregistrement et tu as le code pour choisir ton imprimante.
Si tu sais pas faire en fonction de A1, tu colles le code ici et on t'aidera.
si tu as d'autres paramètres d'imprimantes, tu recrées d'autres imprimantes en les paramètrant et en donnant un nom explicite.
C'est la méthode la plus rapide et la plus sûre que je connaisse et tu peux te servir des imprimantes ainsi crées pour tous tes logiciels.
Salut Gorfael, merci d'être dispo et si rapide! En fait c'est pas vraiment un pb d'imprimante, c'est surtout que je voudrais que l'impression de la feuille de lance "toute seule" dés que la cellule A1 est validée par la touche "enter" (cette cellule a la valeur "zéro" au départ).
Merci de ta compréhension car je débute et je ne comprends pas encore bien le langage VBA.
Salut Gorfael, merci d'être dispo et si rapide! En fait c'est pas vraiment un pb d'imprimante, c'est surtout que je voudrais que l'impression de la feuille de lance "toute seule" dés que la cellule A1 est validée par la touche "enter" (cette cellule a la valeur "zéro" au départ).
Merci de ta compréhension car je débute et je ne comprends pas encore bien le langage VBA.
2222olivier : comme je suis un feignant, je réponds au minimum et an fonction des données. Si tu n'exposes que la partie émergeante de ton problème, le reste de l'iceberg reste dans ta tête et ne risque pas d'avoir de solution 😀.
On peut toujours échanger des tas de postes pour préciser le problème, mais c'est mieux quand on connaît de suite le but de la macro et la problématique rencontrée.
Le plus simple reste toujours de faire les opérations manuellement sous macro apprentissage (Menu Outils>>macro>>nouvelle macro). Excel te donnes un codage de toutes les opérations effectuées (s'il avait un code pour "a pris une bière", il le mettrait).
Avec ça, tu as une base de syntaxe, qu'il faut un peu épurer, mais qui marche.
Pour ton problème, si c'est seulement l'automatisation de l'opération, suite au renseignement de la cellule A, il existe 2 macros qui se lancent quand tu modiifies manuellement la valeur d'une cellule : Worksheet_Change : pour faire court, elle a un domaine d'application qui concerne la feuille.
Pour la créer : Clic-droit sur le nom de l'onglet => menu contextuel>>Visualiser le code
Menu déroulant de la case de gauche (Général) : tu choisis Worksheet, et dans celle de droite Change et ta macro est créée dans le module lié à ta feuille.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
'si A1 n'appartient pas à Target (n'a pas été modifié) sortir
If [A1] > 0 Then
'Si la valeur de la cellule A1 est supérieure à 0
ActiveSheet.PrintOut Copies:=Cells(1, 1), ActivePrinter:="PDFCreator sur Ne00:"
'imprimer la feuille active avec l'imprimante PDFCreator een A1 exemplaires
End Sub
Target est une Variable "plage de cellules", mise à jour directement par Excel.
La différence de manière de code de noviceAG et que sa macro imprimera à chaque modification d'une cellule dans la feuille, si A1 est fifférente de 0 : Excel fait ce que tu lui demandes de faire, pas ce que tu veux.
C'est pas une critique, juste une méthode de travail différente. J'ai utilisé 3 codages possibles de la cellule A1.
Workbook_SheetChange : L'autre macro lancée est dans le module ThisWorkBook. Son avantage est que son domaine d'application est le classeur. Plutôt que faire une macro Worksheet_Change par feuille, tu peux faire une macro qui s'applique à toutes les feuilles
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Intersect(Target, Sh.[A1]) Is Nothing Then Exit Sub
If Sh.[A1] > 0 Then
Sh.PrintOut Copies:=Sh.[A1], ActivePrinter:="PDFCreator sur Ne00:"
'imprimer la feuille active avec l'imprimante PDFCreator een A1 exemplaires
End If
End Sub
Sh est une variable objet qui contient les feuilles modifiées
Target, la même chose que précédement.
A+
Oulalà! Je rentre juste et je crois qu'il va me falloir quelques dizaines de minutes pour décortiquer tout ça. Merci car à priori c'est véritablement un cours de VBA que tu me fais. Alors à plus, dés que j'aurai assimilé la leçon. Merci encore.
PS: c'est la 1° fois que je me connecte à un forum, je ne suis pas déçu!
Super, ça marche du tonner! Il ne manquait que "end if" et aprés ça a été comme sur des roulettes. Merci beaucoup. Je suis vraiment content d'avoir franchi le pas et m'être inscrit à ce forum car tout seul les progrés sont laborieux!
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.