Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pas de couleur de fond de cellule a l'impression

21 réponses
Avatar
Pierre.M
Bonsoir tout le monde,

Un petit soucis a partager avec vous:

J'ai cree un formulaire style facture et pour simplifier son
remplissage j'aimerais mettre en couleur le fond des cellules
susceptibles d'etre remplies par l'utilisateur. Ca je sais faire ;-)

Y a t il un moyen pour que cette couleur de fond n'apparaisse pas a
l'impression (sans passer par une impression noir & blanc- il y a des
logos en couleur et d'autres trucs...)? L'utilisateur utilise le
dialogue d'impression standart d'excel, il ne doit donc pas avoir a
intervenir dans le processus.

Les MFC ne conviennent pas car toutes les cellules en couleur ne sont
pas forcement utilisees.

J'ai deja du VBA dans le formulaire...

Merci a tous pour votre aide qui m'a deja souvent depanne.

Bonne soiree.

Pierre.M

10 réponses

1 2 3
Avatar
Pierre.M
Euhhhh, je ne suis pas sur. Chez moi ca continue a supprimer toutes les
couleurs... J'avais du jaune et du rouge, il devrait rester le jaune,
non? Je m'y suis mal pris encore une fois?

Merci beaucoup.

Pierre.M



On 2007-03-06 19:36:33 +0100, "JB" said:

On annule le rouge:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex = 3 Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

jb
On 6 mar, 18:27, Pierre.M wrote:
Merci beaucoup a tous les 2. Ca fonctionne parfaitement!

Serait-il neanmoins possible de modifier le code pour choisir la
couleur de fond qu'on ne desire pas imprimer? (disons que j'ai des
fonds rouges, oranges et jaunes et qu'a l'impression je ne veux pas les
jaunes). C'est plus par curiosite, pour apprendre...

Merci encore pour votre aide.

Pierre.M

On 2007-03-06 08:20:53 +0100, "JB" said:



En ajoutant Cancel=True après l'impression, il semble que ce soit o
k.



Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

JB

On 6 mar, 07:00, JLuc wrote:
*Bonjour Pierre.M*,
En mettant le code deJBdans l'événement BeforePrint du classeur :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub

Par contre, çà le fera pour toutes les feuille. Sinon, il faudra t
est



er
le nom de la feuille pour le faire ou pas ;-)

Ok, si je passe par le bouton "imprime" ca fonctionne, mais n'y aurait
-il


pas moyen d'obtenir la meme chose a partir du menu fichier/imprimer et
donc


sans rajouter un bouton? En effet si par habitude l'utilisateur utili
se




CTRL+P il se retrouve avec les couleurs de fond...

Merci encore.

Pierre.M

On 2007-03-05 23:20:53 +0100, "JB" said:

http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, Pierre.M wrote:
Merci beaucoup pour ton aide, mais je dois probablement mal m'y pre
nd






re
car je n'arrive pas au resultat souhaite. Peut-etre aussi que je n'
ai






pas su faire comprendre mon besoin.
Pourrais-tu me preciser a quel endroit coller le code (j'ai essaye
diverses solutions, mais sans effets...)?

Pierre.M

On 2007-03-05 22:02:03 +0100, "JB" said:

Sub imprime()
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte de
s messages précédents -




- Afficher le texte des messages précédents -










Avatar
JB
Sur mon poste, seul le rouge est supprimé

http://cjoint.com/?dgu148wxUt

JB

On 6 mar, 20:19, Pierre.M wrote:
Euhhhh, je ne suis pas sur. Chez moi ca continue a supprimer toutes les
couleurs... J'avais du jaune et du rouge, il devrait rester le jaune,
non? Je m'y suis mal pris encore une fois?

Merci beaucoup.

Pierre.M

On 2007-03-06 19:36:33 +0100, "JB" said:



On annule le rouge:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex = 3 Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

jb
On 6 mar, 18:27, Pierre.M wrote:
Merci beaucoup a tous les 2. Ca fonctionne parfaitement!

Serait-il neanmoins possible de modifier le code pour choisir la
couleur de fond qu'on ne desire pas imprimer? (disons que j'ai des
fonds rouges, oranges et jaunes et qu'a l'impression je ne veux pas les
jaunes). C'est plus par curiosite, pour apprendre...

Merci encore pour votre aide.

Pierre.M

On 2007-03-06 08:20:53 +0100, "JB" said:

En ajoutant Cancel=True après l'impression, il semble que ce soit o
k.



Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

