Apparence à l'écran différente de l'impression
Bonjour,
J'ai posé deux questions hier (Sujet : Formule avec date / Apparence à l'écran) et vous m'avez apporté une réponse très utile à propos de la formule avec date. En ce qui concerne l'apparence à l'écran, vous m'avez indiqué de chercher la solution parmi les anciennes questions-réponses.
J'ai bien essayé d'effectuer cette recherche moi-même, mais je n'ai malheureusement pas trouvé.
Je me permets donc de vous poser à nouveau ma question : Comment faire ressortir à l'écran certaines cellules d'une manière quelconque, par exemple avec un fond de couleur différent ou une couleur de police spéciale, mais que ceci n'apparaisse pas lors de l'impression ?
Avec mes cordiales salutations.
Merci infiniment à Jean-Marie pour son aide, mais l'ancienne série de questions-réponses - parue il y a quelques temps sur ce site - qu'il indique en tant que solution ne correspond, selon moi, pas du tout à mon problème.
Je joins donc un fichier à mon message afin de préciser mon besoin :
https://www.excel-pratique.com/~files/doc/092SOExemple_Excel-Pratique.Com.xls
Je dois pouvoir indiquer aux différents utilisateurs de ma feuille de calculs quelles cellules sont modifiables et lesquelles sont verrouillées (dans mon fichier-exemple, j'ai utilisé un fond jaune pour les cellules modifiables, mais cette information pourrait aussi être données d'une autre manière). Toutefois, que les cellules soient modifiables ou non, tout le texte devrait apparaître identiquement à l'impression.
La solution d'entrer les informations à un endroit et de les reporter dans une zone d'impression doit cependant être écartée car j'ai vraiment beaucoup de feuilles - et passablement longues - à préparer.
Merci d'avance à tous ceux qui se pencheront sur ce problème
Re...
C'est dans la réponse d'Amadéus du Lun Jan 15, 2007 10:09 am que je voyais une solution à ton problème.
@+Jean-Marie
Merci encore pour cette information.
Je ne pense pas vraiment que mon désir soit identique à celui de DGiguere.
Je ne voudrais pas que ma cellule soit vide ou non selon qu'elle soit utilisée ou non, mais bien qu'elle ait une apparence différente des autres à l'écran, mais pas lors de l'impression.
Dans l'exemple fourni, si j'avais la valeur "0.00" pour la ligne "Divers", les deux textes devraient quand même apparaître à l'impression, mais simplement sans le fond jaune (ou sans toute autre manière de notifier ces cellules aux utilisateurs sans que le lecteur ne s'en apperçoive).
Je ne sais pas si c'est moi qui ne comprend rien ou si je n'arrive pas à me faire comprendre ! Dans le premier cas, pourrais-tu me donner une solution par rapport à mon exemple personnel. J’ai bien essayé d’appliquer la solution proposée à DGiguere, mais je ne trouve pas dans son fichier, par exemple, le texte « INFORMATION » dans la cellule C3, tel qu’indiqué. Il m'est donc difficile d'appliquer cet exemple à mon fichier.
Dans tout les cas, je trouverais sympathique si tu pouvais encore chercher une solution à mon problème.
Je dois peut-être encore préciser que dans mes 12 feuilles de calculs réelles, j'ai entre 20 et 30 cellules modifiables par feuille (pas toujours les mêmes cellules) mais que la présentation des 12 feuilles doit être identique (même texte, utilisé ou non, au même endroit).
Bonsoir
Si je peux te rassurer, je t'ai entièrement compris depuis le début de ton fil.
A chaque réponse, il y a un principe, une méthode, un process qui est à retenir.
Dans ton cas c'est le principe de l'utilisation d'une MFC, regarde le fichier joint
https://www.excel-pratique.com/~files/doc/Excel-Pratique.xls
MFC = Mise en forme conditionnelle, menu (Format/Mise en forme conditionnelle)
Si le principe de la MFC peut te convenir, on pourrait envisager l'utilisation d'un événement d'impression pour fixer la valeur de la cellule (dans l'exemple joint en I1)
@+Jean-Marie
Salut Jean-Marie,
Là on commence à s'approcher du bonheur !
Pour les MFC, je m'en sors assez bien. Avec tes explications, je n'aurais donc pas de problème à arriver à cette étape.
Pour la suite, j'ai tout à coup une idée : Comme parfois il serait bon d'avoir quand même les champs marqués en jaune (lors du contrôle interne des calculs effectués par une vingtaine de collaborateurs différents) je pourrais faire une macro qui permettra d'imprimer le texte sans effacer cette valeur 1, puis une autre macro qui permettra d'imprimer tout le texte en blanc pour les clients.
Mais si cette solutions s'avérera un peu trop compliquée (par exemple parce que les utilisateurs ou que mes chefs trouvent trop compliqué de toujours devoir ouvrir ces fichiers en confirmant l'ouverture des macros ou autre) peux-tu quand même m'expliquer ce que voulais-tu dire par "un événement d'impression" ? Est-ce quelque chose d'autre que d'effacer manuellement ce 1 avant l'impression ?
Bonnes Pâques
Bonjour Yvouille et Jean Marie
Je vois que J.M est parti en WEd.
Yvouille, pas obligé d'effacer le 1 à la main, sur cet exemple le code du bouton qui lance l'impression commence par vider cette cellule 1 avant de lancer l'impression.
Cela peut être une des solutions.
Private Sub CommandButton1_Click()
Range("I1").Select
ActiveCell.FormulaR1C1 = ""
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Subhttps://www.excel-pratique.com/~files/doc/impression.xls
Cordialement,
Amadéus
Re...
Tant mieux Yvouille
Voici un code à mettre dans ton classeur
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Range("Feuil1!I1").ClearContents
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
If Not Range("Feuil1!I1") = 1 Then
Range("Feuil1!I1") = 1
End If
End SubPour aller dans l'éditeur VBA (soit les touches Alt+F11, ou menu Outils/Macro/Visual Basic Editor). Dans l'éditeur dans la fenêtre projet qui se trouve en général en haut sur la gauche, il y a une liste avec tous les classeurs ouverts. Sélectionne ton fichier, et développe son contenu, dans le dossier des objets d'Excel tu dois voir une Ligne ThisWorkBook, double clique sur cette ligne. Une fenêtre s'affiche, colle le code. Maintenant tu peux retourner dans Excel (menu Fichier).
A partir de maintenant, si tu cliques sur le bouton de l'imprimante dans la barre d'outils ou par Fichier/imprimer, l'événement BeforePrint, va supprimer le contenu de la cellule I1 de la feuille Feuil1, après l'impression, tu ne verras pas le retour des fond jaune, pour cela il faudra changer le curseur de cellule pour les revoir.
Amadéus, heureux de voir ton premier code en VBA
@+Jean-Marie
Bonjour JeanMarie
Désolé, je pensais que tu avais disparu et je ne voulais pas laisser notre ami en rade.
Pour le code, ce n'est pas le premier, mais, il faut savoir commencer modestement.
Bien cordialement,
Amadéus
Merci mille fois à Jean-Marie et à Amadéus pour leur précieuse aide.
Je ne suis pas arrivé à coller le code de Jean-Marie dans mon éditeur VBA car je n'arrive pas à trouver la ligne "ThisWorkBook".
Mais ce ne serait pas vraiment utile que j'y arrive si vous pouviez - à la place - répondre à ma nouvelle question ci-dessous :
En suivant la voie que vous m'avez ouverte, j'ai tenté plusieurs macros différentes qui me seraient bien utiles selon les situations. Je devrais cependant arriver à créer un macro qui ouvrirait une boîte de dialogue "Imprimer" sans aller au bout de l'impression, laissant la possibilité à l'utilisateur de choisir l'imprimante, le nombre de copie, le papier, etc. en fonction des besoins. Cependant, lorsque la boîte de dialogue est ouverte, je ne sais pas comment arrêter l'enregistrement de ma macro à ce moment-là (car je n'ai alors pas la possibilité d'aller à Outils/Macro/Arrêter l'enregistrement) . Pourriez-vous m'indiquer une solution ?
Bonjour
C'est exactement à cette question qu'a répondu JeanMarie avec le Code qu'il a donné à mettre dans ThisWorkbook. ThisWorkbook désigne le Classeur en VBA
Quand JeanMarie parle de "la ligne ThisWorkbook", c'est une façon de parler. Cela désigne la ligne où tu lis "ThisWorkbook"
Si tu reprends bien le message de JeanMarie (Pas à pas) tu ne peux pas le manquer.
Je t'ai mis le code en place et te renvois le fichier.
Cordialement,
Amadéus
https://www.excel-pratique.com/~files/doc/TDfI5impression.xls
Bonjour
Regarde l'image du fichier joint
https://www.excel-pratique.com/~files/doc/Image.zip
Pour ta question, si tu veux ouvrir la boîte de dialogue Fichier/Imprimer défini dans Excel
Application.Dialogs(xlDialogPrint).Show
PS : Si tu pouvais nous mettre un fichier pour savoir ou tu en es, cela serait plus simple pour nous.
@+Jean-Marie
Bonsoir à tous deux,
Je crois que je suis au bout de mes peines.
J'aurais voulu joindre un modèle de mon premier fichier terminé, mais l'upload a été interrompu car il est trop volumineux (bien que j'ai essayé de supprimer toutes les feuilles qu'il comportait sauf une et que je n'ai laissé qu'une des deux macros que je vais finalement utiliser). Si vous le désirez, je peux essayer de vous fournir une copie de ce fichier d'une autre manière.
Quoi qu'il en soit, si je n'ai toujours pas trouvé sur mon Visual Basic Editor d'image identique à celle que vous m'avez envoyée - probablement car je n'ai pas la même version que vous - j'ai malgré tout pu modifier les macros que j'ai préparées avec une impression aboutie puis en remplaçant la ligne :
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
par celle que vous m'aviez fournie :
Application.Dialogs(xlDialogPrint).Show.
Ca marche à la perfection ! Maintenant une macro efface les fonds de cellule jaunes, par l'intermédiaire d'une MFC, et ouvre la boîte de dialogue "Imprimer" afin de préparer un document PDF ou une impression papier et une autre macro remet des fonds jaunes dans les cellules non protégées afin de pouvoir effectuer d'autres calculs.
Je tiens alors à vous remercier sincèrement pour votre très grande aide. Vous m'avez été d'un très grand secours.
Avec mes meilleures salutations.