Afficher l(heure aux chngements de la valeur de cellules
bonjour
je débute en vba
j'ai un problème que je n'arrive pas a solutionner merci de votre aide je joint un fichier Excel ,mais ce que j'ai trouvé ne convient pas au résultat que je recherche
dans mon classeur j ai deux colonnes B et F
dans ces colonnes(B et F) sont inscrit des cotations qui peuvent changer plusieurs fois dans la journée ou rester fixe
ces cotations sont prises vers deux autres colonnes AV et AW, sont inscrit par liaisons DDE(dynamic data Exchange)des chiffres en streaming (rafraichis automatiquement par un logiciel d'importation liens DDE)
je voudrais qu'a chaque changement automatique de la valeur des cellules en B et Soit inscrit en face de chaque cellule l'heure de changement
exemple si la cellule B12 affiche une cotation et se met a changer il faut que en cellule C12 s'affiche l(heure a laquelle la cellule a été modifié
si en colonne F la cellule F50 a change il faut que l heure du changement s'inscrive en G50
merci de me dire si cela est réalisable
pour l'instant je n'ai trouvé que la solution en manuel ,mais cela n'est pas possible pour le travail recherché
vous trouverez dans le classeur les deux premières cellules B12 et F12 ou j'ai rentré en manuel les cotations ,cela marche en changeant seulement a la main et en appuyant sur enter(ce n'est pas la solution qui est nécessaire pour faire marcher mon système, j'ai fait cela pour que vous compreniez bien mon besoin)
Merci a tous
Bonsoir le forum,
Saisie en B ; heure de changement en C :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B1:B100")) Is Nothing Then
If Target.Count = 1 Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = Now
Application.EnableEvents = True
End If
End If
End SubFormat : Heure
A adapter selon les besoins.
Bonsoir,
A tester.
C'est à dire si la mise à jour de la table lance l'événement Worksheet_Change.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim oldValue As Double, newValue As Double
On Error GoTo end_Handler
If Not Intersect(Target, Range("B2:B11")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
newValue = Target.Value
Application.Undo
oldValue = Target.Value
If newValue <> oldValue Then Target.Offset(0, 1) = Format(Time, "hh:mm:ss")
End If
end_Handler:
Application.EnableEvents = True
Exit Sub
End SubEdit : penser à modifier la plage "B2:B11" pour un test sur une colonne.
Bonjour
tout d'abord merci de vos réponses et d'avoir essaye
mais hélas cela ne marche pas
cela ne marche que si l'on rentre la valeur en manuel et que l'on fait entrée après
moi ce qui est nécessaire pour mon travail doit être entièrement automatique
les cotations sont en streaming et arrive par liens DDE
dans les colonne B et F je recois les cotations qui sont inscrites en colonne AV et AW (liens DDE)
je fait par exemple pour la colonne B12=AW12
pour F12=av12
je peux vous envoyer un fichier mais il faut me dire comment s'y prendre pour le faire sur votre site
merci cordialement JO
Re
je ne suis pas du tout dans le métier mais je pense qu'il faudrait trouver le moyen par un programme de copier toutes les valeurs cellules qui changent dans les colonnes AV et AW (liens DDE) a chaque changement d'une seule des cellules se seraient la colonne entière qui seraient copiée) mettre une formule du type si les cellules des colonnes ou les cotations changent(AV et AW Liens DDE est<>des autre colonnes Bet F (celles ou les derniers changements ont été collés) ;mettez nouvelle heure sinon rien
le truc est de trouver une macro en automatique qui colle les valeurs des colonnes Av et AW(liens DDE) vers B et F des qu'une seule cellule change
par contre je pense qu'il faut que le système démarre avec heure de départ 9 heure le matin heure française
je n'ai aucune idée si cela peut se faire sur Visual basic
merci de m'éclairer
JO
Bonsoir a tous
notre ami jo pullule sur beaucoup de forum pour savoir qui aura la meilleure réponse, comme une abeille sur des fleurs pour son miel
Pascal
malheureusement il n y a pas une réponse meilleure que l'autre ,il n y a qu'une seule et bonne réponse, mais personne ne l'a pour le moment trouver
Bonne soirée
bonjour le forum
voici la réponse que notre ami désagréable a fait sur le forum de programmer en vb
il faut arrêter Monsieur de se la jouer et de vous prendre pour des demis dieux
la vérité est que vous avez été incapable de vous approcher même un tant soit peu de ce que je cherche a solutionner
pardonnez moi d avoir essayer plusieurs solutions pour arriver a mes fins
je crois que dans votre milieu vous semblez un peu prétentieux et surtout très susceptibles
je trouverais de toute façon la solution moi même puisque vous en êtes pas capable
je suis croyez moi bien content d'avoir quitter la France et ce depuis bien longtemps parce que je m'aperçois que pas grand chose n'a changé depuis
je vous laisse a vos médiocrités et à votre prétention
Quand je vois comment est construit votre site je ne suis vraiment pas étonné par votre réponse
vous auriez fait un très bon collabo en 39 45;je n'en doute pas une seconde
que cela ne vous empêche pas de continuer dans la direction qui vous semble la meilleure
je peux très bien me passer de votre aide , qui n'en est pas une d'ailleurs
Continuez à surveiller vos collègues c'est ce que semble t'il vous savez le mieux faire .
Bonne soirée j'ai d'autres chats a fouetter?
Pascal
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Question bien formulée, solution assurée ! (Robert Durupt)
If you can’t explain it simply, you don’t understand it well enough … (Albert Einstein)
Deux choses sont infinies : l’Univers et la bêtise humaine.
Mais en ce qui concerne l’Univers, je n’en ai pas encore acquis la certitude absolue ! (Albert Einstein)