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 :

MFC avec VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Par défaut MFC avec VBA
    Bonjour à vous tous.
    Voici mon problème. Je cherche à adapter mon code pour la mise en forme conditionnelle pour que les colonnes C et D se mettent à jour automatiquement, Puisque ces colonnes sont des colonnes avec des formules.
    Voici un exemple.
    Cellule A2= 2
    Cellule B2= 11
    Cellule C2= = A2+B2= 12, donc la couleur devrait être rouge. Jusqu'à là, ça fonctionne. Mais si je retourne dans la cellule B2
    et que je change le chiffre 11 pour 0, la couleur devrait être vert, mais elle ne change pas.
    Voici mon code
    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
    Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    Dim Rg As Range 
    Set Rg = Intersect(Target, Union(Range("c2:c23"), Range("d2:d23"))) 
    If Not Rg Is Nothing Then 
        For Each c In Rg 
            With c 
                Select Case Target.Value 
                    Case Is >= 12 
                        .Interior.ColorIndex = 3 
                    Case Is >=7 
                        .Interior.ColorIndex = 46 
                    Case Is >= 5 
                        .Interior.ColorIndex = 6 
                    Case Is >= 0 
                        .Interior.ColorIndex = 10 
                End Select 
            End With 
        Next 
    End If 
    End Sub
    Voici un exemple de mon fichier
    http://cjoint.com/?fmv6NhOAEL

    Merci de votre aide
    Marc

  2. #2
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 30
    Par défaut MFC avec VBA
    Bonsoir. Oubliez mon premier message, voici une explication plus claire.
    J'ai la colonne D et la colonne G qui sont des colonnes de couleur.
    Les 2 suivent les même code de couleur.
    La colonne D est la multiplication de la colonne B et C.
    La colonne G, est le résultat de la colonne D et la colonne F.
    Mon code ne fonctionne uniquement que pour la première colonne (la colonne
    D)
    Voici mon code:


    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
    Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
    Dim Rg As Range 
    Dim formulaCell As Range 
    Set Rg = Intersect(Target, Union(Cells(1, "b").EntireColumn, Cells(1, 
    "c").EntireColumn)) 
    If Not Rg Is Nothing Then 
        For Each c In Rg 
            Set formulaCell = Cells(c.Row, "d") 
            Select Case formulaCell.Value 
                Case Is >= 12 
                    formulaCell.Interior.ColorIndex = 3 
                Case Is >= 7 
                    formulaCell.Interior.ColorIndex = 46 
                Case Is >= 5 
                    formulaCell.Interior.ColorIndex = 6 
                Case Is >= 0 
                    formulaCell.Interior.ColorIndex = 10 
            End Select 
        Next 
    End If 
    End Sub
    Il faut aussi que la colonne G change en même temps que tu modifies la colonne F ou D.
    Merci de m'aider.
    Marc

  3. #3
    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,
    A première vue... Tu te trompe d'événement, met plutôt ton code dans l'événement...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     
    End Sub
    Celui que tu emploi n'est activer que quand on change de feuille.
    De plus, l'événement est généré quand tu ENTRE sur la cellule et non quand tu en sort.
    De ce fait il faudrait modifié ton code
    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Lig As Long, i As Integer
    Static AncAdd As String, AncCel
        If Target.Count > 1 Then Exit Sub
        If AncAdress <> "" Then  'pour 1ère initialisation.
            If Range(AncAdd).Column = 2 Or Range(AncAdd).Column = 3 Then
            Select Case AncCel
                Case Is >= 12
                    Range(AncAdd).Interior.ColorIndex = 3
                Case Is >= 7
                    Range(AncAdd).Interior.ColorIndex = 46
                Case Is >= 5
                    Range(AncAdd).Interior.ColorIndex = 6
                Case Is >= 0
                    Range(AncAdd).Interior.ColorIndex = 10
            End Select
            End If
        End If
        AncAdd = Target.Address
        AncCel = Target.Value2
    End Sub
    Faudra peut-être changer les adresses !
    Cette façon de faire ne nécessite pas de repasser toute les colonnes, dés que tu quitte une cellule elle est mise à jour.

    A+

Discussions similaires

  1. [XL-2003] Plus de 3 MFC avec VBA
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/01/2015, 18h45
  2. [XL-2003] Problème copier coller avec MFC et VBA
    Par bbcancer dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/11/2011, 10h11
  3. afficher la barre de menus complète avec vba
    Par jejestyle dans le forum Access
    Réponses: 7
    Dernier message: 07/09/2006, 18h07
  4. Créer un formulaire avec VBA ?
    Par Jean Bonnisme dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/10/2004, 10h40
  5. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 13h15

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