XL 2016 Résolu... Compter le nombre de fois que la valeur d'une cellule donnée change

Franck Mutshanga The firs

XLDnaute Nouveau
Bonjour
J'ai un problème... Je suis débutant en vba excel et là je suis bloqué avec mon petit projet ! J'ai besoin d'aide sur comment compter le nombre de fois qu'une cellule est modifiée...
J'ai eu à lire des trucs dessus mais ça ne fonctionne pas ! Quelqu'un peut me faire un exemple de fichier qui fonctionne svp... Merci de votre aide !
 

job75

XLDnaute Barbatruc
Bonjour Franck Mutshanga The firs, bienvenue sur XLD,

Il faut être plus précis dans votre demande :

- de quelle cellule s'agit-il, d'une ou plusieurs ?

- comment comptez-vous exploiter le(s) résultat(s) ?

A+
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Franck, job75

En comprenant la question telle que je l'ai fait, avec cette formule =SOMMEPROD(1/NB.SI($A$1:$D$1;$A$1:$D$1))
(saisie en E1 par exemple)
Si dans la plage, j'ai les valeurs suivantes : 1,2,3,4
la formule renvoie 4
Si j'ai ces valeurs: 1,1,1,2
la formule renvoie 2

EDITION: Bonjour dg62
 
Dernière édition:

dg62

XLDnaute Barbatruc
Bonjour Franck, Staple1600

et avec une procédure événementielle
Dans le fichier joint le nombre de changements s'incrémente sur une plage définie cellule par cellule.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Address = "$A$1" Then
   
    Range("D5").Value = Range("D5").Value + 1
   
   End If
   
   
End Sub
 

Pièces jointes

  • incremente.xlsm
    15.5 KB · Affichages: 12
Dernière édition:

job75

XLDnaute Barbatruc
Re, bonjour JM, dg62

Voyez le fichier joint et cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, a, i%
Set P = [A1:D2]
'---initialisation---
If Not IsArray([Memo]) Then
    ReDim a(1 To 2, 1 To P.Columns.Count)
    For i = 1 To P.Columns.Count
        a(1, i) = ""
        a(2, i) = 0
    Next
    ThisWorkbook.Names.Add "Memo", a 'nom défini
End If
'---comptage---
a = [Memo]
For i = 1 To P.Columns.Count
    If CStr(P(1, i)) <> a(1, i) Then
        a(1, i) = CStr(P(1, i))
        a(2, i) = a(2, i) + 1
    End If
Next
'---MAJ---
ThisWorkbook.Names.Add "Memo", a 'nom défini
Application.EnableEvents = False 'désactive les évènements
P.Rows(2) = Application.Index(a, 2, 0)
Application.EnableEvents = True 'réactive les évènements
End Sub
A+
 

Pièces jointes

  • Compter modifs(1).xlsm
    21.2 KB · Affichages: 23

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 937
Membres
101 844
dernier inscrit
pktla