JB

On 6 mar, 07:00, JLuc wrote:
*Bonjour Pierre.M*,
En mettant le code deJBdans l'événement BeforePrint du classeur :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub

Par contre, çà le fera pour toutes les feuille. Sinon, il faudra t
est



er
le nom de la feuille pour le faire ou pas ;-)

Ok, si je passe par le bouton "imprime" ca fonctionne, mais n'y aur ait
-il


pas moyen d'obtenir la meme chose a partir du menu fichier/imprimer et
donc


sans rajouter un bouton? En effet si par habitude l'utilisateur uti li
se




CTRL+P il se retrouve avec les couleurs de fond...

Merci encore.

Pierre.M

On 2007-03-05 23:20:53 +0100, "JB" said:

http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, Pierre.M wrote:
Merci beaucoup pour ton aide, mais je dois probablement mal m'y p re
nd






re
car je n'arrive pas au resultat souhaite. Peut-etre aussi que je n'
ai






pas su faire comprendre mon besoin.
Pourrais-tu me preciser a quel endroit coller le code (j'ai essaye
diverses solutions, mais sans effets...)?

Pierre.M

On 2007-03-05 22:02:03 +0100, "JB" said:

Sub imprime()
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte de
s messages précédents -




- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -



- Afficher le texte des messages précédents -










Avatar
Pierre.M
Pardon, l'erreur vient du fait que j'ai imprime sur une imprimante
reglee par defaut en noir et blanc... :-(((sisi c'est possible!!!
En fait tout fonctionne parfaitement. Merci beaucoup pour ton aide et
ta patience.

Par contre pourquoi ai-je perdu la fenetre de parametrage de
l'impression (quand CTRL+P l'imprimante imprime de suite)? Je ne la
retrouve que si je demande l'impression a partir de l'apercu avant
impression. Bizarre, non? Seulement sur ce classeur...

Merci encore.

Pierre.M



On 2007-03-06 20:55:31 +0100, "JB" said:

Sur mon poste, seul le rouge est supprimé

http://cjoint.com/?dgu148wxUt

JB

On 6 mar, 20:19, Pierre.M wrote:
Euhhhh, je ne suis pas sur. Chez moi ca continue a supprimer toutes les
couleurs... J'avais du jaune et du rouge, il devrait rester le jaune,
non? Je m'y suis mal pris encore une fois?

Merci beaucoup.

Pierre.M

On 2007-03-06 19:36:33 +0100, "JB" said:



On annule le rouge:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex = 3 Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

jb
On 6 mar, 18:27, Pierre.M wrote:
Merci beaucoup a tous les 2. Ca fonctionne parfaitement!

Serait-il neanmoins possible de modifier le code pour choisir la
couleur de fond qu'on ne desire pas imprimer? (disons que j'ai des
fonds rouges, oranges et jaunes et qu'a l'impression je ne veux pas les
jaunes). C'est plus par curiosite, pour apprendre...

Merci encore pour votre aide.

Pierre.M

On 2007-03-06 08:20:53 +0100, "JB" said:

En ajoutant Cancel=True après l'impression, il semble que ce soit
o




k.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

JB

On 6 mar, 07:00, JLuc wrote:
*Bonjour Pierre.M*,
En mettant le code deJBdans l'événement BeforePrint du classeur :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub

Par contre, çà le fera pour toutes les feuille. Sinon, il faudra
t





est
er
le nom de la feuille pour le faire ou pas ;-)

Ok, si je passe par le bouton "imprime" ca fonctionne, mais n'y aur
ait






-il
pas moyen d'obtenir la meme chose a partir du menu fichier/imprimer
et






donc
sans rajouter un bouton? En effet si par habitude l'utilisateur uti
li






se
CTRL+P il se retrouve avec les couleurs de fond...

Merci encore.

Pierre.M

On 2007-03-05 23:20:53 +0100, "JB" said:

http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, Pierre.M wrote:
Merci beaucoup pour ton aide, mais je dois probablement mal m'y p
re








nd
re
car je n'arrive pas au resultat souhaite. Peut-etre aussi que je
n'








ai
pas su faire comprendre mon besoin.
Pourrais-tu me preciser a quel endroit coller le code (j'ai essaye
diverses solutions, mais sans effets...)?

Pierre.M

On 2007-03-05 22:02:03 +0100, "JB" said:

Sub imprime()
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte
de





s messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte de
s messages précédents -




- Afficher le texte des messages précédents -












