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

Comment créer un événementiel sur des zones (noms)

10 réponses
Avatar
Emile63
Bonjour a tous,
Je peine un peu sur la proc=E9dure ci-dessous, et je demande un peu
d'aide. :-))
Dans un classeur (Tarif de prix) je souhaite que chaque fois que je
change un prix aparaisse dans un commentaire la date + l'heure du
changement.
(Le top serrait de pouvoir =E9galement r=E9cup=E9rer l'ancien prix, mais l=
=E0,
je c=E2le)

Par contre je ne souhaite pas que tous les changements sur le classeur
ou de l'onglet se garnissent de commentaires, voila pourquoi je d=E9sire
restreindre la port=E9e de cette proc=E9dure =E0 quelques zones, en pla=E7a=
nt
le
"If Target.Address <> ("Prix1, Prix2, Prix3,Prix4") Then Exit Sub"
Malheureusement, =E7a ne fonctionne pas... :-(
Si quelqu'un peut me mettre sur la piste..
Je vous remercie d'avance pour votre aide et vos solutions.
Cordialement,
Emile

---------------------------------------------------------------------------=
--------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> ("Prix1, Prix2, Prix3,Prix4") Then Exit Sub
With Target
On Error Resume Next
.AddComment
.Comment.Visible =3D False
.Comment.Text Text:=3D"Derni=E8re modificacion: " & Date & " " &
Time
End With
End Sub

10 réponses

Avatar
FFO
Salut à toi
A supposer que Prix1 soit en A1, Prix2 soit en B1, Prix3 soit en C1,
Prix4 soit en D1 il faut mettre ainsi :

If Target.Address <> Range("A1").Address And Target.Address <>
Range("B1").Address And Target.Address <> Range("C1").Address And
Target.Address <> Range("D1").Address Then Exit Sub

Tu peux aussi mettre comme ceci :

If "$A$1$B$1$C$1$D$1" Like "*" & Target.Address & "*" Then Exit Sub

qui est plus simple

Celà devrait mieux fonctionner

Dis moi !!!!!
Avatar
michel ou sam
bonjour,
dans ta démarche, il faut penser à ce qu'il se passera quand tu
positionneras la souris sur un prix quelconque
il ne faudra pas que la date change si tu n'as pas l'intention d'en changer
le montant.

Michel

"Emile63" a écrit dans le message de news:

Bonjour a tous,
Je peine un peu sur la procédure ci-dessous, et je demande un peu
d'aide. :-))
Dans un classeur (Tarif de prix) je souhaite que chaque fois que je
change un prix aparaisse dans un commentaire la date + l'heure du
changement.
(Le top serrait de pouvoir également récupérer l'ancien prix, mais là,
je câle)

Par contre je ne souhaite pas que tous les changements sur le classeur
ou de l'onglet se garnissent de commentaires, voila pourquoi je désire
restreindre la portée de cette procédure à quelques zones, en plaçant
le
"If Target.Address <> ("Prix1, Prix2, Prix3,Prix4") Then Exit Sub"
Malheureusement, ça ne fonctionne pas... :-(
Si quelqu'un peut me mettre sur la piste..
Je vous remercie d'avance pour votre aide et vos solutions.
Cordialement,
Emile

-----------------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> ("Prix1, Prix2, Prix3,Prix4") Then Exit Sub
With Target
On Error Resume Next
.AddComment
.Comment.Visible = False
.Comment.Text Text:="Dernière modificacion: " & Date & " " &
Time
End With
End Sub
Avatar
isabelle
bonjour Emile,

voici un exemple avec 2 zones de prix, dit moi si tu as de la difficulté à adapter pour plus de zones,
le code est à copier sur la page de la feuille des zones de prix.

[code]
Public ap 'ancien prix

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ap = Target
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Set p1 = Range("Prix1") 'zone de prix1
Set p2 = Range("Prix2")
p = Array(p1, p2) 'liste des zones de prix
For Each Pi In p
Set isect = Application.Intersect(Target, Pi)
If Not isect Is Nothing Then
On Error Resume Next
Target.Comment.Delete
Target.AddComment
Target.Comment.Text Text:="ancien prix: " & ap & Chr(10) & "nouveau prix:" & Target
Exit Sub
End If
Next
End Sub
[/code]

isabelle

Le 2010-10-26 03:26, Emile63 a écrit :
Bonjour a tous,
Je peine un peu sur la procédure ci-dessous, et je demande un peu
d'aide. :-))
Dans un classeur (Tarif de prix) je souhaite que chaque fois que je
change un prix aparaisse dans un commentaire la date + l'heure du
changement.
(Le top serrait de pouvoir également récupérer l'ancien prix, mais là,
je câle)

Par contre je ne souhaite pas que tous les changements sur le classeur
ou de l'onglet se garnissent de commentaires, voila pourquoi je désire
restreindre la portée de cette procédure à quelques zones, en plaçant
le
"If Target.Address<> ("Prix1, Prix2, Prix3,Prix4") Then Exit Sub"
Malheureusement, ça ne fonctionne pas... :-(
Si quelqu'un peut me mettre sur la piste..
Je vous remercie d'avance pour votre aide et vos solutions.
Cordialement,
Emile

-----------------------------------------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address<> ("Prix1, Prix2, Prix3,Prix4") Then Exit Sub
With Target
On Error Resume Next
.AddComment
.Comment.Visible = False
.Comment.Text Text:="Dernière modificacion: "& Date& " "&
Time
End With
End Sub
Avatar
Emile63
On 26 oct, 09:26, Emile63 wrote:

Bonjour a tous,

Merci Isabelle pour ta proposition. C'est exactement ce que je
souhaitais :-)
J'avoue que comme j'étais parti, je n'y serrais pas arrivé sans ton
aide.

très cordialement,
Emile
Avatar
Emile63
On 26 oct, 09:26, Emile63 wrote:

Encore une petite question Isabelle (finitions...),
Le comentaire m'affiche le prix avec un nombre "général" entier ou
incluant x décimales après la virgule.
Et je souhaiterais en formater l'affichage "#'###,00 €".
D'autre part, l'affichage étant assez petit je souhaite également
modifier la police de caractères de chaque commentaire inséré à 12 pt.
Comment puis-je inclure ces caractéristiques dans ta procédure. ;-)
Encore merci pour ces précisions,
Cordialement,
Emile
Avatar
michdenis
Bonjour,

En attendant le retour d'Isabelle...


Private Sub Worksheet_Change(ByVal Target As Range)
Dim P1 As Range, P2 As Range, P()
Dim C As Range, Plage As Range, Texte As String

Set P1 = Range("Prix1") 'zone de prix1
Set P2 = Range("Prix2")

Set plg = Intersect(Target, Union(P1, P2))
If Not plg Is Nothing Then
For Each C In plg
C.ClearComments
Texte = Format(C.Value, "# ##0.00 €")
C.AddComment "ancien prix: " & ap & Chr(10) & "nouveau prix:" & Texte
Next
End If
End Sub

--
MichD
--------------------------------------------


"Emile63" a écrit dans le message de groupe de discussion :

On 26 oct, 09:26, Emile63 wrote:

Encore une petite question Isabelle (finitions...),
Le comentaire m'affiche le prix avec un nombre "général" entier ou
incluant x décimales après la virgule.
Et je souhaiterais en formater l'affichage "#'###,00 €".
D'autre part, l'affichage étant assez petit je souhaite également
modifier la police de caractères de chaque commentaire inséré à 12 pt.
Comment puis-je inclure ces caractéristiques dans ta procédure. ;-)
Encore merci pour ces précisions,
Cordialement,
Emile
Avatar
Emile63
On 26 oct, 09:26, Emile63 wrote:

