Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Macro évènementielle

flodumur

XLDnaute Nouveau
Bonjour, je cherche à réaliser une macro évènementielle où lorsque ma case B2 passe à la valeur 4, ma case A20 change de couleur et la case à cocher numéro 2 reste désactivée.

Est-il possible de faire cela comme ceci ?
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If ShData.Cells(2, 2) = 4 Then
        ShData.Cells(20, 1).Interior.ColorIndex = 3
        CheckBox2.Enabled = False
    End If
End Sub

Merci à vous
 

jmfmarques

XLDnaute Accro
Bonjour
1) C'est quoi, ShData ?
J'imagine bien sûr qu'il s'agit d'un objet WorkSheet, mais ignore où et comment tu l'as déclaré et initialisé.
2) le paramètre Target de la procédure évènementielle Worksheet_Change est précisément l'objet range dont on modifie la valeur. C'est tout simplement lui, dont on doit s'assurer qu'il est bien concerné (on ne le redéfinit pas par Cells(2, 2) et si oui : que sa propriété Value est bien = 4
 

flodumur

XLDnaute Nouveau
Tout d'abord merci à tous pour vos réponses.

Je vous mets en copie une partie de mon fichier de travail. J'ai mis en commentaire ce que je cherche à faire.

Est-il possible de réaliser ceci sur des cases contenant des formules (exemple : ligne 2 à 7)

Merci à vous
 

Pièces jointes

  • Book1.xlsm
    33.7 KB · Affichages: 4
Dernière édition:

flodumur

XLDnaute Nouveau
Je m'excuse, je ne suis pas clair. j'ai mis les commentaires dans le programme

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
'Faire une boucle sur chaque ligne de la ligne 1 à la ligne 7
    If Target.Address = "$B$1" Then
        'Si B1 + D1 + F1 + H1 + J1 + L1 + N1 = 7
        If Target.Value = 1 Then
            'Colorier la ligne 1 en rouge
            Range(Cells(1, 1), Cells(1, 18)).Interior.ColorIndex = 3
            'Déselectionner le checkbox en bout de ligne 1
            CheckBox18.Enabled = False
            [R1] = False
        Else
            'Colorier la ligne 1 en blanc
            Range(Cells(6, 1), Cells(6, 18)).Interior.ColorIndex = 0
            'Ne pas changer le statut du checkbox en bout de ligne 1
        End If
    End If
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Non, ça je ne sais pas faire car la MFC est faite sur toute la plage A1:N7.
Ou alors il faudrait créer une MFC par ligne, et là ça devient une usine à gaz.
D'autant que c'est un domaine que je n'ai jamais touché en VBA.
 

Discussions similaires

Réponses
13
Affichages
298
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…