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
JB
Bonsoir,

En VBA

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

JB
On 5 mar, 21:13, Pierre.M wrote:
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


Avatar
Pierre.M
Merci beaucoup pour ton aide, mais je dois probablement mal m'y prendre
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


Avatar
JB
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 prendre
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 -



Avatar
Pierre.M
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
utilise 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 prendre
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 -





Avatar
JLuc
*Bonjour Pierre.M*,
En mettant le code de JB dans 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 tester
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 utilise
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 prendre
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




Avatar
JB
Bonjour,

J'avais essayé mais l'état est imprimé 2 fois .

JB
On 6 mar, 07:00, JLuc wrote:
*Bonjour Pierre.M*,
En mettant le code de JB dans 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 test 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 utilise
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 prend 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 -






Avatar
JB
En ajoutant Cancel=True après l'impression, il semble que ce soit ok.


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 test 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 utilise
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 prend 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 -






Avatar
JLuc
JB avait soumis l'idée :
Bonjour,

J'avais essayé mais l'état est imprimé 2 fois .


C'est normal, puisque c'est avant l'impréssion que cet événement est
appelé. Il faut supprimer la ligne :
ActiveSheet.PrintPreview ' ou ActiveSheet.PrintOut




JB
On 6 mar, 07:00, JLuc wrote:
*Bonjour Pierre.M*,
En mettant le code de JB dans 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 tester
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 utilise
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 prendre
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 -



--
JLuc






Avatar
Pierre.M
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 ok.


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 test
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 utilise
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 prend
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 -








Avatar
JB
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 -








1 2 3