Worksheet_BeforeUpdate ?

Le
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 !!
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #1393095
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 !!


Gadget
Le #1392943
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" 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 !!




Pascal Engelmajer
Le #1392942
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" 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" 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 !!








Gadget
Le #1411769
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" 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" 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" 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 !!












Publicité
Poster une réponse
Anonyme