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+
 

Franck Mutshanga The firs

XLDnaute Nouveau
J'ai des valeurs numeriques dans une plage (A1:D1) et je voudrai installer un compteur pour comptabiliser le nombre de fois qu'une cellule de cette plage change de valeur...
 

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 Accro
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
 

Fichiers joints

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+
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Re,

Franck
Et moi, je pue de la gu.e.le? :rolleyes:
(Voir le message#5)
Même pas un tit bonjour!

[aparté]
Je suis fort marri et tout chamboulé
M'en vais résilier de ce pas mon abonnement à internet et ressortir mon minitel
(au moins dans les années 90, on savait dire Bonjour...)
[/aparté]


EDITION: Bonjour arthour
 
Dernière édition:

Haut Bas