Couleur sur une feuiile inactive

Le
Alf
Bonjour à tous,
Ma macro effectue un traitement sur la feuil1 et en même temps éc=
rit des données sur la feui2.
La feuil1 est active.
Comment colorier des cellules de la feuil2 sans l'activer ?

Merci pour votre aide
Alf
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
MichD
Le #26555520
Le 25/10/20 à 08:20, Alf a écrit :
Bonjour à tous,
Ma macro effectue un traitement sur la feuil1 et en même temps écrit des données sur la feui2.
La feuil1 est active.
Comment colorier des cellules de la feuil2 sans l'activer ?
Merci pour votre aide
Alf


Bonjour,
Cela ressemble à ceci :
'-------------------------------------
Sub test()
With Worksheets("Feuil2")
.Range("A1:K1").Interior.Color = vbRed
'Ou
.Range("A2:G5").Interior.Color = RGB(125, 125, 254)
'Chaque paramètre de la fonction RGB peut prendre la valeur
'de 0 à 255
'OU
.Range("A3").Interior.ColorIndex = 56
'Valeur de 0 à 56
'Pour colorer le texte
With .Range("A1")
.Font.Color = vbWhite
.Bold = True
End With
'Les 2 autres méthodes sont aussi possibles.
End With
End Sub
'-------------------------------------
MichD
MichD
Le #26555519
Le 25/10/20 à 12:29, Alf a écrit :
Le dimanche 25 octobre 2020 à 13:48:23 UTC+1, MichD a écrit :
Le 25/10/20 à 08:20, Alf a écrit :
Bonjour à tous,
Ma macro effectue un traitement sur la feuil1 et en même temps écrit des données sur la feui2.
La feuil1 est active.
Comment colorier des cellules de la feuil2 sans l'activer ?
Merci pour votre aide
Alf

Bonjour,
Cela ressemble à ceci :
'-------------------------------------
Sub test()
With Worksheets("Feuil2")
.Range("A1:K1").Interior.Color = vbRed
'Ou
.Range("A2:G5").Interior.Color = RGB(125, 125, 254)
'Chaque paramètre de la fonction RGB peut prendre la valeur
'de 0 à 255
'OU
.Range("A3").Interior.ColorIndex = 56
'Valeur de 0 à 56
'Pour colorer le texte
With .Range("A1")
.Font.Color = vbWhite
.Bold = True
End With
'Les 2 autres méthodes sont aussi possibles.
End With
End Sub
'-------------------------------------
MichD

Merci MichD pour ta réponse.
J'avais essayé avec cette formule
Worksheets("Feuil2").Range(Cells(NLig, 1), Cells(NLig, 16)).Interior.Color = vbRed
Pourquoi faut il obligatoirement utiliser le Range("A1:A16") ?
Merci pour les éclaircissements
Alf


Les "Range" que j'ai donnés sont des exemples. Tu peux définir ces
"Range" comme tu le désires.
Si ta ligne de code ne fonctionne pas, c'est que la syntaxe n'est pas
bonne. Voici ce que tu aurais dû écrire (tout sur la même ligne)
Worksheets("Feuil2").Range(Worksheets("Feuil2").Cells(Nlig, 1),
Worksheets("Feuil2").Cells(Nlig, 16)).Interior.Color = vbRed
Si cette ligne de code est dans un module feuille, tous les objets
"Cells" ou "Range" doivent être précédés par l'identification de la
feuille que tu désires. Si une telle identification n'est pas spécifiée,
ces objets "Range" ou "Cells" sont réputés appartenir à la feuille où le
code est inscrit.
Quand tu es dans un module standard, les objets "Cells" et "range" sans
identification de la feuille auxquels ils appartiennent, ils sont
réputés à la feuille active au moment de l'exécution de la ligne de code.
Si tu apprends à programmer en utilisant le type de syntaxe que
j'utilise, elle fonctionne à tout coup, peu importe où tu as écrit la
ligne de code. Cela est plus court à écrire et plus facile à lire!
MichD
MichD
Le #26555518
J'ai omis l'exemple de ton code dans une nouvelle syntaxe :
With Worksheets("Feuil2")
with .Range(.Cells(Nlig, 1),.Cells(Nlig, 16)
.Interior.Color = vbRed
end with
End with
Observe les "." devant les expressions "Range" et "cells" afin de
spécifier qu'ils appartiennent vraiment à la feuille "Feuil2".
MichD
Alf
Le #26555517
Le dimanche 25 octobre 2020 à 19:37:19 UTC+1, MichD a écrit  :
J'ai omis l'exemple de ton code dans une nouvelle syntaxe :
With Worksheets("Feuil2")
with .Range(.Cells(Nlig, 1),.Cells(Nlig, 16)
.Interior.Color = vbRed
end with
End with
Observe les "." devant les expressions "Range" et "cells" afin de
spécifier qu'ils appartiennent vraiment à la feuille "Feuil2".
MichD

Ok tout est clair.
Merci encore
Poster une réponse
Anonyme