Pas de couleur de fond de cellule a l'impression

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #4226651
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
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


Pierre.M
Le #4226631
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"
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
Le #4226581
http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, 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"


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 -



Pierre.M
Le #4226561
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"

http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, 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"


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 -





JLuc
Le #4226491
*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"

http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, 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"


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




JB
Le #4226421
Bonjour,

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

JB
On 6 mar, 07:00, 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 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"
http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, Pierre.M
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"
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 -






JB
Le #4226411
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
*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"
http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, Pierre.M
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"
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
Le #4226321
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
*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"
http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, 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"
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






Pierre.M
Le #4356541
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"
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
*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"
http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, Pierre.M
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"
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 -








JB
Le #4356431
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
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"


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
*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"
http://cjoint.com/?dfxuyRCt8h

JB

On 5 mar, 23:02, Pierre.M
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"
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 -








Publicité
Poster une réponse
Anonyme