Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Worksheet_BeforeUpdate ?

4 réponses
Avatar
Gadget
Salut à tous.
Je suis surpris de ne pas trouver dans les évenements de feuille un
BeforeUpdate(ByVal Target as Range, Cancel as Boolean), qui permettrait de
conserver simplement l'ancienne valeur d'une cellule si sa nouvelle valeur
entrée par l'utilisateur ne convient pas.
Y a-t-il moyen de simuler celà, ou bien je n'ai pas bien cherché ?
Merci de vos réponses.


--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!

4 réponses

Avatar
isabelle
bonjour Gadget,

l'enregistrement s'applique à tout le fichier (classeur)
s'il n'est pas possible d'enregistrer seulement une feuille,
automatiquement il n'y a pas d'événement BeforeUpdate pour une
feuille(onglet)
par contre il y a les événememts : change, selection change, calculate

isabelle


Salut à tous.
Je suis surpris de ne pas trouver dans les évenements de feuille un
BeforeUpdate(ByVal Target as Range, Cancel as Boolean), qui permettrait de
conserver simplement l'ancienne valeur d'une cellule si sa nouvelle valeur
entrée par l'utilisateur ne convient pas.
Y a-t-il moyen de simuler celà, ou bien je n'ai pas bien cherché ?
Merci de vos réponses.

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!


Avatar
Gadget
Merci Isabelle.
En fait, je me suis mal exprimé : je voulais parler du BeforeUpdate appliqué
à une cellule ou à une plage. exemple :
La modif d'une cellule particulière par l'utilisateur entraine l'execution
d'une macro écrite par mes soins qui recalcule et modifie d'autres cellules.
Au cas ou la valeur entrée par l'utilisateur ne convient pas, j'aimerais
pouvoir récupérer l'ancienne valeur et la remettre à la place, mais celà
semble impossible avec l'évènement _Change, puisqu'il n'y a pas de
paramètre Cancel.
Y a-t-il une solution ?


--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"isabelle" a écrit dans le message de
news:
bonjour Gadget,

l'enregistrement s'applique à tout le fichier (classeur)
s'il n'est pas possible d'enregistrer seulement une feuille,
automatiquement il n'y a pas d'événement BeforeUpdate pour une
feuille(onglet)
par contre il y a les événememts : change, selection change, calculate

isabelle


Salut à tous.
Je suis surpris de ne pas trouver dans les évenements de feuille un
BeforeUpdate(ByVal Target as Range, Cancel as Boolean), qui permettrait
de


conserver simplement l'ancienne valeur d'une cellule si sa nouvelle
valeur


entrée par l'utilisateur ne convient pas.
Y a-t-il moyen de simuler celà, ou bien je n'ai pas bien cherché ?
Merci de vos réponses.

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!




Avatar
Pascal Engelmajer
Salut,
avec dans un module standard
Public memo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim mesConditions As Boolean 'pour tester
Dim pl As Range
mesConditions = True
If Target.Address = Range("A1").Address Then
If mesConditions Then
Target.Value = memo
End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim pl As Range
If Target.Address = Range("A1").Address Then
memo = Target.Value
End If
End Sub
fonctionne (si saisie par un usager pour évènement SelectionChange)

--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Gadget" a écrit dans le message de news:
409f6f59$0$25396$
Merci Isabelle.
En fait, je me suis mal exprimé : je voulais parler du BeforeUpdate
appliqué

à une cellule ou à une plage. exemple :
La modif d'une cellule particulière par l'utilisateur entraine l'execution
d'une macro écrite par mes soins qui recalcule et modifie d'autres
cellules.

Au cas ou la valeur entrée par l'utilisateur ne convient pas, j'aimerais
pouvoir récupérer l'ancienne valeur et la remettre à la place, mais celà
semble impossible avec l'évènement _Change, puisqu'il n'y a pas de
paramètre Cancel.
Y a-t-il une solution ?


--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"isabelle" a écrit dans le message de
news:
bonjour Gadget,

