Microsoft 365 Changement de couleurs de cellules dans plusieurs feuilles suite à une modification

lolo_excelbeginner

XLDnaute Nouveau
Bonjour à tous,

J'essaye d'écrire une macro qui me permettrait de modifier la couleur d'une cellule dans plusieurs feuilles après avoir modifié sa couleur manuellement(
1678282250005.png
) en feuill1.
De plus j'ai écris quelques ligne pour conserver les bordures de cellules dans le cas d'un changement de couleur d'une sélection de cellules.

J'ai écris le code suivant mais il ne fonctionne pas... Pouvez-vous m'aider et m'expliquer mon erreur ?

Sub Worksheet1_ManualChange(ByVal Target As Range)
couleur = Selection.Interior.Color
adresse = Selection.Address
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = -0.15
.Weight = xlThin
End With
Feuil3.Range(adresse).Interior.Color = couleur
With Feuil3.Range(adresse).Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = -0.149998474074526
.Weight = xlThin
End With
Feuil4.Range(adresse).Interior.Color = couleur
With Feuil4.Range(adresse).Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = -0.15
.Weight = xlThin
End With
End Sub

Merci d'avance à tous.

Cordialement,

LOLO
 

Pièces jointes

  • test.xlsm
    18.3 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour lolo_excelbeginner,
Etes vous sur que "Worksheet1_ManualChange" soit une macro événementielle ?
Perso, j'en doute.
Une liste surement exhaustive des événementielles est ici : Lien
Je ne connais aucune fonction qui permettrait de faire ce que vous voulez faire. Sauf une astuce à trouver.
 

lolo_excelbeginner

XLDnaute Nouveau
Bonjour lolo_excelbeginner,
Etes vous sur que "Worksheet1_ManualChange" soit une macro événementielle ?
Perso, j'en doute.
Une liste surement exhaustive des événementielles est ici : Lien
Je ne connais aucune fonction qui permettrait de faire ce que vous voulez faire. Sauf une astuce à trouver.
Bonjour sylvanu,
Merci de ta réponse!!
En effet, belle erreur de ma part.

Cela fonctionne (presque) avec SelectionChange.

Sub Worksheet_SelectionChange(ByVal Target As Range)
couleur = Selection.Interior.Color
adresse = Selection.Address
Borders Selection
Feuil3.Range(adresse).Interior.Color = couleur
Borders Feuil3.Range(adresse)
Feuil4.Range(adresse).Interior.Color = couleur
Borders Feuil4.Range(adresse)
End Sub

Private Sub Borders(Slct As Range)
With Slct.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = -0.15
.Weight = xlThin
End With
With Slct.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ThemeColor = 1
.TintAndShade = -0.15
.Weight = xlThin
End With
End Sub

Malheureusement je récupère (logiquement) l'ancienne couleur, celle au moment où je sélectionne les cellules. Et comme je modifie la couleur après cela ne fonctionne pas.
J'avoue ne pas avoir trop d'idées pour remédier à cela...
Si quelqu'un en a une je suis preneur !


Merci d'avance !

CDT LOLO
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si quelqu'un en a une je suis preneur !
Un truc qui risque de ne pas vous plaire ... mais qui marche. ;)
On modifie une cellule avec une couleur, puis on appuie sur la touche "²" pour dupliquer la mise en forme.
Une démo en PJ avec :
Dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
    Application.OnKey "²", Procedure:="MiseEnForme"
End Sub
Dans un module :
Code:
Sub MiseEnForme()
    couleur = ActiveCell.Interior.Color
    adresse = ActiveCell.Address
    Range(adresse).Offset(0, 5).Interior.Color = couleur
    With Range(adresse).Offset(0, 5).Borders
        .LineStyle = xlContinuous
        .Weight = xlThick
        .Color = vbBlue
    End With
End Sub
Evidemment ce n'est qu'un exemple démonstratif, hors votre mise en forme de votre fichier.
Quand on appuie sur la touche "²" alors on exécute la macro donnée dans la ligne :
Procedure:="MiseEnForme"
 

Pièces jointes

  • Classeur2 (Enregistré automatiquement).xlsm
    15.2 KB · Affichages: 2

lolo_excelbeginner

XLDnaute Nouveau
Un truc qui risque de ne pas vous plaire ... mais qui marche. ;)
On modifie une cellule avec une couleur, puis on appuie sur la touche "²" pour dupliquer la mise en forme.
Une démo en PJ avec :
Dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
    Application.OnKey "²", Procedure:="MiseEnForme"
End Sub
Dans un module :
Code:
Sub MiseEnForme()
    couleur = ActiveCell.Interior.Color
    adresse = ActiveCell.Address
    Range(adresse).Offset(0, 5).Interior.Color = couleur
    With Range(adresse).Offset(0, 5).Borders
        .LineStyle = xlContinuous
        .Weight = xlThick
        .Color = vbBlue
    End With
End Sub
Evidemment ce n'est qu'un exemple démonstratif, hors votre mise en forme de votre fichier.
Quand on appuie sur la touche "²" alors on exécute la macro donnée dans la ligne :
Procedure:="MiseEnForme"

Merci de ta réponse, effectivement dommage que l'on puisse faire ça avec "²" et pas le CellFillColorPicker...


CDT LOLO
 

Discussions similaires

Réponses
8
Affichages
708

Statistiques des forums

Discussions
312 818
Messages
2 092 376
Membres
105 382
dernier inscrit
sieurcieur