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

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

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 !

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 !
 
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+
 
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:
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

Dernière édition:
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

Re,

Franck
Et moi, je pue de la gu.e.le? 🙄
(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:
- 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
5
Affichages
143
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…