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

Couleur sur une feuiile inactive

4 réponses
Avatar
Alf
Bonjour =C3=A0 tous,
Ma macro effectue un traitement sur la feuil1 et en m=C3=AAme temps =C3=A9c=
rit des donn=C3=A9es sur la feui2.
La feuil1 est active.
Comment colorier des cellules de la feuil2 sans l'activer ?

Merci pour votre aide
Alf

4 réponses

Avatar
MichD
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
Avatar
MichD
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
Avatar
MichD
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
Avatar
Alf
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