Lancer macro à Chaque incrémentation d'une cellule Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
t
theguilt
Membre fidèle
Membre fidèle
Messages : 280
Inscrit le : 17 septembre 2015
Version d'Excel : 2010

Message par theguilt » 8 octobre 2015, 06:35

Bonjour, comment pourrais je faire pour lancer des macrosà chaque incrémentation d'une cellule?

Exemple:
A1 s'incrémente de 1, lancer la macro 1
A1 s'incrémente de 2, lancer la macro 2
A1 s'incrémente de 3, lancer la macro 3
........


Merci
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'842
Appréciations reçues : 364
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 8 octobre 2015, 08:07

Bonjour

A placer dans la feuille VBA de la feuille concernée :
Option Explicit

Dim v1, v2

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
    If Target.Address = "$A$1" Then
        v2 = Target
        Application.Undo
        v1 = ActiveCell
        If v2 - v1 = 1 Then
            Call Macro1
        ElseIf v2 - v1 = 2 Then
            Call Macro2
        ElseIf v2 - v1 = 3 Then
            Call Macro3
        End If
    End If
    Application.EnableEvents = True
End Sub

Sub Macro1()
    MsgBox "Vous avez incrémenté A1 de 1."
End Sub

Sub Macro2()
    MsgBox "Vous avez incrémenté A1 de 2."
End Sub

Sub Macro3()
    MsgBox "Vous avez incrémenté A1 de 3."
End Sub
Bye !
Avatar du membre
Jean-Eric
Fanatique d'Excel
Fanatique d'Excel
Messages : 16'433
Appréciations reçues : 674
Inscrit le : 27 août 2012
Version d'Excel : 365 Personnel

Message par Jean-Eric » 8 octobre 2015, 08:11

Bonjour,
Ci-dessous, un exemple à adapter.
C'est une procédure évènementielle qui va se produire à chaque modification de A1.
Il y a une variable publique bAllow pour autoriser ou ne pas autoriser la procédure à s'exécuter.
Il faut penser à l'initialisation de A1. ;;)
Cdlt.
Option Explicit
Public bAllow As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
Dim oldValue, newValue

    If Target.Address = "$A$1" And bAllow = True Then

        On Error GoTo err_Handler

        Application.EnableEvents = False

        newValue = Target.Value
        Application.Undo
        oldValue = Target.Value

        Select Case newValue - oldValue
            Case 1
                MsgBox "+1"
            Case 2
                MsgBox "+2"
            Case 3
                MsgBox "+3"
            Case Else
                '
        End Select

    End If

exit_Handler:
    Target.Value = newValue
    Application.EnableEvents = True
    Exit Sub

err_Handler:
    MsgBox "Erreur : " & Err.Number & " - " & Err.Description
    Resume exit_Handler

End Sub
Jean-Eric

Je ne réponds pas aux M.P. non sollicités.
t
theguilt
Membre fidèle
Membre fidèle
Messages : 280
Inscrit le : 17 septembre 2015
Version d'Excel : 2010

Message par theguilt » 8 octobre 2015, 17:53

Bonjour merci pour vos réponse, je mets un fichier çela sera plus simple.
Merci
Classeur1.xlsm
(17.37 Kio) Téléchargé 45 fois
t
theguilt
Membre fidèle
Membre fidèle
Messages : 280
Inscrit le : 17 septembre 2015
Version d'Excel : 2010

Message par theguilt » 10 octobre 2015, 09:42

Bonjour, personne a une petite idée?
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message