l'enregistrement s'applique à tout le fichier (classeur)
s'il n'est pas possible d'enregistrer seulement une feuille,
automatiquement il n'y a pas d'événement BeforeUpdate pour une
feuille(onglet)
par contre il y a les événememts : change, selection change, calculate

isabelle


Salut à tous.
Je suis surpris de ne pas trouver dans les évenements de feuille un
BeforeUpdate(ByVal Target as Range, Cancel as Boolean), qui
permettrait



de
conserver simplement l'ancienne valeur d'une cellule si sa nouvelle
valeur


entrée par l'utilisateur ne convient pas.
Y a-t-il moyen de simuler celà, ou bien je n'ai pas bien cherché ?
Merci de vos réponses.

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!








Avatar
Gadget
Ah oui pas mal comme solution. Mais je ne crois pas que celà marcherait si
une plage est selectionnée plutôt qu'une cellule seule. En fait, j'ai choisi
une autre solution :

- J'ai créé une variable range publique appelée Plage_selectionnée

- j'ai ajouté une entrée sur le menu clic droit qui renvoie vers ma
procédure :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As
Boolean)

Dim Menu_Droit As Object

For Each Menu_Droit In Application._
CommandBars("cell").Controls
If Menu_Droit.Caption = "Recalculer" Then _
Menu_Droit.Delete
Next Menu_Droit

If Not Intersect(Target, Union(mes_cellules_concernées)) _
Is Nothing Then
Set Plage_Selectionnée = Target
With Application.CommandBars("cell").Controls.Add _
(Type:=msoControlButton, Temporary:=True)
.Caption = "Recalculer"
.OnAction = "Recalcul_Salaire"
End With
End If

End Sub

et ma proc Recalcul_Salaire traite toutes les cellules de Plage_Selectionnée
une par une.

voilà voilà.
--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"Pascal Engelmajer" a écrit dans le
message de news:
Salut,
avec dans un module standard
Public memo
Private Sub Worksheet_Change(ByVal Target As Range)
Dim mesConditions As Boolean 'pour tester
Dim pl As Range
mesConditions = True
If Target.Address = Range("A1").Address Then
If mesConditions Then
Target.Value = memo
End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim pl As Range
If Target.Address = Range("A1").Address Then
memo = Target.Value
End If
End Sub
fonctionne (si saisie par un usager pour évènement SelectionChange)

--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Gadget" a écrit dans le message de news:
409f6f59$0$25396$
Merci Isabelle.
En fait, je me suis mal exprimé : je voulais parler du BeforeUpdate
appliqué

à une cellule ou à une plage. exemple :
La modif d'une cellule particulière par l'utilisateur entraine
l'execution


d'une macro écrite par mes soins qui recalcule et modifie d'autres
cellules.

Au cas ou la valeur entrée par l'utilisateur ne convient pas, j'aimerais
pouvoir récupérer l'ancienne valeur et la remettre à la place, mais celà
semble impossible avec l'évènement _Change, puisqu'il n'y a pas de
paramètre Cancel.
Y a-t-il une solution ?


--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!
"isabelle" a écrit dans le message de
news:
bonjour Gadget,

l'enregistrement s'applique à tout le fichier (classeur)
s'il n'est pas possible d'enregistrer seulement une feuille,
automatiquement il n'y a pas d'événement BeforeUpdate pour une
feuille(onglet)
par contre il y a les événememts : change, selection change, calculate

isabelle


Salut à tous.
Je suis surpris de ne pas trouver dans les évenements de feuille un
BeforeUpdate(ByVal Target as Range, Cancel as Boolean), qui
permettrait



de
conserver simplement l'ancienne valeur d'une cellule si sa nouvelle
valeur


entrée par l'utilisateur ne convient pas.
Y a-t-il moyen de simuler celà, ou bien je n'ai pas bien cherché ?
Merci de vos réponses.

--
--
Carpe Diem Quam Minimum Credula Postera
Bicose
Sic Transit Gloria Mundi, et
Arx Tarpeia Capitoli Proxima !!