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

Incrémentation dans VBA

  • Initiateur de la discussion Initiateur de la discussion Luigi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Luigi

XLDnaute Occasionnel
Bonjour à vous tous,

Je débute depuis peu sur Excel VBA, mon problème est le suivant:
J'ai une macro qui permet d'incrémenter la cellule "A2" à chaque fois que la cellule "A1" change, ci dessous ma macro.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long

If Not Application.Intersect(Target, Range("A1")) Is Nothing Then


i = Range("A1").Value
j = Range("A2").Value

j = j + i


Range("A2") = j
End If
End Sub

Avec cette macro l'incrémentation se réalise correctement quand je change la valeur "A1" manuellement, mais dans mon fichier Excel la valeur "A1" est lié à l'ouverture et à la fermeture d'une vanne, la valeur est 0 ou 1 et elle se change automatiquement en fonction de l'état de la vanne et dans ce mode automatique ma macro ne fonctionne pas, quelqu'un peut-il m'aider pour que l'incrémentation fonctionne en mode automatique. Merci
 
Re : Incrémentation dans VBA

Bonjour Luigi,

A tester, si ça te convient:

Dans le module de code de la feuille:

Code:
Option Explicit
Private AncienneValeurA1 As Variant
 
Private Sub Worksheet_Activate()
    'Retenir la valeur de a1 
    AncienneValeurA1 = Range("A1")
End Sub
 
Private Sub Worksheet_Calculate()
    'Si la valeur de A1 a changé on incrément A2
    If Range("A1") <> AncienneValeurA1 Then Range("A2").Value = Range("A2") + 1
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) <> "A1" Then Exit Sub
    'Si A1 a changé on retient la valeur
    If Range("A1") <> AncienneValeurA1 Then AncienneValeurA1 = Range("A1")
End Sub

A+
 
Re : Incrémentation dans VBA

Bonsoir,
Essaie peut-être comme ceci
Code:
Private Sub Worksheet_Calculate()
[A2] = [A2] + [A1]
End Sub
Ne prend en compte que le changement d'état de A1 (0 ou 1)
A+
kjin

Edit : Oups pas rafraichi à temps; bonsoir Hasco
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
180
Réponses
3
Affichages
258
Réponses
15
Affichages
793
Réponses
9
Affichages
509
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…