Merci Michel pour ton support. ;-)

Et pour augmenter la police d'écriture?
Avatar
Jacky
Bonsoir,
---------
--------
Target.Comment.Text Text:="ancien prix: " & Format(ap, "# ###.00 €") & Chr(10) & "nouveau prix:" &
Format(Target, "# ###.00 €")
Target.Comment.Shape.OLEFormat.Object.Font.Size = 12
'******Pour anticiper la question suivante ;o))
Target.Comment.Shape.DrawingObject.AutoSize = True
----------
---------
--
Salutations
JJ


"Emile63" a écrit dans le message de news:

On 26 oct, 09:26, Emile63 wrote:

Encore une petite question Isabelle (finitions...),
Le comentaire m'affiche le prix avec un nombre "général" entier ou
incluant x décimales après la virgule.
Et je souhaiterais en formater l'affichage "#'###,00 €".
D'autre part, l'affichage étant assez petit je souhaite également
modifier la police de caractères de chaque commentaire inséré à 12 pt.
Comment puis-je inclure ces caractéristiques dans ta procédure. ;-)
Encore merci pour ces précisions,
Cordialement,
Emile
Avatar
michdenis
Après la ligne de code :
C.AddComment "ancien prix: " & ap & Chr(10) & "nouveau prix:" & Texte

Tu ajoutes celle-ci
C.Comment.Shape.OLEFormat.Object.Font.Size = 14

--
MichD
--------------------------------------------


"Emile63" a écrit dans le message de groupe de discussion :

On 26 oct, 09:26, Emile63 wrote:

Merci Michel pour ton support. ;-)

Et pour augmenter la police d'écriture?
Avatar
Emile63
On 26 oct, 09:26, Emile63 wrote:

c'est parfait.. ;-)

Merci à tous pour votra aide.
Cordialement,
Emile