Bonjour,
J'ai cherché (peut être mal), mais n'ai pas trouvé de réponse à mon pb malgré les formidables pages de developpez.com expliquant le VBA.
Je veux recréer le fonctionnement de la macro native "reproduire la mise en forme" mais modifié de la façon suivante :
1- on clique dans une cellule qui possède une couleur de remplissage donnée,
2- je lance ma macro et
3 - lorsqu'on clique dans une autre cellule :
la cellule de départ n'est plus colorée et
la cellule d'arrivée est mise en couleur avec celle
qu'avait la cellule de départ
Actuellement je ne suis pas arrivé à transmettre la couleur de départ, j'utilise donc une couleur fixée.
Ma procédure (dans un module) :
L'évènement dans ThisWorkbook:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Public Sub CopieMizFormeCouleur() 'travaille avec Workbook_SheetSelectionChange dans ThisWorkBook, permet de ne pas écrire une Sub dans chaque feuille Cell = ActiveCell.Address 'la cellule de départ ' ColorIndex toujours = à 36 (pour le moment) 'x = -4142 => incolore, x = 36 => jaune pâle x = ActiveCell.Interior.ColorIndex 'on récupère donc l'index de la couleur de la cellule de départ, 'utile qd je saurai passer x à Workbook_SheetSelectionChange(si possible) Application.EnableEvents = True 'on déverrouille Private Sub Workbook_SheetSelectionChange(ByVal Target As Range) 'est remis à "true" en fin de Sub Worksheet_SelectionChange Range(Cell).Interior.ColorIndex = -4142 'la cellule de départ est mise incolore 'qd on clique dans une autre cellule le fond est mis en jaune pâle par Workbook_SheetSelectionChange End Sub
C'est peut être trivial, mais je sèche ou je suis passé à coté d'une notion ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 'permet de sortir de la procédure si plus d'une cellule est sélectionnée '(sinon la suite de la macro renvoie un message d'erreur) If Target.Count > 1 Then Exit Sub ' MsgBox "Vous avez sélectionné la cellule " & Target.Address & _ ' " dans la feuille nommée " & Sh.Name Target.Interior.ColorIndex = 36 ' jaune pâle Application.EnableEvents = False 'on remet à False car la macro CopieMizFormeCouleur est terminée End Sub
Merci de me lire et de me guider si possible.
Cordialement.
--
Plouf69
Partager