Enregistrer une date si cellule modifiée

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

L

largoj

Guest
Bonjour,
Suite à un problème resté sans solution , je renouvelle ma demande.
Je souhaiterais enregistrer la date dans une cellule lorsqu'une cellule voisine a été modifiée.
J'ai appliqué un code trouvé sur internet mais il n'est pas adapté car il modifie la date pour les mauvaises cellules, et je ne parviens pas à le modifier pour l'adapter à mon fichier.
Pour comprendre le mieux est de consulter le fichier ci-joint.
Merci pour votre aide, cordialement, largoj.
 

Pièces jointes

Re : Enregistrer une date si cellule modifiée

Bonjour
Êtes vous sur de projeter de pouvoir modifier les contenus des cellules colonnes G et I ?
Car actuellement elles contiennent des formules. Leurs valeurs changent donc sans qu'aucunement leur contenu ne change.
Une Worksheet_Change ne saurait détecter qu'une modification du contenu de cellules qui en dépendent.
Pour que la date change quand on remplace la formule par autre chose :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Me.[G:G,I:I], Target) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
Target.Offset(, 1) = Date
End Sub
 
Dernière édition:
Re : Enregistrer une date si cellule modifiée

Le contenu des cellules G et I se modifie lorsqu'on modifie la valeur des cellules des colonnes B,C,D.
Les cellules de la col. G se modifient de 12 en 12 (somme des cell. des col.B,et C)
Les cellules de la col. I se modifie de 10 en 10 selon la valeur des cell. de la col.D
Il s'agit d'un système de gratuité accordé dés l'achat de 12 (jaunes-bleus) ou 10 sacs(marrons)
 
Re : Enregistrer une date si cellule modifiée

Le contenu des cellules G et I se modifie lorsqu'on modifie la valeur des cellules des colonnes B,C,D.
Faux. Il n'y a aucune macro qui modifie le contenu des cellules G ou I quand on modifie une des B,C,D.
C'est peut être ce que devrait faire la Worksheet_Change: corriger s'il y a lieu la valeur calculée et la date qui suit. Remplacer préalablement les formules par leurs valeurs.
 
Dernière édition:
Re : Enregistrer une date si cellule modifiée

Ce n'est pas une macro qui modifie le contenu des cell. G et I, c'est une simple formule 😛our la ligne 7 par ex.(ENT(F7/12), la somme des cell. B7 et C7 modifie la cell. G7 à partir de 12, 24,36.... idem pour la cell. I7 qui est modifiée par la cell.D7. à partir de 10,puis 20,30..
Faites des essais depuis les listes déroulantes des col. BCD.
cordialement,largoj
 
Re : Enregistrer une date si cellule modifiée

La valeur n'est pas le contenu.
Votre problème n'a pas de solution si vous tenez à vos formules car il est impossible de savoir quelles valeurs elles renvoyaient avant qu'on change un de leurs dépendants car on n'a plus l'ancienne valeur de celui ci.

P.S. À moins de profiter de la Worksheet_SelectionChange pour noter les valeurs de la ligne dans un tableau global.
Mais pourquoi faire compliqué quand on peut faire simple ?
 
Dernière édition:
Re : Enregistrer une date si cellule modifiée

Si je comprends bien, il serait difficile de créer un code qui afficherait une date dans les col. H et J en raison d'une formule dans les col. G et I ?
Y aurait-il un moyen de contourner le problème ? par exemple en réalisant une copie de la cel. G7 à coté (=G7), il n'y aurait plus de formule dans ce cas.
 
Re : Enregistrer une date si cellule modifiée

Bonjour Largoj etDranreb

Toutes vos remarques ont exact, je propose donc le remplacement des formule ent.... par du code dans la feuille sur change.
voici ce code: il remplace les formule par un calcul qui permet de faire ce que tu souhaites.
Cependant j'ai supprimer ton code sur selection change sans avoir bien regardé à quoi il servait.


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 2 Or Target.Column = 3 Then
valeur = Target.Parent.Cells(Target.Row, 7).Value
compare = Int((Target.Parent.Cells(Target.Row, 2) + Target.Parent.Cells(Target.Row, 3)) / 12)
'MsgBox valeur & " " & compare
If compare <> valeur Then
Target.Parent.Cells(Target.Row, 7) = compare
Target.Parent.Cells(Target.Row, 8) = Date
End If
End If
If Target.Column = 4 Then
valeur = Target.Parent.Cells(Target.Row, 9)
compare = Int(Target.Parent.Cells(Target.Row, 4) / 10)
If compare <> valeur Then
Target.Parent.Cells(Target.Row, 9) = compare
Target.Parent.Cells(Target.Row, 10) = Date
End If
End If


End Sub
 
Re : Enregistrer une date si cellule modifiée

Le plus simple serait de toujours les calculer dans la Worksheet_Change.
Oui, j'avais commencé un code similaire :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lig As Range, Grat As Long, Cib As Range
If Target.Count > 1 Then Exit Sub
Set Lig = Target.EntireRow
If Not Intersect(Target, Range("B:C")) Is Nothing Then
   Grat = (Lig.Columns("B").Value + Lig.Columns("C").Value) \ 12
   Set Cel = Lig.Columns("G")
ElseIf Not Intersect(Target, Range("D:D")) Is Nothing Then
   Grat = Lig.Columns("D").Value \ 10
   Set Cel = Lig.Columns("I")
Else: Exit Sub: End If
If Cel.Value <> Grat Then
   Application.EnableEvents = False
   Cel.Value = Grat
   Cel.Offset(, 1).Value = Date
   Application.EnableEvents = True
   End If
End Sub
 
Dernière édition:
Re : Enregistrer une date si cellule modifiée

Merci Sousou pour pour ce résultat ! c'est exactement ce que je souhaitais.
Le code sur "sélection range" sert à classer les noms par ordre alphabétique à chaque saisie d'un nouveau nom.
Je l'ai conservé, à priori cela n'a pas l'air d'avoir d'incidence sur le reste du programme.

Merci aussi à Dranreb de s'être penché sur mon problème.

Cordialement, largoj
 
Re : Enregistrer une date si cellule modifiée

Bonjour,

SVP j'aimerai bien convertir ma formule excel en code vba je travaille sur une peite application de gestion de stock excel 2007.

j'ai deux feuilles :

feuille 1 : stock
feuille 1 : Mvts client

Voici ma formule : =SOMMEPROD((stock!a3:a100=B3)*(stock!b3:b100)*(sto ck!c3:c100))

je vous serez reconnaissant merci!
 
Re : Enregistrer une date si cellule modifiée

Bonsoir,
ta question n'a rien à voir avec la discussion où elle est posée.
vaut mieux de créer une nouvelle discussion et joindre un fichier exemple pour que l'on puisse bien saisir ta demande.


@ + +
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 problème date
Réponses
7
Affichages
713
Retour