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

XL 2016 Compteur de nombre de changement de valeur d'une cellule

Le Bourgeois

XLDnaute Nouveau
Bonjour à tous,

je me trouve en galère à créer un compteur de changement de cellule.

J'ai essayé de copier/coller des macros complètes en tentant de changer les target mais cela ne fonctionne qu'à moitié.

J'aimerais qu'à chaque fois que je change une valeur en colonne F, la colonne H incrémente et surtout, comprendre la logique de programmation derrière.

D'avance merci pour votre support et excellente journée.

Adrien
 

Pièces jointes

  • BIAA GROUP To Do List_17.04.20.xlsm
    85.3 KB · Affichages: 11

dg62

XLDnaute Barbatruc
Bonjour Le Bourgeois,
A chaque modification de la colonne F La valeur de la cellule correspondante de H s'incrémente.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub

        If Not Intersect(Target, Range("F2:F100")) Is Nothing Then

       Target.Offset(0, 2).Value = Target.Offset(0, 2).Value + 1

        End If

End Sub
 

Pièces jointes

  • BIAA GROUP To Do List_17.04.20.xlsm
    86.9 KB · Affichages: 11
Dernière édition:

jmfmarques

XLDnaute Accro
Bonjour dg62
Ta réponse est bonne, mais à compléter (mise en mémoire - pour comparaison - de la valeur au selection_change) car l'évènement change est déclenché même si la nouvelle saisie est égale à la précédente.
Je te laisse compléter.
 

Le Bourgeois

XLDnaute Nouveau
Un GRAND MERCI l'équipe, je me rends compte de mes nombreuses erreurs. Par contre je ne comprends pas ou la macro décide d'écrire. Je ne vois pas la colonne H?

Bon confinement à vous
 
Dernière édition:

dg62

XLDnaute Barbatruc
Bonjour le Fil,
Pour faire suite à la remarque de JmfMarques

VB:
Option Explicit
Public cel As Variant

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub

        If Not Intersect(Target, Range("F2:F100")) Is Nothing Then
            If Target.Value <> cel Then
            
                Target.Offset(0, 2).Value = Target.Offset(0, 2).Value + 1
            Else
                MsgBox "Valeur identique"
            End If
        End If

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' mise en mémoire de la valeur initiale
cel = ActiveCell.Value
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…