XL 2019 Activer une macro lorsqu'une cellule change de valeur automatiquement

Sod2

XLDnaute Nouveau
Bonjour,

Je bloque sur un problème.

J'ai un code qui fait apparaitre des images en fonction des valeurs dans des cases (If Answer_1.Address = "$BQ$75" Then par exemple) mais cela ne marche pas quand la case fait elle meme reference à une autre case ( qui elle même est une somme de plusieurs cases)

Comment faire en sorte que cela se fasse automatiquement ?

Est ce que je dois rajouter un code quelque part ? par chaque If Answer ? Est ce que je dois parler des antécédents ? Est ce que je dois changer la forme du code en utilisant une autre condition ?

Pouvez vous m'expliquer la marche à suivre svp, tout marchait bien jusqu'à ce que je bloque sur ce problème ... :(

Je vous remercie.

VB:
Private Sub Worksheet_Change(ByVal Answer_1 As Range)

If Answer_1.Address = "$BQ$75" Then
        Select Case Answer_1.Value
            Case Is = 0
                ActiveSheet.Shapes("Dos").Visible = False
            Case Is >= 1
                ActiveSheet.Shapes("Dos").Visible = True
         End Select

         End If

If Answer_1.Address = "$BQ$77" Then
        Select Case Answer_1.Value
            Case Is = 0
                ActiveSheet.Shapes("Epaule").Visible = False
            Case Is >= 1
                ActiveSheet.Shapes("Epaule").Visible = True
         End Select
End If

If Answer_1.Address = "$BQ$79" Then
        Select Case Answer_1.Value
            Case Is = 0
                ActiveSheet.Shapes("Doigt").Visible = False
            Case Is >= 1
                ActiveSheet.Shapes("Doigt").Visible = True
         End Select
End If

If Answer_1.Address = "$BQ$81" Then
        Select Case Answer_1.Value
            Case Is = 0
                ActiveSheet.Shapes("Poignet").Visible = False
            Case Is >= 1
                ActiveSheet.Shapes("Poignet").Visible = True
         End Select
 
Solution
Les images sont corrélées aux cellules puisqu'on prend un nom de Shape différent, donné par N, pour chaque cellule. BQ75 n'est que la 1ère appliquée pour N = 1, les suivantes sont chaque fois décalées de 2 lignes par Set Cel = Cel(3, 1). Si plus clair vous pouvez préférer Set Cel = Cel.Offset(2, 0)

Voulez vous me préciser dans quel cas les images doivent être visibles, parce que ce n'est peut être pas exactement ce qui ressortait de ce que vous aviez programmé. Y a-t-il bien des cas ou l'image doit rester visible ou invisible telle qu'elle l'est au moment du test ?
Quelle formule y a-t-il dans ces cellules ?
Et rappelez vous qu'on ne peut pas savoir quelle est celle qui change de valeur puisque c'est par évaluation de formules qui ne...

Dranreb

XLDnaute Barbatruc
Bonsoir.
Essayez comme ça :
VB:
Private Sub Worksheet_Calculate()
   Dim Cel As Range, N As Byte, V As Double
   Set Cel = Me.[BQ75]
   For N = 1 To 4
      V = Cel.Value
      If Abs(V - 0.5) >= 0.5 Then Me.Shapes(Choose(N, "Dos", _
         "Epaule", "Doigt", "Poignet")).Visible = V >= 1
      Set Cel = Cel(3, 1)
      Next N
   End Sub
Remarque: Si cet hystérésis du caractère visible inchangé pour les valeur de V < 1 et <> 0 était involontaire, on peut faire plus simple.
Et je viens de voir que si ce n'est pas un hystérésis dans la mesure ou il devrait aussi demeurer en l'état pour les valeurs négatives, c'est un peu plus compliqué, en tout cas différent …
 
Dernière édition:

Sod2

XLDnaute Nouveau
Bonsoir.
Essayez comme ça :
VB:
Private Sub Worksheet_Calculate()
   Dim Cel As Range, N As Byte, V As Double
   Set Cel = Me.[BQ75]
   For N = 1 To 4
      V = Cel.Value
      If Abs(V - 0.5) >= 0.5 Then Me.Shapes(Choose(N, "Dos", _
         "Epaule", "Doigt", "Poignet")).Visible = V >= 1
      Set Cel = Cel(3, 1)
      Next N
   End Sub
Remarque: Si cet hystérésis du caractère visible inchangé pour les valeur de V < 1 et <> 0 était involontaire, on peut faire plus simple.
Et je viens de voir que si ce n'est pas un hystérésis dans la mesure ou il devrait aussi demeurer en l'état pour les valeurs négatives, c'est un peu plus compliqué, en tout cas différent …

C'est l'idée mais chaque IMAGE est liée à une valeur différente par exemple BQ75 c'est "dos" et BQ77 "Epaule".
donc si possible ne pas tout mettre en même temps.

J'ai essayé votre code et cela marche mais j'aimerais que cela soit décorrélé pour chaque couple d'image/cellule (qui contient référence)

Je vous remercie beaucoup !!!
 

Dranreb

XLDnaute Barbatruc
Les images sont corrélées aux cellules puisqu'on prend un nom de Shape différent, donné par N, pour chaque cellule. BQ75 n'est que la 1ère appliquée pour N = 1, les suivantes sont chaque fois décalées de 2 lignes par Set Cel = Cel(3, 1). Si plus clair vous pouvez préférer Set Cel = Cel.Offset(2, 0)

Voulez vous me préciser dans quel cas les images doivent être visibles, parce que ce n'est peut être pas exactement ce qui ressortait de ce que vous aviez programmé. Y a-t-il bien des cas ou l'image doit rester visible ou invisible telle qu'elle l'est au moment du test ?
Quelle formule y a-t-il dans ces cellules ?
Et rappelez vous qu'on ne peut pas savoir quelle est celle qui change de valeur puisque c'est par évaluation de formules qui ne changent pas et non par changement de contenu. Donc il faut toutes les faire.
 
Dernière édition:

Discussions similaires