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

Swift06 -  
 Swift06 -
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

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
    1. Swift06
       
      Peux tu me donner un aperçu de ce que ça aura l'air en VBA ?
      0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      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
  2. Gyrus Messages postés 3360 Statut Membre 526
     
    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
    1. Swift06
       
      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
      1. Gyrus Messages postés 3360 Statut Membre 526 > Swift06
         
        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
    2. Swift06
       
      Ok merci ça fonctionne.
      0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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