Mettre en forme une cellule donnée selon la cellule active

Fermé
Swift06 - 15 avril 2015 à 22:25
 Swift06 - 16 avril 2015 à 18:00
Bonjour,

Je voudrais savoir si c'est possible de réaliser l'action suivante sur excel 2010.

Si je sélectionne une cellule de la colonne F je veux que la cellule F8 soit mise en forme par exemple fond bleu.
Si je sélectionne une cellule de la colonne G je veux que la cellule G8 soit mise en forme.
Si je sélectionne une cellule de la colonne H je veux que la cellule H8 soit mise en forme. Etc.

Je ne veux pas conserver la mise en forme, je veux qu'elle s'efface lorsque je change de colonne.

Merci de m'aider!


3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 716
15 avril 2015 à 22:46
Bonjour,

Ce que tu demandes est possible avec du VBA mais il faut voir toutes les conditions car si par exemple tu fermes après avoir cliqué sur F, la remise de ta mise en forme doit se faire si tu sauvegardes. Si une seule possibilité est oubliée tu vas barioler ton classeur.
0
Peux tu me donner un aperçu de ce que ça aura l'air en VBA ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 716
15 avril 2015 à 23:08
Cela peut donner ceci à mettre dans Thisworkbook
Option Explicit
Public pos As String
Public clf As Long

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If pos <> "" Then Range(pos).Interior.Color = clf
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal sel As Range)
    If sel.Count > 1 Then Exit Sub
    If pos <> "" Then Range(pos).Interior.Color = clf
    pos = sel.Address
    clf = sel.Interior.Color
    sel.Interior.Color = 14470546
End Sub

Chaque cellule sélectionnée est colorée.
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 525
15 avril 2015 à 22:53
Bonjour,

Une proposition avec mémorisation dans A1 de l'adresse de la dernière cellule colorée .
https://www.cjoint.com/c/EDpxdPgg7qA

A+
0
C'est exactement ça sauf que quand j'exécute la procédure dans mon fichier ça ne fonctionne pas et j'obtiens l'erreur suivante :

Erreur d'exécution '1004' :
La méthode 'Range de l'objet'_Worksheet a échoué


Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Columns("F:H")) Is Nothing Then
Range(Range("A1")).Interior.ColorIndex = xlNone
Cells(8, Target.Column).Interior.ColorIndex = 23
Range("A1") = Cells(8, Target.Column).Address
End If
End Sub
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 525 > Swift06
16 avril 2015 à 15:17
Bonjour,

Vérifie que la cellule A1 contient une adresse du type $F$8.
Dans le cas contraire, fais la saisie initiale de cette adresse.

A+
0
Ok merci ça fonctionne.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 256
15 avril 2015 à 23:19
Bonjour à tous,

ou bien avec une MFC (+ 1 ligne de code car Cellule() n'est pas volatile).
https://www.cjoint.com/c/EDpxGgmv7fW
Comme ça tu as l'embarras du choix :-)

eric
0