modification de macro

gege21

XLDnaute Occasionnel
bonjours a tous

j'ai une macro a modifier mais je ni arrive pas donc j'ai besoin de votre aide

si une valeur change en "A1" j'ai un message1 qui apparait

et ma demande et que
si une valeur change en "A2" avoir un message2
si une valeur change en "A3" avoir un message3

Dans le module objet de Feuil1
Code:
Public ValPrec

Private Sub Worksheet_Calculate()
  Vérif
End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
  Vérif
End Sub

Private Sub Vérif()
  If VarType(Range("A1")) = VarType(ValPrec) Then _
    If ValPrec = Range("A1") Then Exit Sub
  MsgBox "Message1"
  ValPrec = Range("A1")
End Sub

Dans le module de code ThisWorkbook
Code:
Private Sub Workbook_Open()
  Feuil1.ValPrec = Feuil1.Range("A1")
End Sub

merci pour vos réponse :rolleyes:
 

ROGER2327

XLDnaute Barbatruc
Re : modification de macro

Bonjour gege21
Peut-être quelque chose comme :
Code:
[COLOR="DarkSlateGray"][B]
[COLOR="SeaGreen"]'Dans le module de code de Feuil1 :[/COLOR] 
Public ValPrec

Private Sub Worksheet_Calculate()
  Vérif Range("A1:A3")
End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Intersect(Target, Range("A1:A3")) Is Nothing Then Exit Sub
  Vérif Intersect(Target, Range("A1:A3"))
End Sub

Private Sub Vérif(r As Range)
Dim oCel As Range, vP
Dim messages
   If VarType(ValPrec) >= vbArray Then
      messages = Array("", "Message1", "Message2", "Message3")
      For Each oCel In r.Cells
         If ValPrec(oCel.Row, 1) <> oCel.Value Then
            ValPrec(oCel.Row, 1) = oCel.Value
            MsgBox messages(oCel.Row)
         End If
      Next oCel
   End If
End Sub

[COLOR="SeaGreen"]'Dans le module de code ThisWorkbook :[/COLOR] 
Private Sub Workbook_Open()
  Feuil1.ValPrec = Feuil1.Range("A1:A3").Value
End Sub[/B][/COLOR]
ROGER2327
#3310
 

ROGER2327

XLDnaute Barbatruc
Re : modification de macro

Re...
  1. Message #1
    (...) et ma demande et que
    si une valeur change en "A2" avoir un message2
    si une valeur change en "A3" avoir un message3 (...)
  2. Message #3
    (...) une petite précision en plus de chaque messagebox (message1,message2...)
    je vais lance pour chaque message une macro différente (...)
En clair, vous posez un problème, mais c'est un autre qu'il faut résoudre...​
ROGER2327
#3312
 

Lii

XLDnaute Impliqué
Re : modification de macro

Bon jour,

avec ce que j'ai compris,
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  Dim VLi As Byte
  If Intersect(Target, [D1:D3]) Is Nothing Or Target.Count > 1 Then Exit Sub
  VLi = Target.Row
  MsgBox Array("Message 1", "Message 2", "Message 3")(VLi - 1), vbInformation, "Pour info ..."
  If VLi = 1 Then MsgBox "et je lance la macro 1", vbExclamation, "Attention"
  If VLi = 2 Then MsgBox "et je lance la macro 2", vbExclamation, "Attention"
  If VLi = 3 Then MsgBox "et je lance la macro 3", vbExclamation, "Attention"
End Sub
 

Pièces jointes

  • Change_MsgBox_Macro.xls
    18.5 KB · Affichages: 80

ROGER2327

XLDnaute Barbatruc
Re : modification de macro

Re...
Testez ceci :
Code:
[COLOR="DarkSlateGray"][B]Public ValPrec

Private Sub Worksheet_Calculate()
  Vérif Range("A1:A3")
End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Intersect(Target, Range("A1:A3")) Is Nothing Then Exit Sub
  Vérif Intersect(Target, Range("A1:A3"))
End Sub

Private Sub Vérif(r As Range)
Dim oCel As Range, vP
Dim messages
   If VarType(ValPrec) >= vbArray Then
      messages = Array("", "Message1", "Message2", "Message3")
      For Each oCel In r.Cells
         If ValPrec(oCel.Row, 1) <> oCel.Value Then
            ValPrec(oCel.Row, 1) = oCel.Value
            MsgBox messages(oCel.Row)
            Select Case oCel.Row
               Case 1: Procédure_1
               Case 2: Procédure_2
               Case 3: Procédure_3
            End Select
         End If
      Next oCel
   End If
End Sub

Sub Procédure_1()
   MsgBox "Exécution de Procédure_1"
   [COLOR="SeaGreen"]'Précaution à prendre : cette procédure ne doit  pas _
   modifier le contenu de la cellule A1[/COLOR]
End Sub

Sub Procédure_2()
   MsgBox "Exécution de Procédure_2"
[COLOR="SeaGreen"]   'Précaution à prendre : cette procédure ne doit  pas _
   modifier le contenu de la cellule A2[/COLOR]
End Sub

Sub Procédure_3()
   MsgBox "Exécution de Procédure_3"
   [COLOR="SeaGreen"]'Précaution à prendre : cette procédure ne doit  pas _
   modifier le contenu de la cellule A3[/COLOR]
End Sub[/B][/COLOR]
ROGER2327
#3323
 

Discussions similaires

Statistiques des forums

Discussions
312 390
Messages
2 087 951
Membres
103 683
dernier inscrit
Cescodelvar