Avatar
JLuc
*Bonjour Pierre.M*,
Losque que tu demande une impréssion, excel execute l'événement
Workbook_BeforePrint puis soit imprime (si tu as cliqué sur l'icone
d'impression) soit ouvre la boite de dialogue de choix d'imprimante et
de reglage (Ctrl+P ou Fichier/Imprimer).
Dans ton cas, pour faire marcher la suppression de couleur, JB demande
une impression dans cet evenement et avant de finir, dit à l'evenement
de ne pas imprimer : Cancel = True

Pardon, l'erreur vient du fait que j'ai imprime sur une imprimante reglee par
defaut en noir et blanc... :-(((sisi c'est possible!!!
En fait tout fonctionne parfaitement. Merci beaucoup pour ton aide et ta
patience.

Par contre pourquoi ai-je perdu la fenetre de parametrage de l'impression
(quand CTRL+P l'imprimante imprime de suite)? Je ne la retrouve que si je
demande l'impression a partir de l'apercu avant impression. Bizarre, non?
Seulement sur ce classeur...

Merci encore.

Pierre.M



On 2007-03-06 20:55:31 +0100, "JB" said:

Sur mon poste, seul le rouge est supprimé

http://cjoint.com/?dgu148wxUt

JB

On 6 mar, 20:19, Pierre.M wrote:
Euhhhh, je ne suis pas sur. Chez moi ca continue a supprimer toutes les
couleurs... J'avais du jaune et du rouge, il devrait rester le jaune,
non? Je m'y suis mal pris encore une fois?

Merci beaucoup.

Pierre.M

On 2007-03-06 19:36:33 +0100, "JB" said:



On annule le rouge:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex = 3 Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

jb
On 6 mar, 18:27, Pierre.M wrote:
Merci beaucoup a tous les 2. Ca fonctionne parfaitement!

Serait-il neanmoins possible de modifier le code pour choisir la
couleur de fond qu'on ne desire pas imprimer? (disons que j'ai des
fonds rouges, oranges et jaunes et qu'a l'impression je ne veux pas les
jaunes). C'est plus par curiosite, pour apprendre...

Merci encore pour votre aide.

Pierre.M

On 2007-03-06 08:20:53 +0100, "JB" said:

En ajoutant Cancel=True après l'impression, il semble que ce soit
o




k.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

JB

On 6 mar, 07:00, JLuc wrote:
*Bonjour Pierre.M*,
En mettant le code deJBdans l'événement BeforePrint du classeur :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub

Par contre, çà le fera pour toutes les feuille. Sinon, il faudra
t





est
er
le nom de la feuille pour le faire ou pas ;-)

Ok, si je passe par le bouton "imprime" ca fonctionne, mais n'y aur
ait






-il
pas moyen d'obtenir la meme chose a partir du menu fichier/imprimer
et






donc
sans rajouter un bouton? En effet si par habitude l'utilisateur uti
li






se
CTRL+P il se retrouve avec les couleurs de fond...

Merci encore.

Pierre.M

On 2007-03-05 23:20:53 +0100, "JB" said:

http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, Pierre.M wrote:
Merci beaucoup pour ton aide, mais je dois probablement mal m'y p
re








nd
re
car je n'arrive pas au resultat souhaite. Peut-etre aussi que je
n'








ai
pas su faire comprendre mon besoin.
Pourrais-tu me preciser a quel endroit coller le code (j'ai essaye
diverses solutions, mais sans effets...)?

Pierre.M

On 2007-03-05 22:02:03 +0100, "JB" said:

Sub imprime()
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte
de





s messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte de
s messages précédents -




- Afficher le texte des messages précédents -




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O











Avatar
Pierre.M
Ok, je voyais pas ca comme ca...
Y a t il une solution pour retrouver la boite de dialogue d'impression
? Tu semblais dire plus haut que certaines lignes etaient
supprimables...
Merci a toi aussi.

Pierre.M


On 2007-03-07 07:15:09 +0100, JLuc said:

*Bonjour Pierre.M*,
Losque que tu demande une impréssion, excel execute l'événement
Workbook_BeforePrint puis soit imprime (si tu as cliqué sur l'icone
d'impression) soit ouvre la boite de dialogue de choix d'imprimante et
de reglage (Ctrl+P ou Fichier/Imprimer).
Dans ton cas, pour faire marcher la suppression de couleur, JB demande
une impression dans cet evenement et avant de finir, dit à l'evenement
de ne pas imprimer : Cancel = True

Pardon, l'erreur vient du fait que j'ai imprime sur une imprimante
reglee par defaut en noir et blanc... :-(((sisi c'est possible!!!
En fait tout fonctionne parfaitement. Merci beaucoup pour ton aide et
ta patience.

Par contre pourquoi ai-je perdu la fenetre de parametrage de
l'impression (quand CTRL+P l'imprimante imprime de suite)? Je ne la
retrouve que si je demande l'impression a partir de l'apercu avant
impression. Bizarre, non? Seulement sur ce classeur...

Merci encore.

Pierre.M



On 2007-03-06 20:55:31 +0100, "JB" said:

Sur mon poste, seul le rouge est supprimé

http://cjoint.com/?dgu148wxUt

JB

On 6 mar, 20:19, Pierre.M wrote:
Euhhhh, je ne suis pas sur. Chez moi ca continue a supprimer toutes les
couleurs... J'avais du jaune et du rouge, il devrait rester le jaune,
non? Je m'y suis mal pris encore une fois?

Merci beaucoup.

Pierre.M

On 2007-03-06 19:36:33 +0100, "JB" said:



On annule le rouge:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex = 3 Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

jb
On 6 mar, 18:27, Pierre.M wrote:
Merci beaucoup a tous les 2. Ca fonctionne parfaitement!

Serait-il neanmoins possible de modifier le code pour choisir la
couleur de fond qu'on ne desire pas imprimer? (disons que j'ai des
fonds rouges, oranges et jaunes et qu'a l'impression je ne veux pas les
jaunes). C'est plus par curiosite, pour apprendre...

Merci encore pour votre aide.

Pierre.M

On 2007-03-06 08:20:53 +0100, "JB" said:

En ajoutant Cancel=True après l'impression, il semble que ce soit
o




k.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Application.EnableEvents = False
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintOut ' ou ActiveSheet.Printpreview
Cancel = True
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
Application.EnableEvents = True
End Sub

JB

On 6 mar, 07:00, JLuc wrote:
*Bonjour Pierre.M*,
En mettant le code deJBdans l'événement BeforePrint du classeur :

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub

Par contre, çà le fera pour toutes les feuille. Sinon, il faudra
t





est
er
le nom de la feuille pour le faire ou pas ;-)

Ok, si je passe par le bouton "imprime" ca fonctionne, mais n'y aur
ait






-il
pas moyen d'obtenir la meme chose a partir du menu fichier/imprimer
et






donc
sans rajouter un bouton? En effet si par habitude l'utilisateur uti
li






se
CTRL+P il se retrouve avec les couleurs de fond...

Merci encore.

Pierre.M

On 2007-03-05 23:20:53 +0100, "JB" said:

http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, Pierre.M wrote:
Merci beaucoup pour ton aide, mais je dois probablement mal m'y p
re








nd
re
car je n'arrive pas au resultat souhaite. Peut-etre aussi que je
n'








ai
pas su faire comprendre mon besoin.
Pourrais-tu me preciser a quel endroit coller le code (j'ai essaye
diverses solutions, mais sans effets...)?

Pierre.M

On 2007-03-05 22:02:03 +0100, "JB" said:

Sub imprime()
Dim temp1(), temp2()
For Each c In ActiveSheet.UsedRange
If c.Interior.ColorIndex <> xlNone Then
n = n + 1
ReDim Preserve temp1(1 To n)
ReDim Preserve temp2(1 To n)
temp1(n) = c.Address
temp2(n) = c.Interior.ColorIndex
c.Interior.ColorIndex = xlNone
End If
Next c
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut
For i = 1 To n
Range(temp1(i)).Interior.ColorIndex = temp2(i)
Next i
End Sub- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte
de





s messages précédents -

- Afficher le texte des messages précédents -- Masquer le texte de
s messages précédents -




- Afficher le texte des messages précédents -
















Avatar
JLuc
Pierre.M avait soumis l'idée :
Ok, je voyais pas ca comme ca...
Y a t il une solution pour retrouver la boite de dialogue d'impression ? Tu
semblais dire plus haut que certaines lignes etaient supprimables...
Merci a toi aussi.

Pierre.M


Essaie :
Application.Dialogs(xlDialogPrint).Show
au lieu de :
ActiveSheet.PrintOut

--
JLuc

Avatar
Pierre.M
Salut JLuc,

Merci pour le conseil, ca fonctionne comme espere.
Par contre ce coup-ci je perds l'apercu avant impression (c'est le
dialogue d'impression qui s'ouvre a la place...).
Encore une autre bonne idee?

Bonne soiree.

Pierre.M


On 2007-03-07 17:15:21 +0100, JLuc said:

Pierre.M avait soumis l'idée :
Ok, je voyais pas ca comme ca...
Y a t il une solution pour retrouver la boite de dialogue d'impression
? Tu semblais dire plus haut que certaines lignes etaient
supprimables...
Merci a toi aussi.

Pierre.M


Essaie :
Application.Dialogs(xlDialogPrint).Show
au lieu de :
ActiveSheet.PrintOut



Avatar
JLuc
*Bonjour Pierre.M*,
If Msgbox("Voulez vous un aperçu ?", VbYesNo) = VbYes Then
Application.Dialogs(xlDialogPrintPreview).Show
Else
Application.Dialogs(xlDialogPrint).Show
End If

Salut JLuc,

Merci pour le conseil, ca fonctionne comme espere.
Par contre ce coup-ci je perds l'apercu avant impression (c'est le dialogue
d'impression qui s'ouvre a la place...).
Encore une autre bonne idee?

Bonne soiree.

Pierre.M


On 2007-03-07 17:15:21 +0100, JLuc said:

Pierre.M avait soumis l'idée :
Ok, je voyais pas ca comme ca...
Y a t il une solution pour retrouver la boite de dialogue d'impression ?
Tu semblais dire plus haut que certaines lignes etaient supprimables...
Merci a toi aussi.

Pierre.M


Essaie :
Application.Dialogs(xlDialogPrint).Show
au lieu de :
ActiveSheet.PrintOut



--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
Pierre.M
Merci beaucoup JLuc pour ton aide.
Je vais donc devoir me passer de previsualisation, puisque apparement
je ne peux pas avoir les 2 en meme temps. Mais mon projet avance quand
meme!
Merci encore et bonne soiree.

Pierre.M


On 2007-03-07 23:29:29 +0100, JLuc said:

*Bonjour Pierre.M*,
If Msgbox("Voulez vous un aperçu ?", VbYesNo) = VbYes Then
Application.Dialogs(xlDialogPrintPreview).Show
Else
Application.Dialogs(xlDialogPrint).Show
End If

Salut JLuc,

Merci pour le conseil, ca fonctionne comme espere.
Par contre ce coup-ci je perds l'apercu avant impression (c'est le
dialogue d'impression qui s'ouvre a la place...).
Encore une autre bonne idee?

Bonne soiree.

Pierre.M


On 2007-03-07 17:15:21 +0100, JLuc said:

Pierre.M avait soumis l'idée :
Ok, je voyais pas ca comme ca...
Y a t il une solution pour retrouver la boite de dialogue d'impression
? Tu semblais dire plus haut que certaines lignes etaient
supprimables...
Merci a toi aussi.

Pierre.M


Essaie :
Application.Dialogs(xlDialogPrint).Show
au lieu de :
ActiveSheet.PrintOut







Avatar
JLuc
*Bonjour Pierre.M*,

Merci beaucoup JLuc pour ton aide.
Je vais donc devoir me passer de previsualisation, puisque apparement je ne
peux pas avoir les 2 en meme temps. Mais mon projet avance quand meme!
Le test que je t'ai mis ne fonctionne pas ?



Merci encore et bonne soiree.

Pierre.M


On 2007-03-07 23:29:29 +0100, JLuc said:

*Bonjour Pierre.M*,
If Msgbox("Voulez vous un aperçu ?", VbYesNo) = VbYes Then
Application.Dialogs(xlDialogPrintPreview).Show
Else
Application.Dialogs(xlDialogPrint).Show
End If

Salut JLuc,

Merci pour le conseil, ca fonctionne comme espere.
Par contre ce coup-ci je perds l'apercu avant impression (c'est le
dialogue d'impression qui s'ouvre a la place...).
Encore une autre bonne idee?

Bonne soiree.

Pierre.M


On 2007-03-07 17:15:21 +0100, JLuc said:

Pierre.M avait soumis l'idée :
Ok, je voyais pas ca comme ca...
Y a t il une solution pour retrouver la boite de dialogue d'impression ?
Tu semblais dire plus haut que certaines lignes etaient supprimables...
Merci a toi aussi.

Pierre.M


Essaie :
Application.Dialogs(xlDialogPrint).Show
au lieu de :
ActiveSheet.PrintOut





--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O





1 2 3