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

Macros et VBA Excel Discussion :

code evenementiel changement de couleur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut code evenementiel changement de couleur
    bonjour le forum
    existe t il un code évènementiel qui agirai lors d un changement de couleur du texte d'une cellule ou du fond de la cellule?
    Merci

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    Réponse : Non.
    De plus une modification de couleur n'active aucun événement de feuille, donc pas possible d'employer une astuce pour y arriver.
    A+

  3. #3
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Ce code fonctionne mais uniquement si la modification de couleur est générée par l'utilisateur

    Code à coller au niveau de la feuille a surveiller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public StrAddresse As String
    Public StrValeur As String
     
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If StrAddresse <> "" Then
           If StrValeur <> Range(StrAddresse).Interior.Color Then MsgBox "Modification de la cellule"
    End If
    StrValeur = Target.Interior.Color
    StrAddresse = Target.Address
     
    End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    Bonjour,

    Ton code marche bien, merci.
    deux petites questions (enfin, une petite et une grande) :

    Étant débutant, dans ton code tu utilises deux IF et un seul END IF. je pensais que l on ne pouvait pas. Peut tu m'expliquer?

    J ai essayé de modifier ton code pour l adapter à mon problème, pour le cibler à une colonne particulière, et uniquement a 2 couleurs particulières (comme indiqué dans les msgbox du code ci dessous).
    Dans mon code final, selon la couleur, il mettra en place des formules différents dans d autre cellule, mais avant je veux bien comprendre.
    ce que j ai fait ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
        If StrAddresse <> "" Then
     
    For Each c In Range("A1", "A" & Range("A65535").End(xlUp).Row)
     
           If StrValeur <> Range(StrAddresse).Interior.Color Then MsgBox "Modification de la cellule de noir en rouge"
        Else: MsgBox "vous avez modifié de rouge en noir"
        Else: MsgBox "cette couleur n'est pas autorisé"
            End If
    Next
         End If
     
    StrValeur = Target.Interior.Color
    StrAddresse = Target.Address
     
     
    End Sub
    merci pour ton aide

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    le ne nécessite pas un end if

    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if machin then
         truc
    else
         toto
    end if
    end if obligatoire
    le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if machin then
         truc
    end if
    end if aussi obligatoire

    regarde déjà cela dans ton bout de code qui ne marchera pas certainement
    à 1 seul if, 1 seul else
    regarde aussi le elseif
    reformule ta question

    pour faire le test seulement sur la colonne, regarde du côte Target.Column

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Tu n'es pas obligé de mettre end if si tout est écrit sur la meme ligne

    Ce code t'oblige a mettre une couleur rouge ou noir si tu te trouve pas la colonne A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Public rngAdresse As Range
    Public lngCouleur As Long
    Dim Bolretour As Boolean
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    If rngAdresse Is Nothing Then Set rngAdresse = Target
     
        If rngAdresse.Column = 1 And Bolretour = True Then
     
     
            'Test si la couleur est autorisé
                Select Case rngAdresse.Interior.Color
                    Case 0, 255
                        If lngCouleur <> rngAdresse.Interior.Color Then
                            MsgBox "vous avez modifié de rouge en noir"
                        End If
                        rngAdresse = Target
                      Case Else
                        MsgBox "cette couleur n'est pas autorisé"
                        Bolretour = False
                        rngAdresse.Select
                        Exit Sub
                End Select
     
        Else
            Bolretour = True
     
        End If
     
    Set rngAdresse = Target
    lngCouleur = Target.Interior.Color
     
    End Sub

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Par défaut
    re
    merci mais...

    j ai un peu de mal et je ne vois pas comment l adapter a ce que je veux faire donc je vais vous reexpliquer par rapport a mon problème réel (j aurai certainement du le faire dés le debut,)

    Voila j ai un premier code:

    Ce code évènementiel adapte, au changement de la cellule $B$4, une formule dans les cellules ("V15", "V" & Range("C65535").End(xlUp).Row) selon la couleur du texte des cellules(C15 : "C" & Range("C65535").End(xlUp).Row)) .
    Quand je change B4 si les noms dans la colonne C est écrit en rouge une formule en V de la même ligne va calculer un abattement de "B4"%
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    'calcul selon 2 formules différentes et selon couleur de C
     
    Private Sub Worksheet_Change(ByVal target As Range)
     
    If target.Address = Range("B4").Address Then
            For Each c In Range("V15", "V" & Range("C65535").End(xlUp).Row)
        If Range("C" & c.Row).Font.ColorIndex = 3 Then
        c.FormulaLocal = "=ARRONDI((H" & c.Row & "/100*(U" & c.Row & "-(U" & c.Row & "*$B$4/100)));0)"
        Else
        c.FormulaLocal = "=ARRONDI(H" & c.Row & "/100*U" & c.Row & ";0)"
        End If
             Next
    End If
     
    End Sub
    Il marche très bien dans le cas d une modification de B4.

    Maintenant imaginons que je change la couleurs de texte d une des cellules (C15 : "C" & Range("C65535").End(xlUp).Row)) ;
    deux solutions par exemple:
    - le texte de c17 passe de Rouge en Noir alors V17 appliquerai la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormulaR1C1 = "=ROUND(RC[-14]/100*RC[-1],0)"
    - le texte C17 passe de noir en rouge alors V17 doit appliquer cette formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormulaR1C1 ="=ROUND((RC[-15]/100*(RC[-1]-(RC[-1]*R4C2/100))),0)"
    j espère que je suis clair, enfin pour moi mais je désespère pas
    Merci pour l'aide

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/01/2007, 21h14
  2. Changement de couleur d'un libellé sur OnClick
    Par maysa dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/11/2005, 15h29
  3. CSS Pas de changement de couleur quan on clique sur un lien
    Par pmboutteau dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 16/08/2005, 10h15
  4. Changement de couleur de police sur une partie d'un caption
    Par kobe dans le forum Composants VCL
    Réponses: 3
    Dernier message: 11/07/2005, 10h18
  5. Changement de couleur quand j'affiche du texte...
    Par MaxPayne dans le forum OpenGL
    Réponses: 3
    Dernier message: 10/12/2004, 13h55

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