Macro
Résolu/Fermé
A voir également:
- Macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro logiciel - Télécharger - Organisation
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
4 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
16 oct. 2016 à 17:55
16 oct. 2016 à 17:55
en définitive c'est bourré de pièges comme je le pressenais post 7
à tester encore:
http://www.cjoint.com/c/FJqp3z2yULh
à tester encore:
http://www.cjoint.com/c/FJqp3z2yULh
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
Modifié par michel_m le 15/10/2016 à 16:17
Modifié par michel_m le 15/10/2016 à 16:17
Bonjour
un exemple
http://www.cjoint.com/c/FJpoeU4Pf7h
pour voir le code
clic droit sur l'onglet de la feuille
visualiser le code
j'ai mis la couleur en jaune pour voir le petit coin rouge signalant un commentaire
edit 16:11
heu dans la macro worksheet_change ajoute juste avant End if
bon ! par prudence,les codes...
Michel
un exemple
http://www.cjoint.com/c/FJpoeU4Pf7h
pour voir le code
clic droit sur l'onglet de la feuille
visualiser le code
j'ai mis la couleur en jaune pour voir le petit coin rouge signalant un commentaire
edit 16:11
heu dans la macro worksheet_change ajoute juste avant End if
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
bon ! par prudence,les codes...
Option Explicit
Public ad_old As String, Old As Variant
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B2:D11")) Is Nothing Then
ad_old = Target.Address
Old = Target
End If
End Sub
'-------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If ad_old = Target.Address Then
With Range(ad_old)
.AddComment
.Comment.Visible = True
.Comment.Text Old
.Interior.ColorIndex = 6
Range("A1").Select
End With
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
End If
End Sub
Michel
Un génie ! Superbe :-)))) Petite question au cas où une personne se trompe Est-ce qu'il est possible de trouver une touche raccourci pour annuler l'opération ? ;-) ou autres ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
15 oct. 2016 à 18:46
15 oct. 2016 à 18:46
merci,
Il y a peut-^tre une solution : je regarde dès que possible
Il y a peut-^tre une solution : je regarde dès que possible
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
>
Luni
Modifié par michel_m le 15/10/2016 à 19:30
Modifié par michel_m le 15/10/2016 à 19:30
proposition à tester
je n'ai pas tester d'éventuels pièges...car j'ai droit au top "one" de la chorale occitane: "chuis pas mariée à un ordinateur!"
déclenchement par clic droit dans la cellule "coupable"
l'annulation peut être faite le classeur ayant été sauvegardé et fermé
tu dis
je n'ai pas tester d'éventuels pièges...car j'ai droit au top "one" de la chorale occitane: "chuis pas mariée à un ordinateur!"
déclenchement par clic droit dans la cellule "coupable"
l'annulation peut être faite le classeur ayant été sauvegardé et fermé
Option Explicit
Public ad_old As String, Old As Variant
'--------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B2:D11")) Is Nothing Then
ad_old = Target.Address
Old = Target
End If
End Sub
'-------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If ad_old = Target.Address Then
With Range(ad_old)
On Error GoTo fin
.AddComment
.Comment.Visible = True
.Comment.Text Old & Chr(10) & "Si erreur--> clic droit"
.Interior.ColorIndex = 6
Range("A1").Select
End With
Application.DisplayCommentIndicator = xlCommentIndicatorOnly
'inscrit l'ancienne valeur et son adresse dans la base de registre
SaveSetting appname:="demo", section:="linu", Key:="erreur", setting:=Old
SaveSetting appname:="demo", section:="linu", Key:="lieu", setting:=ad_old
End If
fin:
End Sub
'------------------------------------------------------------
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim retour As String
'adresse inscrite dans la base de registre
retour = GetSetting(appname:="demo", section:="linu", Key:="lieu")
If retour = Target.Address Then
'donnée inscrite dans la base de registre
Target = GetSetting(appname:="demo", section:="linu", Key:="erreur")
Target.Interior.ColorIndex = -4142
Range(retour).ClearComments
End If
Range("A1").Select
End Sub
tu dis
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 311
>
Luni
Modifié par michel_m le 16/10/2016 à 08:00
Modifié par michel_m le 16/10/2016 à 08:00
Bonjour,
je viens d'essayer par ex: 12:45 ou 3:00 et ca marche... ?
http://www.cjoint.com/c/FJqgaazPMZh
Par contre, que fait on avec une cellule vide? au départ, quand tu remplis le tableau vide cellule par cellule, la valeur inscrite fait passer la cellule en jaune avec commentaire.
il faudrait peut-^tre faire une macro "préparer"qui effacerait les couleurs et les commentaires
D'autre part:
1/ worksheet_change ne fonctionne que sur des saisies. Donc si ton tableau est issu de formules, celle-ci seront détruites.
2/ l'astuce de la base de registre n'est valable que sur monoposte. si le classeur est sur serveur, cela ne marche pas
tu dis...
je viens d'essayer par ex: 12:45 ou 3:00 et ca marche... ?
http://www.cjoint.com/c/FJqgaazPMZh
Par contre, que fait on avec une cellule vide? au départ, quand tu remplis le tableau vide cellule par cellule, la valeur inscrite fait passer la cellule en jaune avec commentaire.
il faudrait peut-^tre faire une macro "préparer"qui effacerait les couleurs et les commentaires
D'autre part:
1/ worksheet_change ne fonctionne que sur des saisies. Donc si ton tableau est issu de formules, celle-ci seront détruites.
2/ l'astuce de la base de registre n'est valable que sur monoposte. si le classeur est sur serveur, cela ne marche pas
tu dis...
16 oct. 2016 à 18:16
Modifié par Luni le 16/10/2016 à 18:34
If Not Intersect(Target, Range("B2:D11")) Is Nothing And Target <> "" Then
16 oct. 2016 à 18:35
À tout hasard, et sans aucune garantie, essaye avec (et sur une seule ligne) :
If Not Intersect(Target, Range("B2:D11")) Is Nothing And Not IsEmpty(Target) Then
16 oct. 2016 à 19:03