Private Sub Worksheet_Change(ByVal Target As Range) Static nbentre As Integer, nbmess1 As Integer, nbmess2 As Integer nbentre = nbentre + 1 MsgBox "nbentre " & nbentre & vbCrLf & "nbmess1 " & nbmess1 & vbCrLf & "nbmess2= " & nbmess2 If Sheets("Data").Range("A1").Value = 1 Then Exit Sub MsgBox "je suis lancée " & nb nbmess1 = nbmess1 + 1 Sheets("Data").Range("A1").Value = 1 MsgBox "coucou" nbmess2 = nbmess2 + 1 Sheets("Data").Range("A1").Value = 0 End Sub
'DANS SHHEET (1) Private Sub Worksheet_Change(ByVal Target As Range) Static nbentre As Integer, nbmess1 As Integer, nbmess2 As Integer nbentre = nbentre + 1 MsgBox "nbentre " & nbentre & vbCrLf & "nbmess1 " & nbmess1 & vbCrLf & "nbmess2= " & nbmess2 'DANS SHEET (2) If Sheets(2).Range("A1").Value = 1 Then Exit Sub MsgBox "je suis lancée " & nb nbmess1 = nbmess1 + 1 Sheets(2).Range("A1").Value = 1 MsgBox "coucou" 'Ici je peux changer une valeur dans Sheet (1) sans déclencher, par exemple: If Sheets(1).Range("A1").Value 1 then Sheets(1).Range("B1").Value 1 else Sheets(1).Range("B1").Value = 0 nbmess2 = nbmess2 + 1 Sheets(2).Range("A1").Value = 0 End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub Worksheet_Change(ByVal Target As Range) 'Agent Reset If Sheets("Data").Range("AS12").Value = 1 then Exit sub If Not Intersect(Target, Range("E48")) Is Nothing Then 'ça bloque dès la ligne ci-dessous, qui n'est plus exécutée (et donc la valeur 1 n'est pas changée dans AS12 de la feuille Data)!! Sheets("Data").Range("AS12").Value = 1 'Option: blocage '% de Hauteur Totale par défaut If Sheets("Général").Range("K48").Value "+" Then Sheets("Général").Range("R38").Value 10 'Ascendant (10%) If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100 'Aucun (100%) If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90 'Descendant (90%) 'Mélange/Interface Sheets("Général").Range("K50").Value = "OUI" Sheets("Data").Range("AS12").Value = 0 'Option: déblocage End If
If Not Intersect(Target, Range("E48")) Is Nothing Then
If Sheets("Data").Range("AS12").Value = 1 then Exit sub
Private Sub Worksheet_Change(ByVal Target As Range) textbox1.text = textbox1.text & vbcrlf & target.address If Sheets("Général").Range("K48").Value "+" Then sheets("Général").Range("R38").Value 10 If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100 If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90 Sheets("Général").Range("K50").Value = "OUI" end sub*
= SI(OU(K50="";E48="");""; SI( Data!GZ26; SI(K50="NON";"+";"Q"); SI(NON(Data!GZ26);SI(K50="OUI";",";"Q");"7" )))
'Agent Reset If Not Intersect(Target, Range("$E$48")) Is Nothing Then Calculate ReSet1 Sheets("Général").Range("K50").Activate End If 'Interface par défaut If Not Intersect(Target, Range("$K$50")) Is Nothing Then Calculate ReSet2 Sheets("Général").Range("R38").Activate End If
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.Calculation = xlAutomatic If Not Intersect(Target, Range("$E$48")) Is Nothing _ Then Application.Calculation = xlManual Calculate End If If Not Intersect(Target, Range("$K$50")) Is Nothing _ Then Application.Calculation = xlManual Calculate End If End Sub
Sub ReSet1() 'Changer Agent Application.ScreenUpdating = False 'Blocage de Général-Change Sheets("Data").Range("AS12").Value = 1 'Interface/Brassage par défaut Sheets("Général").Range("K50") = "OUI": Calculate 'Valeur de % par défaut If Sheets("Général").Range("K48").Value "+" Then Sheets("Général").Range("R38").Value 10: Calculate 'Ascendant (10%) If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100: Calculate 'Aucun (100%) If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90: Calculate 'Descendant (90%) 'Délocage de Général-Change Sheets("Data").Range("AS12").Value = 0 Application.Calculation = xlAutomatic End Sub Sub ReSet2() 'Changer Interface/Brassage Application.ScreenUpdating = False 'Blocage de Général-Change Sheets("Data").Range("AS12").Value = 1 'Valeur de % par défaut If Sheets("Général").Range("K48").Value "+" Then Sheets("Général").Range("R38").Value 10: Calculate 'Ascendant (10%) If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100: Calculate 'Aucun (100%) If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90: Calculate 'Descendant (90%) 'Délocage de Général-Change Sheets("Data").Range("AS12").Value = 0 Application.Calculation = xlAutomatic End Sub
La levée de l'arrêt déclenche [arrêt] => [exécution en cours] (défile très vite dans la barre d'entête de VB).
MAIS : L'arrêt en dernière ligne est "sauté" et la valeur de R8 n'a pas changé...?
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("E48")) Is Nothing Then Application.MaxIterations = 1 ' >>> essaye aussi à 2 ensuite If Sheets("Général").Range("K48").Value "+" Then Sheets("Général").Range("R38").Value 10 If Sheets("Général").Range("K48").Value "Q" Then Sheets("Général").Range("R38").Value 100 If Sheets("Général").Range("K48").Value "," Then Sheets("Général").Range("R38").Value 90 Sheets("Général").Range("K50").Value = "OUI" Sheets("Data").Range("AS12").Value = 0 end if end sub
E48 reprend une liste dans la feuille Général (validation / liste = Plage ),
Private Sub Worksheet_Change(ByVal Target As Range)
msgbox "déclenché"
If Not Intersect(Target, Range("E48")) Is Nothing Then
msgbox "-" & Range("E48").text & "-"
end if
end sub