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 :

Macro MFC - problème protection [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 252
    Par défaut Macro MFC - problème protection
    Bonjour,

    J'ai une feuille qui comporte ce 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     
     
      If Not Intersect(Target, Range("AF6")) Is Nothing Then
        With Target
          Select Case Target.Value
            Case Is = "Rédaction"
              .Interior.ColorIndex = 16
            Case Is = "Mise en concurrence"
              .Interior.ColorIndex = 3
            Case Is = "Analyse"
              .Interior.ColorIndex = 45
            Case Is = "En cours"
              .Interior.ColorIndex = 43
            Case Is = "Terminé"
              .Interior.ColorIndex = 47
          End Select
        End With
      End If
     
     
    If Not Application.Intersect(Target, Range("AF6")) Is Nothing Then
    Range("AF141") = Range("AF6").Value
    Range("AF289") = Range("AF6").Value
    Range("AF452") = Range("AF6").Value
    Range("AF141").Interior.Color = Range("AF6").Interior.Color
    Range("AF289").Interior.Color = Range("AF6").Interior.Color
    Range("AF452").Interior.Color = Range("AF6").Interior.Color
    End If
     
     
    End Sub
    Il fonctionne parfaitement sauf quand je protège la feuille.
    En effet, j'ai un bug au niveau des .interior.colorindex suivant la valeur de AF6
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .Interior.ColorIndex = 16
    Comment faire pour contourner ce problème.

    PS : je suis débutant ...


    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 206
    Par défaut
    Bonjour,

    Tu peux ôter la protection de la feuille au début de ta macro puis la remettre à la fin de l'exécution avec les instructions Protect/Unprotect.

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 252
    Par défaut
    J'ai ajouté :

    au tout début et

    à la fin.

    Mais maintenant il bug à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("AF289") = Range("AF6").Value

  4. #4
    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
    Protège ta feuille comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Protect UserInterfaceOnly:=True
    Sinon, pour le 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
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     
    With Target
        If .Address(0, 0) = "AF6" Then
            Select Case .Value
                Case Is = "Rédaction": .Interior.ColorIndex = 16
                Case Is = "Mise en concurrence": .Interior.ColorIndex = 3
                Case Is = "Analyse": .Interior.ColorIndex = 45
                Case Is = "En cours": .Interior.ColorIndex = 43
                Case Is = "Terminé": .Interior.ColorIndex = 47
                Case Else: .Interior.ColorIndex = xlNone
            End Select
            Application.EnableEvents = False
            .Copy Range("AF141,AF289,AF452")
            Application.EnableEvents = True
        End If
    End With
    End Sub

  5. #5
    Membre éclairé
    Inscrit en
    Juillet 2010
    Messages
    252
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 252
    Par défaut
    Bonjour,


    J'ai dû bidouiller un peu le code mais ça fonctionne !

    Merci !

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

Discussions similaires

  1. [MFC] problème avec les insertions dans CComboBox
    Par Joeleclems dans le forum MFC
    Réponses: 12
    Dernier message: 11/06/2004, 15h31
  2. Réponses: 3
    Dernier message: 05/05/2004, 10h23
  3. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. [MFC] problème d'éxécution
    Par ben_iap dans le forum MFC
    Réponses: 2
    Dernier message: 15/03/2004, 10h31

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