Signaler

Macro [Résolu]

Posez votre question Luni - Dernière réponse le 16 oct. 2016 à 19:03
Bonjour à tous ! :-)

J'ai une demande un peu particulière et j'espère sincèrement trouvé une bonne âme qui pourra m'aider.

J'ai des données d'exploitation de D9 à I800. Serait-il possible de faire en sorte que si les données sont modifiées elles apparaissent en rouge et que les anciennes soient mises sous forme de commentaire dans la cellule correspondante ?

Merci infiniment pour votre aide :-)))))
Afficher la suite 
Utile
+1
moins plus
en définitive c'est bourré de pièges comme je le pressenais post 7

à tester encore:
http://www.cjoint.com/c/FJqp3z2yULh
Luni- 16 oct. 2016 à 18:16
Suppppppppppppppperbeeee ! Merci énormément pour ta patience et ton investissement. Ça va vraiment bcp m'aider. :-))))
Répondre
Luni- 16 oct. 2016 à 18:28
Je viens de voir juste un petit souci la macro fonctionne parfaitement mais lorsque je sélectionne des cellules (sans cliquer dessus) et même en dehors du tableau il m'indique une erreur dans cette ligne ?

If Not Intersect(Target, Range("B2:D11")) Is Nothing And Target <> "" Then
Répondre
albkan 1864Messages postés samedi 26 mars 2016Date d'inscription 11 décembre 2016 Dernière intervention - 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
 
Répondre
Luni- 16 oct. 2016 à 19:03
Ca marche, merci beaucoup albkan :-) ;-)
Répondre
Ajouter un commentaire
Utile
+0
moins plus
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
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

Ajouter un commentaire
Utile
+0
moins plus
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 ?
Ajouter un commentaire
Utile
+0
moins plus
merci,

Il y a peut-^tre une solution : je regarde dès que possible
Luni- 15 oct. 2016 à 19:42
:-. Oui ca fonctionne super bien ! :-) Mais en le mettant sur mon fichier il y a un petit bug je crois que c'est parce que dans certaines cellules il y a des heures et je crois qu'il aime pas ca! Est-ce que c'est grave docteur !? ;-) Excuse j'aurais peut-être du le préciser dès le départ !? :-(
Répondre
michel_m 14223Messages postés lundi 12 septembre 2005Date d'inscription ContributeurStatut 10 décembre 2016 Dernière intervention - 16 oct. 2016 à 07:49
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...
Répondre
Luni- 16 oct. 2016 à 09:27
C'est une excellente question :-) il n'y a pas de formule tout est saisi manuellement.
Par contre lorsque les personnes saisissent les données pour la première fois il faudrait que la macro soit en pause. Peut-être cliquer sur un bouton pendant qu'ils saisissent ? Ou alors si la cellule est vide il ne doit pas la comptabiliser comme une modification :-) ça serait encore mieux :-)

Superbe ça fonctionne mais lorsqu'il s'agit des heures et que cela passe en commentaires ça me donne le résultat 0.31451 est-ce qu'il n'y aurait pas un moyen pour que ça m'affiche en format heures lorsqu'il s 'agit d'heures, ça serait vraiment top :-))))

Merci infiniment pour ton aide je me rends compte que c'est un travail de dingue mais qui sera vraiment utilisé à bon escient ! :-)
Répondre
michel_m 14223Messages postés lundi 12 septembre 2005Date d'inscription ContributeurStatut 10 décembre 2016 Dernière intervention - 16 oct. 2016 à 09:46
C'est des heures partout ou quelques fois ?
Répondre
Luni- 16 oct. 2016 à 12:47
J'ai modifié le tableau differemment c est des heures partout :-) c est plus simple :-)
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !