IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Colorier une cellule en fonction de l'activecell [XL-2007]


Sujet :

Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 69
    Points
    69
    Par défaut Colorier une cellule en fonction de l'activecell
    Bonjour,

    Je cherche à colorier une cellule en fonction de la cellule active.
    J'ai un tableau :
    Colonne B ou figure une liste d'article
    Colonne C la somme de la ligne de D à AH
    et les colonne de D à AH qui représente les 31 jours du mois dans lequel j'entre le prix des articles acheté.
    J'ai fixé les colonne ABC ainsi que la première ligne.
    Ce qui serai pratique pour la saisie des prix est que lorsque je me trouve dans la cellule L87, le nom de l'article en B87 soit colorié en jaune et lorsque je me déplace avec soit les flèches du clavier soit en cliquant ailleurs, par exemple P89 est bien que la cellule B87 ne soit plus en jaune mais que ce soit la B89 car je suis la ligne 89.

    J'ai lu plusieurs forum avec des informations sur Worksbook_sheets ou Activecell ou ColorIndex mais je n'arrive pas à les manipuler.

    Il me faudrait une macro :
    1) Qui s'auto-active lorsque la position de la cellule active change (par les flèches ou un clic de la sourie)
    2) qui sélectionne les cellules de B2 à B93 pour qu'il n'y ai aucune couleur de fond
    3) Qui donne la couleur de fond jaune à la cellule de la colonne B de la ligne de la cellule active
    4) end sub

    Cela est peut-être faisable avec une mise en forme conditionnelle ?

    Merci pour votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Salut,

    tu peux faire cela avec du VBA.

    L'evenement serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    Le code pour mettre dans une couleur la colonne B de ta ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheet.Cells(Target.Row,2).Interior.Color = RGB(255,0,0)
    Reste a toi de faire le 'nettoyage' des autres cellules =)
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une solution en combinant la mise en forme conditionnelle et la procédure événementielle Worksheet_SelectionChange
    Exemple qui mettra en forme la cellule de la colonne B de la ligne sélectionnée
    1) Tu crées un nom ActiveCell qui fait référence à une cellule quelconque et tu lui donnes une portabilité Feuille (feuille sur laquelle se trouve ta liste)
    2) Tu sélectionnes les cellules de la colonne B sans la première ligne (titre) et tu vas dans l'outil Mise en forme conditionnelle où tu sélectionnes la règle Utiliser une formule pour déterminer pour quelles cellules le format sera appliqué et tu places cette formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =LIGNE()=LIGNE(ActiveCell)
    Ensuite tu sélectionnes le format souhaité
    3) Tu vas dans le module de la feuille où se trouve la liste et tu colles ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Me.Names("ActiveCell").RefersTo = "=" & Target.Address(external:=True)
    End Sub
    Tu peux également appliquer une mise en forme conditionnelle su la première ligne des colonnes D à AH en plaçant cette formule après avoir sélectionné au préalable les cellules $D$1:$AH$1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =colonne()=colonne(ActiveCell)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2011
    Messages : 66
    Points : 69
    Points
    69
    Par défaut
    Encore merci

    Je viens de trouver mon erreur
    Il ne faut pas nommer la cellule ActiveCell mais autrement sinon cela créé un conflit dans le code
    Me.Names("ActiveCell").RefersTo = "=" & Target.Address(external:=True)

    En nommant la plage Testa (ou autre chose) et en changeant le code en
    Me.Names("Testa").RefersTo = "=" & Target.Address(external:=True)

    Cela fonctionne parfaitement

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je viens de trouver mon erreur
    Il ne faut pas nommer la cellule ActiveCell mais autrement sinon cela créé un conflit dans le code
    Me.Names("ActiveCell").RefersTo = "=" & Target.Address(external:=True)
    Je teste toutes les réponses que je donne et je peux t'assurer que cela fonctionne avec une cellule nommée ActiveCell avec comme portabilité la feuille où elle se trouve (ici Feuil2).

    Comme le montre cette illustration où j'ai sélectionné la cellule F7. La zone des noms prouve que le nom ActiveCell est bien la cellule active (F7) on peut constater que la MFC fonctionne (Cellule B7 en jaune et cellule F1 en rouge) et la boîte de dialogue du gestionnaire de noms témoigne du fait que le nom ActiveCell fait bien référence à la cellule F7 de la feuille nommée [Feuil2] et est bien de portabilité Feuille sur Feuil2 (Voir colonne étendue).

    Nom : 150514 MFC ActiveCell.jpg
Affichages : 922
Taille : 211,7 Ko

    Le classeur joint te permettra de le constater également
    Fichiers attachés Fichiers attachés
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 24/03/2015, 13h51
  2. [XL-2010] Colorier une cellule en fonction de critéres multiples
    Par diomedea dans le forum Excel
    Réponses: 6
    Dernier message: 11/12/2014, 18h09
  3. [XL-2007] Colorier une cellule en fonction du resultat d une formule
    Par facteur dans le forum Excel
    Réponses: 5
    Dernier message: 10/06/2014, 16h35
  4. colorier une cellule en fonction de l'utilisateur qui l'a modifiée
    Par rugbyman dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/02/2012, 01h23
  5. colorier une cellule en fonction de plusieurs conditions
    Par antoine2933 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/07/2011, 12h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo