• Initiateur de la discussion Initiateur de la discussion biloute91
  • 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 !

biloute91

XLDnaute Occasionnel
Bonjour à tout le forum,

Je souhaiterais une formule ( pas forcement en vba) qui me permettrait de comptabiliser le nombre de fois où une cellule est modifiée.
Ex :

En A1 = valeur
En B1 = le compteur

Dès que A1 est modifiée , B1 est alimentée

Merci pour votre aide
 
Re : Compteur

Bonjour
sans VBA, ce sera difficile...
Avec VBA :

Dans le workbook_open()

Code:
Private Sub Workbook_Open()
ancienne_valeur = [A1]
End Sub

dans un module standard, tu déclares ancienne_valeur en Public :

Code:
Public ancienne_valeur

et dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then _
    If Target <> ancienne_valeur Then [B1] = [B1] + 1
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then ancienne_valeur = Target
End Sub
 
Re : Compteur

Re-,
oui, en adaptant :

dans le workbook_open()

Code:
Private Sub Workbook_Open()
Sheets("Feuil1").Select
[A1].Select
End Sub

tu gardes le module standard, avec la variable en Public, et dans l'évènement de feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then _
    If Target <> ancienne_valeur Then Target.Offset(, 1) = Target.Offset(, 1) + 1
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 Then ancienne_valeur = Target
End Sub

Attention, toutefois, si tu as d'autres codes, il faudra penser à initialiser la valeur de "ancienne_valeur" en fin de code, en sélectionnant obligatoirement la cellule A1 par exemple, ou une autre colonne (B1).
Ainsi, en sélectionnant une cellule de la colonne A, on initialise la valeur publique
 
Re : Compteur

Bonjour bhbh,

>Attention, toutefois, si tu as d'autres codes, il faudra penser à initialiser la >valeur de "ancienne_valeur" en fin de code, en sélectionnant obligatoirement >la cellule A1 par exemple, ou une autre colonne (B1).
>Ainsi, en sélectionnant une cellule de la colonne A, on initialise la valeur >publique

En mémorisant l'ancienne valeur dans un nom (mémo), on échappe à cette contrainte puisque mémo est sauvegardé avec le classeur.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then _
    If Target <> [mémo] Then Target.Offset(, 1) = Target.Offset(, 1) + 1
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Column = 1 And Target.Count = 1 Then
    ActiveWorkbook.Names.Add Name:="mémo", RefersToR1C1:="=" & Chr(34) & Target.Formula & Chr(34)
  End If
End Sub

JB
 
Re : Compteur

Re-,
ce n'est plus la même chose, ta cellule modifiée étant le résultat d'une formule, et plusieurs cellules ont la même formule...
Pourquoi ne pas incrémenter la 4 ème colonne de la feuille "Liste" comme ceci :

Code:
....
.....
With Sheets("Liste")
.Cells(L, 2).Value = Me.TextBox1.Value
.Cells(L, 4).Value = .Cells(L, 4).Value + 1
End With
.....
.....

Tu auras ainsi le nombre de modifs dans cette feuille
 
- 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
11
Affichages
342
Réponses
2
Affichages
195
Réponses
16
Affichages
418
Réponses
4
Affichages
216
Retour