Fixer l'heure automtiquement au changement d'une cellule [Résolu/Fermé]

Signaler
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018
-
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
-
Bonjour à tous
pourriez vous me dire si ce que je recherche est réalisable en programmation VBA Excel
j'ai une colonne avec une plage qui va de A1:A80,dans cette plage des chiffres qui changent automatiquement (ces chiffres sont rafraichis en streaming)
a partir d'une heure donnée(départ et fin du processus), je voudrais que chaque fois que la valeur d'une cellule de cette plage change ,l'heure se fixe dans la cellule d'a cote,puis que lorsque cette nouvelle cotation a ete fixe avec l'heure dans la cellule d'a coté ;un nouveau processus mette a nouveau le prochain changement sur les cellules suivantes
Exemple
si dans ma plage A1:A80, j'ai la cellule A1(cotation) avec en cellule B1 l'heure de départ ( mettons 09:00:00); des que 09:00:00 est atteint et des qu'il y aura un changement dans la plage
Exemple supposons que la cellule A1 change de valeurs après 09::00:00 je voudrais que le premier changement s'inscrive dans (pour la cotation A1 en C1 et pour l heure B 1 en D1;puis a chaque nouveau changement de valeurs, devra s(inscrire dans les cellules d'à cote"(exemple toujours dans le premier cas si un deuxième changement intervient dans la cellule A1, la cotation qui a changé devra alors s'inscrire en cellule E1et l'heure en F1...;etc autant de fois qu il y aura de changement dans la journée(en règle générale il y a 5 a 20 changements maximum dans une journée entre 09:00:00 et 18:00:00 le soir , parfois il n'y a pas de changement sur certaines cellules)
il faudra que le processus est un arrêt en fin de journée à une heure précise
attention il n'a aucune intervention manuelle de ma part sur le classeur tout se fait automatiquement
Merci de votre aide (je vous précise que je n'ai jamais fait de
programmation)
Cordialement Christ

20 réponses

Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonsoir
Voici la dernière mouture
https://www.cjoint.com/c/EEkv2SdKmrx
Pour faire des essais, dans le module "ThisWorkbook" mettez une heure de départ, par exemple 1minute après l'heure actuelle. Dans le module1, j'ai mis une tempo d'une seconde(c'est suffisant pour les essais). Vous mettrez les vraies valeurs une fois que cela ira à votre convenance.
Lancer la macro Sub Workbook_open (ou fermez et ré-ouvrez le fichier) le programme démarrera à l'heure saisie et s'arrêtera quand le tableau sera plein.
Cdlt
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonsoir
Je suis scotché de votre savoir-faire
, j'aimerais communiquer en privé par email avec vous ou skipe comme vous voulez, pour vous faire passer en privé un tableau que j'ai créé et qui pourrait un jour vous êtes de très grande utilité
Je rends toujours la pièce à ce qui m'ont aidé et j'aimerais avoir un avis sincère sur ma création
, je viens d'essayer le tableau ce matin apparemment cela marche parfaitement, mis a part que ,hier soir j'ai rajoute deux colonnes(21) parce que les cours se terminent vers 17h45 ,
ce matin a l'ouverture du dossier seules ces deux colonnes étaient encore remplies de cotations les autres colonnes de C a R étaient vides ; également les premières inscriptions de cotations se sont faites avec de l'avance sur la programmation avant 09:15:00,et avant 09 :45 :00 la connexion internet est très mauvaise aujourd'hui ce matin mon classeur DDE ne pouvait fonctionner parfaitement, je ne sais pas si cela vient de la ou si ça provient du fait que j'ai allonge le tableau de deux colonnes
Je vais essayer tout cela pendant plusieurs jours et je vous dirais exactement ce qui en est
Par contre il faut que vous me disiez si il est possible de mettre ce tableau dans ma feuille(je vais adapter pour le mettre a un emplacement autre qui me convient) et que j'en crée un deuxième toujours dans cette feuille pour avoir la même chose mais sur 15 mn départ 09;00:00 fin 09:00:15 et cotations toutes les minutes(ou faut-il le mettre obligatoirement sur une autre feuille; faut il empiler les codes un en dessus de l(autre au même emplacement en modifiant évidemment les données?))
Pensez-vous que le travail qu'effectue la macro va me ralentir mon document Excel qui lui travaille en temps réel avec des cotations boursières et énormément de formules
je me demandais si il n'était pas possible de faire tourner mon classeur boursier seul puis le vôtre en même temps toute la journée et le soir faire un copie colle manuel en mode valeurs vers mon classeur d'analyse Statistiques(de facon a ne pas ralentir ce classeur qui fonctionne en temps réel avec de nombreuses données
; je n'ai jamais essayé de faire tourner avec les liens DDE deux classeurs je ne sais encore pas si cela va me ralentir le temps réel des cotations?
à bientôt j'espère et très grand merci, il va falloir qu'un jour je trouve un peu de mon temps pour m'y mettre à mon tour christian.napoli@.fr
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonjour à nouveau
voila j'ai commencé a faire des essais, par moment il semblerait que certaines colonnes ne se collent pas ?(peut être ne faut il pas du tout toucher au classeur lors du collage des cotations ?),
je vais commencé par faire le tableau départ 09:00;00 et arrêt 09:15:00 avec cotations toutes les minutes
je n'ai fait que m'inspirer de votre modèle ça a été facile ,maintenant j'essaie de le mettre a un autre emplacement dans ma feuille(le tableau partira de la ligne12 en Plage NQ12:NQ91 et la dernière plage sera de OH12à OH91
donc j'ai modifie ainsi
dans thisworkbook j'ai mis

Option Explicit

Private Sub Workbook_Open()
c = 381
Application.OnTime TimeValue("09:00:00"), Procedure:="RecupCotation" '"09:00:00"
Range("C12:OH91").ClearContents
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
ArretCotation
End Sub
dans ma feuile7 j'ai mis(la j'ai un doute???)
Private Sub Worksheet_Change1(ByVal Target As Range)
If Target.Column <> 381 Or Target.Row > 91 Then Exit Sub
If Time < "09:00:00" Or Time > "18:00:00" Then Exit Sub
HeureDeb = Cells(Target.Row, 2)
Cells(Target.Row, Range("NQ" & Target.Row & ":NQ" & (Target.Row)).End(xlToRight).Column + 1) = Cells(Target.Row, 1)
Cells(Target.Row, Range("NQ" & Target.Row & ":NQ" & (Target.Row)).End(xlToRight).Column + 1) = Time
End Sub
puis dans mon module1
Public Durée As Date
Public c

Sub RecupCotation()
Durée = Now + TimeValue("00:01:00")
Application.OnTime Durée, "RecupCotation"
Range(Cells(12, c), Cells(91, c)) = Range("NQ12:NQ91").Value
c = c + 1
If c >= 17 Then ArretCotation
End Sub


Sub ArretCotation()
On Error Resume Next
Application.OnTime Durée, "RecupCotation", , False
End Sub
voila,hélas c'etait trop beau ça ne marche pas comme je l'ai enregistre pouvez vous me dire ou je me suis trompé ?(je vous precise que dans ma feuille 7 a l(emplacement au dessus j'ai deux autres codes)
merci
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324 >
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonsoir
Désolé de répondre si tard, mais j'étais absent toute la journée et ce soir je n'aurai pas le temps de regarder.
Mais déjà quelques points, le module de la feuille ne sert à rien, cela faisait partie des premiers essais, j'ai oublié de le supprimer, de toute manière le fait d'avoir ajouter un 1 après Private Sub Worksheet_Change1(ByVal Target As Range) interdit tout accès à ce bout de programme.
Seuls les codes dans le module du classeur "ThisWorkbook" et le "module1"" sont utilisés.
C égale au n° de la colonne à remplir, donc "If c >= 17 Then ArretCotation " signifie que l'on arrête le remplissage à la colonne R.
Je regarderai demain pour le reste.
Bonne soirée
Cdlt
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Bonsoir
ce n'est pas grave, faites d'abord ce que vous avez a faire
j'ai supprimé comme vous l'avez noté ce bout de programme
je n'ai pas encore assez essaye vraiment, je sais que ça marche sans problème (j'ai eu aujourd'hui des problèmes de connexion internet ;donc pas de liens DDE maintenant je vais faire des essais des demain pour voir si il n'est pas plus intelligent de faire un classeur avec une partie pour le modèle 09:00:00 jusquà 09:15:00, avec collage toutes les minutes plus le tableau que vous avez fait sur le même classeur et la même feuille ,puis en fin de journée ,je pourrais coller les résultats manuellement sur mon autre classeur d'analyse statistique
parce que je pense qu'il n'est pas bon de toucher au classeur quand le programme est mis en route(je crois que parfois des cotations ne se collent pas)
je pourrais peut être le réduire dans la barre des taches vers 9h, ce qui me permettra de toucher et de travailler sur l'autre classeur qui tourne également en temps réel
ce n'est qu'en essayant que je verrais ce qu'il est possible de faire
a demain et très bonne soirée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Quelque chose comme ceci,
https://www.cjoint.com/c/EEipIjFdnjD
remplacez les valeurs de la colonne A
A tester
cdlt
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonsoir
comme je vous l'ai dit dans mon dernier message le fait que le fonctionnement de ce que vous avez trouvé est uniquement en manuel
ne me gène pas beaucoup, dans la mesure ou vous pouvez me dire comment faire en VBA pour copier et coller chaque cellule de la plage concernée toutes les demis heures a partir par exemple de 9h15 le matin jusqu'à 17 h 45 le soir
je viens de faire un essai la macro qui devra s'exécuter toute les demies heures devra copier au même instant chaque cellule de la plage et les coller au même emplacement ;parce-que si on essaye de sélectionner la plage entière puis de la coller sur elle même c'est juste la premier ligne
qui fonctionne pouvez vous me dire quel code dois je rentrer dans Visual Basic et à quel emplacement pour obtenir le résultat voulu
je pense également que je n'aurais pas besoin d'effacer les informations récupérer le soir puisque le système démarrant le lendemain les nouvelles cotations vont effacer les précédentes(a moi de récupérer et d'exploiter chaque soir ces nouvelles données)
cordialement Christian ; encore bravo d'avoir trouver au premier essai Merci
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
A tester
https://www.cjoint.com/c/EEjlwO76mUo
Enregistrement des cotations toutes les 1:2heures à partir de 9h15 jusqu'à 16h45, en colonne B je sauvegarde les valeurs à l'ouverture de 9h00 pour conserver les traces de l'état initial.
Cordialement
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonjour
hier a plusieurs reprises j'ai essaye de vous envoyer un message pour vous féliciter je ne sais pas si vous l'avez reçu
je n'arrivais pas a le faire passer par le site
même si en l'état la solution ne marche pas parfaitement je sais qu'on va y arriver
voila ce que j'ai essaye de faire avec le peu de connaissance que j'ai
le premier tableau comme je vous l'ai dit marchait en manuel
le deuxieme tableau est beaucoup plus lisible , mais il ne marche pas pour des raisons que j'ignore
j'ai essaye de trouver une solution j'ai enlevé le numero1 après Private Sub Worksheet_Change pour avoir tout bêtement comparé avec le premier, des que j'ai fait cela j'ai eu le même résultat que dans le premier (a savoir l'heure qui s'affichait a cote de la nouvelle cotation(ce qui ne convenait pas a votre deuxième tableau)
j'ai également supprime dans le code
Cells(Target.Row, Range("A" & Target.Row & ":A" & (Target.Row)).End(xlToRight).Column + 1) = Time
puisque vous l'aviez laisse dans le deuxième tableau et que je ne comprenais plus de son utilité
après avoir enlevé le code ci dessus c'était parfait puisque seulement les cotations de la colonne A s'affichait parfaitement dans votre deuxième tableau à l'emplacement qu'il fallait
j"ai enlevé aussi ce qui concerne la récupération en colonne B puisque la aussi je n'en ai pas besoin puisque le logiciel DDE me donne en mémoire les cotations et que je compte occuper la colonne B pour mettre autre chose qui m'est indispensable j'ai enlevé donc les codes
Private Sub Workbook_Open()
c = 2
Application.OnTime TimeValue("09:00:00"), Procedure:="RecupCotation"
End Sub
je précise que pour que ça marche il est nécessaire que la colonne B ne soit pas vide(mais ce n'est pas gênant puisque il y aura en permanence d'autres cotations
puis voyant que même la macro ne fonctionnait pas en exécutant directement ,elle buggait, j(ai fait une macro avec l(enregistreur de VBA et je l'ai collé a la place de votre code ainsi(je l'ai fait pour un essai sur 10 valeurs)

Public c

Sub RecupCotation()
Do While Time >= TimeValue("09:15:00") And Time < TimeValue("18:46:00")
Range("A2").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A4").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A5").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A6").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A7").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A8").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A9").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A10").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.Wait Now + TimeValue("00:30:00")
Loop
End Sub
résultat la macro ne s'exécute pas automatiquement il doit y avoir un problème avec le Timer(il y a peut être seulement une erreur de frappe puisque elle ne s'exécute pas seule dans le temps que vous avez noté dans le code entre 09:15:15 et 17:46:00; je me suis aperçu très rapidement que la programmation n'accepte nullement la moindre erreur de frappe)
par contre si je la lance manuellement ;elle copie et colle les cotations aux endroits voulu(sauf que a chaque fois la dernière cellule de la plage qui est entrain de se coller n'apparait pas ,elle ne le fait qu"a la prochaine colle)
le problème est que je ne peux pas me servir du classeur parce qu'il ya tout le temps un rond bleu qui fonctionne comme un sablier qui attendrait quelque chose et qui m'empêche d'intervenir sur le classeur pour en sortir il faut que j'appuie sur la touche ESC
je pense que tout cela n'est qu'une question de mise au point,mais comme je vous l(ai dit auparavant pour le moment j'en suis incapable; il y a le fait en prendre en compte que moi même j'ai pu faire quelques fausses manoeuvres qui font que le bazar ne marche pas ;uniquement de mon incompetence
Merci de votre aide
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonjour
grand merci de votre réponse ,je n'ai pas eu trop le temps de la tester en profondeur, mais déjà il semblerait que cette solution marche pour les cotations rentrées manuellement
en automatique rien ne se passe
alors j'ai pense que si ce n'est pas réalisable automatiquement,il est sans doute possible avec un petit programme sur VBA d'utiliser votre solution et je pense que ce sera encore mieux pour moi , car je vais pouvoir avec ce système cerner précisément par plages horaires
je m'explique ;si vous savez comment faire un copié collé toutes les 15 mn ou30 mn ( je le déterminerais par la suite)de la page A1:A80 sur elle même en mode valeur, a partir de 09:15:00 le matin et ce jusque au soir 17:45:00
cela déclenchera immédiatement votre système et cela me permettra a moi de savoir par tranche horaire exacte ce qui se passe
donc je me répète pour être sur que vous compreniez ou je veux en arriver il faut en VBA rentrer un programme qui me copie la page A1:A80 en mode valeurs sur elle même a partir de 9H 15 par exemple
toutes les 15mn ou 30 mn(a déterminer) et qui se termine a 17h 45mn le soir
merci de votre aide et bravo parce que vous êtes très proche d'avoir trouve la solution(je dirais que le fait de ne pas marcher en automatique va m'éviter de rentrer dans une usine a gaz pour trier les données et les regrouper par tranches horaires
je regarde tout cela ce soir et je vous dit exactement ce qui en est


Cordialement Christ
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
J'ai une proposition qui peut éventuellement vous intéresser.
En voici le principe:
Sur une feuille nommée "CotationALaMinute",on relève les cotations toutes les minutes de 9h à 16h45, puis sur une autre feuille nommée "CotationALaDemi-Heure", on extrait de la feuille "CotationALaMinute" par formules les valeurs par tranches de 3/4 d'heures comprises entre 9h15 et 16h45.
Voici la suggestion
https://www.cjoint.com/c/EEmgls5w5Ei
Qu'en pensez-vous
Cdlt
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonjour
Vous au moins vous n'abandonnez pas , vous êtes comme moi, persévérant et c'est très bien
aujourd'hui j'essaye de comprendre pourquoi le tableau marche très bien seul et a des problèmes des que je le fait marcher en même temps que le classeur statistique
j'ai eu des bugs sur mon tableau a moi; en même temps que fonctionnait le votre
il y avait des retards de collage sur le votre et parfois des collages n(étaient pas effectués(attention je me répète, c'est uniquement quand votre tableau fonctionne en parallèle avec le mien)
je pense que comme ne connaissant pas la programmation j(ai du faire des erreurs en faisant des enregistrements par VBA(c'est pour cela que ça a buggé) il faut que j'essaye d'autres solutions pour comprendre
il faut que vous me disiez par exemple si votre tableau est réduit dans la barre des taches ou si il est ouvert sur l'écran avec la fenêtre réduite a une incidence sur le fonctionnement ou doit il être ouvert en plein écran?
pour ce qui est de ce que vous me proposez ,je pense que un tableau de 09:01:00
jusqu'à 09:16:00 toutes les minutes (j'ai mis 09::01:00 parce que c'est technique ,a l'ouverture de 9 heures il y a un flottement de 10 a15 seconde, le temps que les ordi enregistrent tous les ordres de préouverture ,donc il vaut mieux faire le premier collage a 09:01:00
si je fait un tableau une minutes pendant toute la journée cela va me faire très complique pour affiner la statistique(vous comprendrez quand vous aurez vu mon tableau
je pense qu'il est mieux de faire par exemple dans une première feuille le tableau 09:01:00 à 09:16:00(toutes les minutes)
puis dans une deuxième feuille un tableau de 09:15:00 a 17:45:00( collage toutes les 15 mn
je m'explique ; il y a deux temps fort a analyser sur les marches l(ouverture et entre 10 h le matin et l(ouverture des marches américains
a l(ouverture tout va très très vite, si vous n'avez pas un outil pointu d'analyse statistique qui dissèque les habitudes et scénarios des divers intervenant, comme on dit dans le midi " vous êtes marron"
après l'ouverture avec un classeur a la demi heure ou au quart d'heure c'est suffisant et puis ca permet statistiquement par exemple si on met 15 min par collage de savoir (entre chaque heure quel est le chiffre le meilleur;cela ne fait qu'un tri sur quatre a faire et c'est
beaucoup plus lisible que si l'on divise par 60 collage(minutes dans une heure)
la statistique a beaucoup plus de sens et de lisibilité ainsi
je n'ai pas encore ouvert votre document , mais si j'arrive a capter le modèle en fonction de ce que je comprendrais je vais mettre dans la feuille 1 de la plage A12 à A91 jusque la plage R12:R91 ,le tableau minutes;(15 premières)
en ligne 11 de A11 à R11 je mettrais heures comme vous l'avez fait en jaune

dans la feuille 2 je mettrai pareil au même endroit ( 'sauf évidemment avec un nombre de colonnes plus important) vers la droite mais pour le scenario 09:15:00 jusqua 17:45:00 (collage des cotations toutes les 15 mn)
si vous me faites passe votre mail je vous envoie mon tableau final de statistique ;,c'est des mois de réflexions et de recherche ; le tableau que je vais vous envoyer est alimenté par un classeur conséquent avec des milliers
d'infos, qui sont colles en mode valeurs dans le dernier tableau de façon a ce qu'il soit le plus efficace en terme de rapidité) ;peut être qu'il vous permettra de comprendre le pourquoi du problème ,de faire marcher en parallèle le votre et le mien
attention je vous demande de ne communiquer ce tableau a qui que ce soit;
si un jour vous voulez en user alors je vous expliquerai toutes les ficelles
je vais ouvrir votre document et essayer de capter au mieux pour finaliser
(je pense a la solution la meilleure ;en fin de journée je ferais un copier colle valeur sur mon classeur(le gros )et je ferais tout mes calculs en dehors de votre tableau
A plus merci ( des que vous m'avez donné votre mail je vous envoi lemon tableau avec quelques explications)
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

RE
veuillez m'excuser j"avais un ami a la maison et je n 'ai fait que survoler votre message d'aujourd'hui
je viens d'ouvrir votre dernier document, effectivement l'idée est plus qu'excellente, à la condition qu"elle ne me ralentisse pas un peu plus mon système?
votre proposition est très bonne si elle doit pas me pénaliser pour l'autre classeur qui tourne en même temps.
sinon je pense qu'il faut essayer parce que je pense que si je fait comme je vous ai dit je vais être pénaliser seulement le premier quart d'heure(pour intervenir sur mon propre classeur statistique et graphique) ,puis le collage se fera que seulement toutes les 15 minutes, au lieu d'une (ce qui me laisse largement la marge de manoeuvre si je doit intervenir sur l'autre classeur
A la limite je me demande si il ne faudrait pas que les nouvelles cotations ne se collent que sous conditions(mais c'est très compliqué)
je m'explique mais je doute que ce soit réalisable
Si l'ordinateur pouvait prendre en compte sous conditions "le collage de la cellule se fera a la prochaine minute a condition que la cotation soit inférieure a la précédente,et; a l'emplacement horaire correspondant"("meme principe pour le plus haut de séance mais a l'envers")
ce qui veut dire lorsque la cotation nouvelle est plus basse que celle de la cotation de la première minute alors, elle se colle a l'endroit qui correspond a son heure et minutes sinon rien et ainsi de suite la même chose pour la dernière cellule qui vient d'être colle(chaque nouvelle cotation collé devient en quelque sorte le nouveau point bas ou le nouveau point haut)
il faut que je vous explique une chose ;dans votre tableau ,de la cellule A 2 à la cellule A 41 c'est les cotations du plus bas de séance que donne les liens DDE (ils ne donnent jamais de précision sur l'heure bien évidemment),de la cellule A 42 à A 81 ce sont les cotations du plus Haut de séance
ainsi nous serions exactement a quel moment ont été chaque plus bas de séance et plus haut de séance, par plage horaire dans le temps avec exactitude
comme il n'y a pas énormément de changement dans une séance concernant le plus bas et le plus haut le collage au lieu de se faire 525 fois (525 minutes entre 9het 17h 45) se ferait peut être 5 à 50 fois seulement maxi dans une séance ce qui éviterait peut être au classeur de ralentir l'autre?
De plus on serait immédiatement quand, et le nombre de scénarios possible avec exactitude
(mais ce n'est qu'une supposition parce que je ne connais pas tous les tenants et aboutissants)
en fait il me faut savoir si c'est normal que votre classeur est une incidence sur le mien comme si ils étaient lies(peut être est ce les liens DDE qui font cela?)

qu'en pensez vous?
Merci
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonjour
me revoilà a nouveau


Dans un de mes classeurs j'ai mis à cet emplacement le code simplement pour 15 mn rafraichi toutes les minutes et ça marche
par contre j'ai essayé de mettre le code pour la journée complète en collant toutes les minutes a un autre emplacement ; en supprimant le premier essai hélas ça ne marche pas pouvez-vous me dire d(ou viennent mes erreurs `les deux codes sont marquée ci-dessous
(on va y arriver;ce n'est qu'une question de patiente parce que déjà je peux vous dire que dans mon classeur le petit tableau pour 15 mn bizarrement fonctionne parfaitement associe a mon classeur, apparemment je n'ai plus le problème de ce matin avec les deux classeurs en parallèle , avoir ce que cela va donner avec le collage toute la journée( chaque minute ;étant donné que votre classeur marche parfaitement seul il n'y a aucune raison pour que l'on ne trouve pas la solution
Merci de votre correction


Celui-ci fonctionne c'est le deuxième qui a problème


Dans thiswoorkbook


Option Explicit

Private Sub Workbook_Open()
c = 3
Application.OnTime TimeValue("14:23:00"), Procedure:="RecupCotation" '"09:01:00"
Range("C12:R91").ClearContents
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
ArretCotation
End Sub


Dans Module 1


Public Durée As Date
Public c

Sub RecupCotation()
Durée = Now + TimeValue("00:01:00")
Application.OnTime Durée, "RecupCotation"
Range(Cells(12, c), Cells(91, c)) = Range("A12:A91").Value
c = c + 1
If c >= 19 Then ArretCotation
End Sub


Sub ArretCotation()
On Error Resume Next
Application.OnTime Durée, "RecupCotation", , False

End Sub


Celui qui ne marche pas( les cotations démarrent en plage NQ12;NQ91 et vont jusqu'à AHW12:AHW91)


Option Explicit

Private Sub Workbook_Open()
c = 381
Application.OnTime TimeValue("16:00:00"), Procedure:="RecupCotation" '"09:01:00"
Range("NQ12:AHW91").ClearContents
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
ArretCotation
End Sub




Public Durée As Date
Public c

Sub RecupCotation()
Durée = Now + TimeValue("00:01:00") ' A remplacer par "00:01:00"
Application.OnTime Durée, "RecupCotation"
Range(Cells(12, c), Cells(91, c)) = Range("NQ12:NQ91").Value
c = c + 1
If c >= 528 Then ArretCotation
End Sub


Sub ArretCotation()
On Error Resume Next
Application.OnTime Durée, "RecupCotation", , False
End Sub
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonsoir
Nouvelle version, j'ai abandonné le système à 2 tableaux (trop gourmand en ressources). Je n'ai conservé que le principe avec le relevé toutes les minutes, mais au delà du premier 1/4 d'heure, je masque toutes les colonnes inutilisées.
https://www.cjoint.com/c/EEmvXT8R64u
Pour en vérifier le bon fonctionnement et provoquer volontairement des erreurs, j'en ai fait 4 copies, paramétrées à l'identique (même heure de début, même fréquence de relève des cotations). Puis je les ai fait tourner simultanément, résultat ok, pas de trous, aucune erreurs.
Pour que cela marche bien, il est impératif d'ouvrir une session excel pour chaque fichier, et non pas tous les 4 fichiers ouvert dans la même session. (les problèmes que vous avez rencontrés sont peut-être liés à ça).
Votre application et ce fichier doivent être lancés sur 2 sessions d'excel différentes. A partir de là, rien ne vous empêchera de faire autre chose.
Essayez, on en reparle
cdlt
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

bonsoir
je
viens d'essayer votre dernière version
le tableau marche très bien seul; mais des que j'ouvre une deuxième section Excel et que je mets en route mon propre tableau des que les liens DDE se mettent en route j'ai des problèmes (j'ai mon graphe en Barre de progression qui s'efface, c'est impressionnant je ne sais pas ce qui fait ca,mais apparemment il faut que ce tableau fonctionne a l(intérieur du mien comme je l'ai fait cet apres midi avec la version 15mn rafraichissement minutes
pouvez vous me donner exactement le code pour le rentrer en colonne NQ12:NQ91et jusqu'a AHW12:AHW91
j'ai déjà essaye cet après midi mais je ne sais pas ou je fait l'erreur
je vais le mettre dans mon tableau et essayer a nouveau
il n ya pas de raison que ca est marché d'un cote du tableau et que ca ne fonctionne pas de l'autre coté
une petite questions le colonnes sont masques mais le collage se fait il quand même est ce que les colonnes sont verrouilles ou peut on les démasquer au choix?
Merci et bonne soirée je vous en dirai davantage demain
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Voilà avec les nouvelles colonnes, Pour moi cela s'arrête à la colonne AHU et non AHW.(Rectifiez dans les 2 modules si cela ne vous convenez pas)
Je vous ai rajouter un bouton "Masquage/Démasquage des colonnes".
Les colonnes masquées ne sont pas verrouillées, elles se remplissent même en étant masquées.
https://www.cjoint.com/c/EEnfzKzwSmP
Bonne journée
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonjour
Sans vouloir faire le Suce Miel comme on dit chez moi"vous êtes un petit génie dans votre domaine "
vous avez parfaitement compris ce que je voulais et vous y êtes arrivé
je viens de le mettre dans mon classeur et cela marche parfaitement il y avait juste une erreur sur le chiffre 905 et la dernière colonne ne se copiait pas (rien de grave) ;le fait que ça ne marche pas quand on met deux classeurs en parallèle(seulement avec les liens DDE)ne me gène absolument pas (le soir je vais rapatrie les informations collectes vers mon gros classeur d'analyse

j'ai encore quelques petites questions a vous poser ,excusez moi ,mais c'est très rare de rencontrer des gens qui ont votre compétence dans votre Métier(ne m'en veuillez pas j'en profite...)
premièrement; si je veux que les cotations que vous avez mis en colonne A12:A91 ,s'inscrivent en colonne NO12:NO91" par pure commodité ;est ce que je vais pouvoir ajouter également dans la colonne NP12:NP91 d'autres cotations, qui elles restent fixent ,c'est le cours d'ouverture que je vais repiquer par = sur une autre partie de mon classeur; que faut il que je
change au code?
je voudrais savoir aussi si vous pouvez me donner votre avis
j'ai toujours eu un petit décalage sur Excel de environ une a deux secondes entre les cotations qui arrivent sur le logiciel d'import liens DDE et mon classeur EXCEL ; c'est un peu gênant car le graphique que j'ai fait en Barre de progression a ce décalage, et surtout quand j'achète des actions(je fait du trading a la journée) mon classeur me calculant en direct ma plus value j'ai ce décalage qui ne me permet pas d'avoir dans la même seconde ou j'en suis très exactement(alors que le logiciel fort heureusement affiche le temps réel
je me pose la question si
le fait d'avoir un logiciel DDE en 32 bits qui me collent les cotations ,puis le fait d'avoir un Excel 64bits avec Seven 64 bits , ne m'handicapent ils pas pour allouer la mémoire a EXCEl ou bien est ce que toute la mémoire disponible sur mon ordi est bien alloue quand même ,du fait que le logiciel n'interfère pas dans la mémoire allouer a Excel pour fonctionner normalement en 64 bits?
Dernière question qui me pose un problème ,avant dans Excel 2007 je pouvais importer le tableau de cotations en temps réel que me fournit Ma banque ,avec Excel 2013 ce n'est plus possible ils ont fait quelque chose qui empêchent l'import des sites WEB avec identifiant et mot de passe ( Mais quoi?)
est il possible de passer outre cette modification? et, est il possible d'importer la page WEB en temps réel à la seconde comme vous le faites avec la programmation (sur 2007 je pouvais le faire mais avec une minute de décalage ce qui ne me convenait pas)
un tel système me permettrait d'avoir mon entière autonomie
Enfin juste vous dire que je suis français et je réside au Maroc
comme je ne sais comment vous remercier ,si un jour vous avez envie de passer quelques jours au Soleil n(hésitez pas je vous recevrais avec grand plaisir ce sera ma façon de vous rendre la monnaie de la pièce
Merci mille fois de votre Sérieux et de votre pugnacité
Très Bonne journée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
si je veux que les cotations que vous avez mis en colonne A12:A91 ,s'inscrivent en colonne NO12:NO91"
Ajouter la 3ème ligne dans le module suivant ou remplacez le par celui-ci
Private Sub Workbook_Open()
    Sheets("CotationALaMinute").Select
    Range("NP12:NP91").Value = Range("A12:A91").Value
    c = 381
    Application.OnTime TimeValue("21:04:00"), Procedure:="RecupCotation" '"09:00:00"
    Range("NQ12:AHW91").ClearContents
End Sub


j'ai toujours eu un petit décalage sur Excel de environ une a deux secondes entre les cotations
Pourquoi ne pas faire un décalage de 1 ou 2 secondes dans le déclenchement de la tempo au lieu d'1mn mettre 58 ou 59 secondes
   Durée = Now + TimeValue("00:00:58") 


Pour les autres questions, désolé, mais je ne suis pas un expert et ce n'est pas non plus mon métier,
J'espère que les petites modifications proposées amélioreront les résultats.
Ce soir, je pars pour quelques jours. Je ne serai pas en mesure de pouvoir vous répondre si vous avez un souci,
En attendant je vous souhaite une bonne journée.
Bien cordialement
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Je viens de réaliser que j'ai dit une bêtise; c'est l'heure de démarrage qu'il faut anticiper d'1 seconde, et ne pas toucher à la tempo
Private Sub Workbook_Open()
    Sheets("CotationALaMinute").Select
    Range("NP12:NP91").Value = Range("A12:A91").Value
    c = 381
    Application.OnTime TimeValue("08:59:59"), Procedure:="RecupCotation" '"09:00:00"
    Range("NQ12:AHW91").ClearContents
End Sub

mais il manquera la cotation à l'ouverture, avez-vous un autre moyen de la récupérer, sinon je jetterai un oeil en fin d'après-midi?
là je dois partir
A tester
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Bonjour
comment allez vous ?(êtes vous rentré de votre petit séjour?)

j'ai fait évoluer le tableau ce principe me permet de faire des analyses pointus;
je superpose dans ma colonne ou sont copier les cotations plusieurs sources j(ai maintenant 3 sources de données
Dans ma colonne ou je récupère les données j'ai maintenant une ligne sur deux qui est vide,sur chaque ligne vide j'ai fait des formule qui font référence sous conditions, a l' heure affichée tout en haut dans la barre jaune que j'ai mise sur la première ligne(ligne 1 tout en haut, )
cette astuce ;me permet d'afficher dans ces lignes juste l'heure au dessus de la cotation (l'heure ne s'affiche que sous une condition précise )je sais maintenant voir facilement a quelle heure c'est produit l'événement et le dégradé dans le temps
a cela j'ai associe une mise en forme conditionnelle qui me permet de ne plus voir les cellules qui sont identiques dans la même ligne ;ainsi j'ai une lisibilité maximum
le soucis est que lorsque je met en route le système ; les formules qui sont dans les lignes vides sont écrasées,j"ai supprime une partie du code
Range("NY12:PA251").ClearContents
je pensais que cela allait marcher ,mais quand j'ouvre le classeur il ne reste que les cotations copie en mode valeurs (ce qui est très bien puisque si le matin je m'aperçois que je n'ai pas récupéré les cotations sur mon autre classeur ,je suis toujours a temps de le faire ;le problème est que les formules ont disparus des lignes au dessus des cotations ( comment résoudre ce problème?

j'ai également tout transformé et au final je retiens le tableau de 09:01:00 à 09:30:00 (avec collage toutes les minutes et un second qui va partir de 09:45:00 à 17:45:00'avec collage toutes les 15 minutes sans masquer les colonnes, (le classeur sera beaucoup moins sollicite en évitant le collage toutes les minutes ;du moins pour la plus grande partie de la journée
j'ai fait le premier tableau maintenant il part de NY12:NP251 la colonne de cotation est la 389 (NN) cela marche parfaitement si ce n'est ce problème de disparition de formules mais je ne pense pas que pour vous cela , soit un gros problème
Après je vais m'attaquer au deuxième tableau ;mais avant je voudrais avoir votre avis pour savoir si je peux le mettre en prolongement de l'autre
Est ce réalisable d'avoir deux tempos de fonctionnement sans changer de feuille toujours avec un seul code (il n'y a que vous qui puissiez me le dire?
sinon si il faut que je le mette dans une deuxième feuille ,je le ferais mais ou me faut il alors mettre les nouveaux codes ?
Merci et si vous n'êtes pas rentré et bien j'attendrais
Bonne soirée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Comme promis, voici le fichier avec les modifications demandées.
https://www.cjoint.com/c/EEzgoAi6qwU
Le fichier joint est compressé, il est constitué de 3 fichiers.
Décompressez et recopiez ces 3 fichiers dans un même répertoire, ouvrez "SynthèseCotation" dans le module 1, remplacez le chemin de l'emplacement des fichiers par votre chemin.
Enregistrez et fermez tout.
Fonctionnement: Avant 9h, ouvrez "SynthèseCotation", le relevé des cotations démarrera à 9h jusqu'à 9h30 avec relevé toutes les minutes, puis de 9h15 à 17h45 avec relevé tout les 1/4 d'heure.
Pour info: les 2 autres fichiers sont vides, ils ne contiennent que le code initialisant le démarrage du relevé avec une tempo différente. ceci est transparent pour vous.
Cdlt
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Principe de fonctionnement:
Avant 9h, ouvrez uniquement le fichier "SynthèseCotation", c'est lui qui ouvrira les 2 autres automatiquement. A 9h commencera le relevé des cotations jusqu'à 17h45.

pour le classeur cotation minute par exemple si je veux Effacer Step2 Step 2 signifie que le programme va sauter 1 ligne sur 2 pour n'effacer que les valeurs. On n'efface pas les autres lignes car elles contiendront la formule que vous avez créer et qui récupère l'heure (c'est vous qui devez la recopier, puisque je ne la connaîs pas).

pour Range("NY" & i & ":QM" & i).ClearContents
(je comprends pas, la procédure cotations une minute commence bien en NY mais s"arrête en PC et non en QM?)
. Sauf erreur de ma part, les relevés par minute commence en NY (colonne 389) et se termine en colonne PC (colonne 419). Ensuite,
on commence à enregistrer les relevés par 1/4 d'heure, ces derniers commence à 9h colonne PD (colonne 420) jusqu'à QM (colonne 455), les colonnes PD (relevés de 9h), PE,(relevés de 9h15) et PF (relevés de 9h30) sont masquées, car inutilisées mais leur présence est nécessaire pour le bon déroulement du programme.

pour If c>=411 je ne comprend pas non plus, Normalement , cela s'arrête à 411, en mettant >= je suis sûr de ne pas déborder (mieux vaut prévoir l'imprévisible).

je veux savoir également si j'efface .ClearContents (je vais bien avoir les cotations qui restent enregistres ?) mettez l'apostrophe, il sera plus facile de revenir en arrière si cela ne vous convenait pas.

vous avez noté For i = 13 To 251 Step 2(ce qui correspond au ligne 13 a 251 et de suite après Range(Cells(i, 381), Cells(i, 539)).ClearContents
. effectivement, c'est bien 455 au lieu de 539, lors des tests, j'avais sélectionner trop de colonnes, j'avais corrigé par la suite mais j'ai oublié de changer cette valeur.

Voilà, est-ce plus clair
cdlt
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

bonjour
a nouveau je n"arrive pas a ce que les fichiers s"ouvrent automatiquement avec synthèse cotation j'ai une ligne de code qui bugge et je ne comprends pas pourquoi?
j'ai essaye deux solutions mais ça ne marche pas et ça commence a me prendre la tête

Sub Auto_open()
Windows("SynthèseCotation.xlsm").Activate
Application.ScreenUpdating = False
For i = 13 To 251 Step 2
Rows(i).Select
Selection.NumberFormat = "0.00"
Range("NY" & i & ":QM" & i).ClearContents
Next

Application.ScreenUpdating = True
Application.ScreenUpdating = False
Chemin = "C:\Users\Public\Documents\Bourse jo" 'mettez ici le chemin ou se trouve vos fichiers"
Workbooks.Open Filename:=Chemin & "C:\Users\Public\Documents\Bourse jo\CotationParMinute.xlsm"
Workbooks.Open Filename:=Chemin & "C:\Users\Public\Documents\Bourse jo\CotationAu Quart-dheure.xlsm"
Windows("C:\Users\Public\Documents\Bourse\SynthèseCotation.xlsm").Activate
End Sub


Bugg sur ce code

Workbooks.Open Filename:=Chemin & "C:\Users\Public\Documents\Bourse jo\CotationParMinute.xlsm"
puis j'ai essaye de modifier le code ainsi

Deuxieme Essai

Sub Auto_open()
Windows("SynthèseCotation.xlsm").Activate
Application.ScreenUpdating = False
For i = 13 To 251 Step 2
Rows(i).Select
Selection.NumberFormat = "0.00"
Range("NY" & i & ":QM" & i).ClearContents
Next

Application.ScreenUpdating = True
Application.ScreenUpdating = False
Chemin = "C:\Users\Public\Documents\Bourse jo" 'mettez ici le chemin ou se trouve vos fichiers"
Workbooks.Open Filename:=Chemin & "CotationParMinute.xlsm"
Workbooks.Open Filename:=Chemin & "CotationAu Quart-dheure.xlsm"
Windows("SynthèseCotation.xlsm").Activate
End Sub

J'ai a nouveau un bugg a la meme ligne

Workbooks.Open Filename:=Chemin & "CotationParMinute.xlsm"

j'ai toujours Erreur d'execution1104 désolé nous ne trouvons pas c:Users public Documents Bourse jo CotationParMinute..xlxm Peut être l'avez-vous deplacé renomme ou supprimé
Je ne sais plus ce qu'il faut faire
Merci de me dire ou je faits mon erreur
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Chemin = "C:\Users\Public\Documents\Bourse jo"
Workbooks.Open Filename:=Chemin &\CotationParMinute.xlsm"
Workbooks.Open Filename:=Chemin & \CotationAu Quart-dheure.xlsm"
Windows("C:\Users\Public\Documents\Bourse\SynthèseCotation.xlsm").Activate
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

re
j'ai essaye de recopier strictement comme vous me l'avez marqué ca me marque erreur de syntaxe
j'ai modifié maintenant ainsi' parceque je pensais qu'il manquait les guillemets et jo en fin du code,çà me marque toujours un bugg????

Sub Auto_open()
Windows("SynthèseCotation.xlsm").Activate
Application.ScreenUpdating = False
For i = 13 To 251 Step 2
Rows(i).Select
Selection.NumberFormat = "0.00"
Range("NY" & i & ":QM" & i).ClearContents
Next

Application.ScreenUpdating = True
Application.ScreenUpdating = False
Chemin = "C:\Users\Public\Documents\Bourse jo" 'mettez ici le chemin ou se trouve vos fichiers"
Workbooks.Open Filename:=Chemin & "CotationParMinute.xlsm"
Workbooks.Open Filename:=Chemin & "CotationAu Quart-dheure.xlsm"
Windows("C:\Users\Public\Documents\Bourse jo\SynthèseCotation.xlsm").Activate
End Sub

le bugg
Workbooks.Open Filename:=Chemin & "CotationParMinute.xlsm"
la vraiment je ne sais plus ce qu'il faut faire pour que ça marche
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
j'ai essaye de recopier strictement comme vous me l'avez marqué
et pourtant, il y a une différence entre ça
Workbooks.Open Filename:=Chemin & "CotationParMinute.xlsm"
Workbooks.Open Filename:=Chemin & "CotationAu Quart-dheure.xlsm"
et ça
Workbooks.Open Filename:=Chemin & "\CotationParMinute.xlsm"
Workbooks.Open Filename:=Chemin & "\CotationAu Quart-dheure.xlsm"
regardez bien
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

re
à nouveau je reviens vers vous
vous m'annoncez qu'il y a bien effectivement une différence mais vos codes en dessus étaient marques ainsi

Chemin = "C:\Users\Public\Documents\Bourse jo"
Workbooks.Open Filename:=Chemin &\CotationParMinute.xlsm"
Workbooks.Open Filename:=Chemin & \CotationAu Quart-dheure.xlsm"
Windows("C:\Users\Public\Documents\Bourse\SynthèseCotation.xlsm").Activate

il n'y avait pas de guillemets dans vos codes tel que vous me les avait envoyé, c'est pour cette raison que j'ai essaye de les ajouter malheureusement je les ai mis en retirant les barres pensant que ça allait fonctionner
maintenant je vois que vous avez ajouter les guillemets dans vos nouveaux codes tout en conservant les barres mais en les mettant après les guillemets
effectivement pour ces deux codes, ce n'est plus en rouge, mais pour le dernier code
Windows("C:\Users\Public\Documents\Bourse\SynthèseCotation.xlsm").Activate
je ne peux le copier non plus tel que vous l'avez marque dans votre message d'avant parce qu il manque jo et ça ne fonctionne pas ;alors j'ai mis ceci.tel que vous le voyez en dessous
mais si les deux autres classeurs s'ouvrent désormais lorsque j'ouvre synthèse cotation ,il y a un bugg erreur d'execution 9 l(indice n'appartient pas a la sélection)
le dernier code que j'ai fait ci dessous se met en jaune???

Windows("C:\Users\Public\Documents\Bourse jo\SynthèseCotation.xlsm").Activate
je ne vois pas ou est le problème
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Voici la syntaxe correcte
Chemin = "C:\Users\Public\Documents\Bourse jo"
Workbooks.Open Filename:=Chemin & "\CotationParMinute.xlsm"
Workbooks.Open Filename:=Chemin & "\CotationAu Quart-dheure.xlsm"
Windows("SynthèseCotation.xlsm").Activate.

Quand je vous ai répondu la première fois, j'étais sur le point de partir, et j'ai répondu un peu trop vite. Mais vous avez corrigé de vous même.
Pour la dernière ligne, Windows("SynthèseCotation.xlsm").Activate. on ne doit pas répéter le chemin, seul le nom du fichier doit apparaître. Cette ligne signifie à Excel d'afficher la fenêtre "SynthèseCotation.xlsm" parmi les 3 fenêtres ouvertes, elle devient la fenêtre active et c'est sur celle-ci que s'effectuera le remplissage des valeurs.
Je vous rappelle quand même que dans le message 22 j'avais spécifier ceci:
ouvrez "SynthèseCotation" dans le module 1, remplacez le chemin de l'emplacement des fichiers par votre chemin. et dans le code j'avais mis juste à côté en remarque "'mettez ici le chemin ou se trouve vos fichiers" ", il n'y avait que cette ligne à modifier et pas les 3 autres.
Y voyez-vous plus clair?
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018

Bonsoir
je n'y vois pas clair du tout , mais je suis sur que ce n'est pas grand chose qui perturbe votre travail
j'ai mis votre dernière ligne comme vous l'avez écrite elle se met immédiatement en rouge et affiche erreur de syntaxe
donc si j'essaye d'ouvrir synthèse aucun des deux classeurs n'est maintenant appellé?
avouez que c'est capricieux comme système
je vais remettre provisoirement le code comme je l'avais mis même si ce n'est pour le moment pas satisfaisant;avec ce code
tantôt les deux classeurs s'affichaient et parfois un seul s'ouvrait en même temps que le classeur actif et c'est toujours cotations minutes qui ne s'ouvrait pas tout le temps
j'ai tout de même essaye eu le temps d'essayer et j'ai constaté un petit problème ,seulement au démarrage du tempo les deux colonnes 09:00:00 et 09:01:00 sont remplies en même temps des que la minuterie s'enclenche, après tout se remplie normalement d"a partir des colonnes suivantes toutes les minutes ;je n'ai pas encore eu le temps d'essayer toutes les 15 mn
je vais arrêter la et on verra demain, c"est trop usant surtout quand on est impuissant et qu'on a pas les moyens de trouver la solution
et je me dit que dans le pire des cas je reviendrai a votre tableau initial de une minute sur toute la journée
Bonne soirée à demain si vous avez le temps bien entendu
et merci de votre patiente
Messages postés
134
Date d'inscription
vendredi 8 mai 2015
Statut
Membre
Dernière intervention
5 avril 2018
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Bonjour
j'ai arrêté parce que a force de tripatouiller j'ai plus rien qui fonctionne correctement; j'ai même le classeur qui se remet au format nombre????
il faut que je fasse une pose parce que je ne sais plus ce que j'ai fait et je n'avance plus
vous me direz si de votre cote avec les paramètres que je vous ai donne ca marche
je sais que j'ai un problème au niveau aussi de clearcontents je ne sais pas si il faut l'apostrophe doit être mise avant le point ou avant Range en début de ligne et sur les deux classeurs ou un seulement j'ai du touche a quelque chose qui fait tout foiré
Merci
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Voici le code de chaque élément, remplacez les vôtres par ces derniers, ou bien si vous avez le temps, amusez-vous à les comparer.
Chez moi, ils fonctionnent bien du moins pour les minutes, pour les 1/4 d'heure, actuellement je n'ai pas le temps de le vérifier, mais il ne devrait pas y avoir de problèmes.

Fichier "SynthèseCotation" Module 1

Sub Auto_open()
    Windows("SynthèseCotation.xlsm").Activate
    Application.ScreenUpdating = False
    For i = 12 To 131
        Rows(i).Select
        Range("NR" & i & ":QF" & i).ClearContents
    Next

    Application.ScreenUpdating = True
    Application.ScreenUpdating = False
    Chemin = "C:\Users\Public\Documents\Bourse jo" 'mettez ici le chemin ou se trouve vos fichiers"
    Workbooks.Open Filename:=Chemin & "\CotationParMinute.xlsm"
    Workbooks.Open Filename:=Chemin & "\CotationAu Quart-dheure.xlsm"
    Windows("SynthèseCotation.xlsm").Activate
End Sub


'******************************************

Fichier "CotationParMinute" Module ThisWorkbook
Option Explicit

Private Sub Workbook_Open()
    Dim i As Long
    For i = 12 To 131
        Rows(i).Select
        Range("NR" & i & ":PC" & i).ClearContents
    Next
    c = 382
    T1 = 1
    Tempo1 = 1 / 24 / 60
    TempsInitial1 = "00:09:00" '= heure de démarrage
    TempsInitial1Num = Format(TempsInitial1, "0.00000")
    Application.OnTime TimeValue(TempsInitial1), Procedure:="RecupCotation1" '"09:00:00"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ArretCotation1
End Sub


'******************************************

Fichier "CotationParMinute" Module 1
    Public Durée1 As Date
    Public c As Long
    Public TempsInitial1 As Date
    Public TempsInitial1Num As Double
    Public T1
    Public Tempo1

Sub RecupCotation1()
    If T1 >= 60 Then T1 = 0 '60
    Durée1 = Format(TempsInitial1Num + (T1 * Tempo1), "hh:mm:ss")
    Application.OnTime Durée1, "RecupCotation1"
    Range(Cells(12, c), Cells(131, c)) = Range("A12:A131").Value
    Application.Wait Now + TimeValue("00:00:01")
    TempsInitial1Num = TempsInitial1Num + Tempo1
    If c >= 413 Then ArretCotation1 'N° de la dernière colonne des cotations à la minute
    c = c + 1
End Sub

Sub ArretCotation1()
    On Error Resume Next
    Application.OnTime Durée1, "RecupCotation1", , False
End Sub


'******************************************

Fichier "CotationAu Quart-dheure" Module ThisWorkbook
Option Explicit

Private Sub Workbook_Open()
    Dim i As Long
    For i = 12 To 131
        Range(Cells(i, 413), Cells(i, 448)).ClearContents
    Next i
    d = 413
    T2 = 1
    Tempo2 = 15 / 24 / 60
    TempsInitial2 = "00:09:00" '= heure de démarrage
    TempsInitial2Num = Format(TempsInitial2, "0.00000")
    PremierPassage2 = True
    Application.OnTime TimeValue(TempsInitial2), Procedure:="RecupCotation2"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ArretCotation2
End Sub


'******************************************

Fichier "CotationAu Quart-dheure" Module 1
    Public Durée2 As Date
    Public d As Long
    Public TempsInitial2 As Date
    Public TempsInitial2Num As Double
    Public T2
    Public Tempo2
    Public Bascule2 As Date
    Public PremierPassage2 As Boolean

Sub RecupCotation2()
    If T2 >= 4 Then
        T2 = 0
        TempsInitial2 = TempsInitial2 + "01:00:00"
        TempsInitial2Num = Format(TempsInitial2, "0.00000")
    End If
    Durée2 = Format(TempsInitial2Num + (T2 * Tempo2), "hh:mm:ss")
    T2 = T2 + 1
    Application.OnTime Durée2, "RecupCotation2"
    Range(Cells(12, d), Cells(131, d)) = Range("A12:A131").Value
    Application.Wait Now + TimeValue("00:00:01")
    If d >= 449 Then ArretCotation2 'N° de la première colonne vide (ou dernière colonne de la cotation au quart d'heure)
    d = d + 1
End Sub

Sub ArretCotation2()
    On Error Resume Next
    Application.OnTime Durée2, "RecupCotation2", , False
End Sub


Bonne journée
Cdlt
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Bonjour
je vous dirais pas ce que j'ai oublié de faire pour avoir ces derniers problèmes de peur de passer pour un vrai calamar
Maintenant çà marche; en fait le problème venait de moi ,mais chut ???
juste de petites questions
Sur Ce programme, peut on dire que c'est du copié collé temporisé, ou bien est ce une procédure de mettez moi le résultat des cellules de cette plage dans une autre plage en avançant a chaque minute ou quart d'heure d'une colonne(en précisant le départ de la plage réceptrice) selon les tempos et arrêter a la fin de la plage définie.
ce qui a mon avis peut être je me trompe n'est pas la même chose je pencherai pour la deuxième solution
le fait d"'avoir supprimé le clearcontents dans le module 1 de trade.xlsm sans toucher aux autres( d'ailleurs je ne saisie pas pourquoi la même procédure de clearcontents sur les tempos??) est en soi suffisant pour récupérer les cotations jusqu'à la prochaine procédure
je ne pense pas aussi que ce soit un handicap que les cotations du jour prennent la place de celles de la veille?
une autre question
dans le cas ou j' arrêterai avec la macro arrêt cotation minutes je suppose que le tableau des 30 premières minutes s'arrêterait mais celui de quart d'heure continuerai?

je vous tiendrais informe de la suite et du résultat final, j'ai maintenant beaucoup de pains sur la planche ;j'ai eu une idée géniale aujourd'hui je vous en parlerai des que j'aurais réussi a finir tout ce travail
il est bon quelquefois de se prendre la tête quand on voit le résultat final;je doit dire que je suis plus que satisfait.

je ne serais assez vous remercier, à bientôt et bonne fin de journée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonsoir
Ce programme, peut on dire que c'est du copié collé temporisé, ou bien est ce une procédure de mettez moi le résultat des cellules de cette plage dans une autre plage en avançant a chaque minute ou quart d'heure d'une colonne(en précisant le départ de la plage réceptrice) selon les tempos et arrêter a la fin de la plage définie. N'est-ce pas la même chose?. on prend le contenu de la colonne A que l'on colle dans les colonnes au fur et à mesure que le temps s'écoule?
je ne saisie pas pourquoi la même procédure de clearcontents sur les tempos Dans le cas ou l'on ne ferme pas le fichier SyntheseCotation en fin de journée, pour qu'il se réinitialise le matin suivant. Mais effectivement vu comme ça, on peut supprimer (du moins mettre en remarque,restons prudents) cette partie de code dans SyntheseCotation.
dans le cas ou j' arrêterai avec la macro arrêt cotation minutes je suppose que le tableau des 30 premières minutes s'arrêterait mais celui de quart d'heure continuerai? OUI
Je vous souhaite une bonne soirée
Cdlt
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

bonsoir
comment allez vous?
je reviens vers vous pour solutionner mon problème MAX et MIN je vous mets un fichier c'est bien plus simple
le tableau de cotation marche parfaitement bien j'ai commencé l'analyse statistique c'est un gros travail je pense en avoir pour deux a trois mois
je vous montrerais le résultat final
je voulais vous demander aussi si vous connaissez le moyen d'ouvrir une extension exécutable JAR?
merci de votre aide encore une fois
très bonne soirée
http://www.cjoint.com/c/EFlr30jZUvb
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Je l'avais oublié celui là
https://www.cjoint.com/c/EFmcvNKIxJw
Bonne journée
Cdlt

Bonjour
Merci de votre rapidité
Avec cette formule je vais pouvoir rentrer maintenant dans le vif du sujet
très bonne journée

Bonjour
je suis entrain de mettre en oeuvre votre formule ,tout est nickel sauf un probleme auquel je n'avais pas réfléchi suffisemment
le tempo demarrant a 09:00:00 pour les minutes mais également pour les quarts d'heures;lorsque je specifie la plage pour obtenir le MIN ou MAX je peux faire demarrer ma plage en :09:01:00(puisque la premiere cotation de 09:00:00 va me marquer la cotation de la veille; les cours d'ouverture mettant un certain temps a se mettre en place)
le probleme est lorsque j'englobe par exemple si je veux avoir le MIN ou MAX entre 09:01:00 et 09:45:00 ou 09:01:00 et 10:45:00....etc:;j'ai la colonne qui est masquée du départ des cotations quarts d'heure, qui elle a enregistré le cours de 09;00:00, et fausse le MIN ou le MAX(puique en 09:00:00 comme je vous l'ai dit ce sont les cours de la veille qui vont etre inscrit)
ne peut on pas dans votre formule au lieu d'indiquer la plage mettre les cellules une a une separée par un point virgule?( ce qui me permettrait de ne pas prendre en compte la colonne masquée)
Merci et Bonne journée

Bonjour a nouveau
voila ce que j'ai fait pouvez vous me dire si la solution est bonne ?
j'ai 09:00:00 qui est en BGH11 donc j'ai demarré ma plage pour le MIN et MAX en BGI11
;j'ai ma premiere ligne de cotation qui démarre de BGH20 à BIV20 la deuxieme ligne de cotation est en BGH22:BIV22
donc prenons pour exemple le MIN de la premiere ligne: plutot que de specifier la plage entiere , pour ne pas prendre en compte la colonne masquée, j'ai mis la formule , cellule par cellule en ne prenant pas en compte la cellule de la colonne masquée , ce qui donne =MIN(BGI20;BGJ20;BGK20;BGL20;BGM20;BGN20;BGO20;BGP20;BGQ20;BGR20;BGS20;BGT20;BGU20;BGV20;BGW20;BGX20;BGY20;BGZ20;BHA20;BHB20;BHC20;BHD20;BHE20;BHF20;BHG20;BHH20;BHI20;BHJ20;BHK20;BHL20;BHN20;BHO20;BHP20;BHQ20;BHR20;BHS20;BHT20;BHU20;BHV20;BHW20;BHX20;BHY20;BHZ20;BIA20;BIB20;BIC20;BID20;BIE20;BIF20;BIG20;BIH20;BII20;BIJ20;BIK20;BIL20;BIM20;BIN20;BIO20;BIP20;BIQ20;BIR20;BIS20;BIT20;BIU20;BIV20)
la colonne masquée etant la BHM20
il faut simplement ajouté par la suite $devant chaque lettre ce que j'ai oublié de faire)
puis j'ai mis votre formule ainsi
=INDEX($BGI$11:$BIV20;1;EQUIV($BFM20;$BGI20:$BIV20;0))
l'heure du MIN etant noté en cellule BFM19
le MIN etant noté en BFM20
la formule pour le MAX etant celle ci
=INDEX($BGI$11:$BIV20;1;EQUIV($BFN20;$BGI20:$BIV20;0))
le MAX etant noté en BFN20 et lheure du MAX en BFN19

pensez vous que cette solution soit bonne ou faut il que je trouve autre chose
l'avantage est que; si vous me dites que la solution est bonne je vais gagner énormement de temps parceque les formules en les copiant en cascade toutes les deux lignes se font automatiquement sans avoir a intervenir sur la saisie
merci de vos conseils précieux
Bonne journée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
En espérant que cela corresponde à votre attente, j'ai mis un "/" comme séparateur (le point virgule prêtait à confusion avec la virgule)
https://www.cjoint.com/c/EFmlt57IIAd
Bonne journée
Cdlt
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Oui, vous pouvez, mais ça ne répond pas à la question (56), et je vous avez donné la solution en (57).
Ce que vous proposez à nouveau , c'est de revenir à la solution que je vous avez soumise en (54), sans la cotation des 9h. mais vous n'obtenez qu'un seul MIN et qu'un seul MAX pour la période comprise entre 9h01 et 17h45.
En (56), vous demandiez à avoir le MIN dans la même cellule sous la forme
"MIN(min) ; MIN (1/4d'heure)"
idem pour le MAX, c'est ce que j'ai fais et c'est, me semble t-il, la solution qui correspond le mieux à vos attentes.
Je vous renvoi le fichier (celui qui correspond à votre demande (56)) avec les formules adaptées aux nouvelles lignes et colonnes, maintenant libre à vous de choisir la méthode qui vous convient.
https://www.cjoint.com/c/EFnefm53GWw
Bonne journée
Cdlt

Bonsoir
pouvez vous me dire si vous savez lire ce langage
http://www.cjoint.com/c/EFnsDhQqg73
Merci bonne soirée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324 > chrisnapoli
Bonjour
Non, je ne peux pas l'ouvrir sur mon PC
Cdlt
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Bonjour
je vous le renvoie differemment essayez de l'ouvrir avec internet explorer
http://www.cjoint.com/c/EFogyGyiqb8
Bonne journée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
non plus, c'est illisible
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Bonjour , comment allez vous?
c'est pas grave ;je vais trouver une autre solution 'le fichier est ouvert mais c'est crypté je suppose qu'il faut un logiciel de décryptage
j'ai encore besoin de vous ,pouvez vous m'aider
dans une plage( BFM19:BFM47) j'ai mis une mise en forme conditionnelle à une cellule sur deux (BFM19;BFM21;BFM23...etc)
je voudrais connaitre le nombre de ces cellules qui se mettent en vert foncé des que la condition écrite dans ma formule se vérifie
j'ai mis ce code dans le module 3 de mon classeur
Function NbCoul(Zne As Range, Couleur As String)
Application.Volatile True
For Each cell In Zne
If cell.Interior.ColorIndex = 48 Then NbCoul = NbCoul + 1
Next
NbCoul = NbCoul
End Function
'Création Fonction pour récupérer le numéro couleur de remplissage
Function Couleur(CL As Range) As Long
Couleur = CL.Interior.ColorIndex
End Function

puis j'ai mis dans workbooksheet(alors que dans l'exemple donné le code était dans la feuille)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub

j'ai inscrit en cellule BFK15 =NbCoul(BFM19:BFM47;48)

je vous ai précisé que dans l'exemple que donne le site sur internet ce code était dans la feuille ou se trouvaient les opérations en question; mais dans mon cas je ne peux pas mettre ce code a cette place puisque j'ai déjà un autre code qui s'apparente un peu a celui-ci, cela m'affiche erreur de compilation
si je le mets en dessous à la suite de celui-ci
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
Range("DP2") = Target
End If
End Sub

je suppose que le problème vient de la, puisque si j'essaye les deux codes dans un classeur vierge en les mettant comme indiqué, le premier dans un module 1 et le second dans la feuille cela fonctionne parfaitement
Pouvez-vous me dire comment et où placer le code
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub

Merci de votre aide très bonne journée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Essayez ceci
Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("BFM19,BFM21,BFM23,BFM25,BFM27,BFM29,BFM31,BFM33,BFM35,BFM37,BFM39,BFM41,BFM43,BFM45,BFM47")) Is Nothing Then Calculate
    If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then Range("DP2") = Target
End Sub

Bonne journée
Cdlt

BONJOUR
helas ,cela ne marche pas pour la raison suivante
lorsque j'applique n'importe ou dans le classeur le code ;cela marche mais lorsque je l'applique sur la plage ou est pris en compte les heures cela me marque formule incohérente
j'ai essaye avec ce code aussi
Function NbColor(ByRef Plage As Range, Couleur As Byte) As Long
Dim c As Range
Dim nb As Long
nb = 0
For Each c In Plage
If c.Interior.ColorIndex = Couleur Then
nb = nb + 1
End If
Next c
NbColor = nb
End Function

Function NbColorSameAs(ByRef Plage As Range, ByRef Cellule As Range) As Long
NbColorSameAs = NbColor(Plage, Cellule.Interior.ColorIndex)
End Function

Function NbColorText(ByRef Plage As Range, ByRef Couleur As Byte, text As String) As Long
Dim c As Range
Dim nb As Long
nb = 0
For Each c In Plage
If c.Interior.ColorIndex = Couleur And c.Value = text Then
nb = nb + 1
End If
Next c
NbColorText = nb
End Function

Function NbColorAndTextSameAs(ByRef Plage As Range, ByRef Cellule As Range) As Long
NbColorAndTextSameAs = NbColorText(Plage, Cellule.Interior.ColorIndex, Cellule.Value)
End Function

cela marche aussi parfaitement mais en dehors de la plage de cellules ou les heures sont marquées
je ne vois pas ce que je peux faire pour contourner ce probleme parce que en mettant les cellules concernées au format nombre il est toujours marqué" référence a des cellules vides "
qu'en pensez vous?
très bonne journée








Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
Range("DP2") = Target
End If
End Sub

je l'ai mis seulement seul dans un module ;la aussi cela marche parfaitement sauf a l'endroit ou les cellules ont la formule par exemple
=INDEX($BFU$11:$BGX22;1;EQUIV($BFM22;$BFU22:$BGX22;0))

dans ce deuxième cas les cellules qui ont une couleur suite aux mises en forme conditionnelles que je leur ai donnés ne sont pas pris en compte , cela me marque "référence a des cellules vides"

Bonjour a nouveau

je viens de me rendre compte que si on fait référence aux cellules ou sont inscrites les heures puis que l'on met le résultat de cette cellule ailleurs en inscrivant simplement =
alors a ce moment la on a plus ce problèmes de "ref a cellules vides" ou "formules incohérente"
le probleme de comptabiliser des cellules couleur se fait alors sans probleme
comme je doit rapatrier toutes ces résultats de statistiques au final ,juste en dessous de mon graphe à barres de progression (par commodité pour avoir toutes les informations en un seul coup d'oeil) je pourrais a ce moment la comptabiliser les couleurs de de cet emplacement
j'ai une question à vous poser
est il faisable ?
lorsque je clique une seule fois dans une de ces deux plages , j'ai le contenue de la cellule ou je clique en cellule DP2 (ce qui me permet par la suite de rapatrier des quantités d'information avec ce code
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
Range("DP2") = Target
End If
End Sub
peut on imaginer , associe a ce code un code qui dirait :
lorsque le contenue de la cellule DP2 est égal à par exemple CV12 "ou" CX12
(CV12 et CX12 ont la même valeur; Exemple en l'occurrence ACCOR pour CV12
et ACCOR- pour CX12 (avec un tiré en plus sur ACCOR, ce qui me permet d'ajouter un scenario supplémentaire sur la même valeur)
et la cellule CZ9>0;CZ12>0; mettez moi la plage(?) en plage(?)
avec ce système des que l'ouverture de marche( Indice positif ou négatif) a 09:00:00 sera fixée et des que le résultat de l(ouverture de chaque valeur sera connue(positive ou négative) je pourrais avoir toutes mes statistiques s'inscrire sous mes yeux en fonction du scenario réel se déroulant a l'instant présent
donc des que je cliquerais dans une cellule que ce soit a gauche ,colonne CV ou CX , c'est un scenario différent qui apparaitra en fonction du choix de la valeur que je me serais fixe( en m(aidant de toutes ces informations collectés
je vous précise qu(il y a 4 scénarios possibles indices positifs ou négatifs avec premier de valeur positif ou négatif(tout cela associe aux quarante valeurs du cac 40
l(ouverture positive ou négative de l(indice cac 40 se fait en cellule CZ9 et l(ouverture des valeurs se fait également en CZ mais démarre en ligne 12 et fini en ligne 51
pour résumer on a ceci
CZ9>0;CZ12>0
CZ9>0;CZ12<0
CZ9<0;CZ12>0
CZ9<0;CZ12<0
en fonction de chaque scenario il faudra que les statistiques concernés viennent s'inscrire a l'emplacement le meilleur (mais toujours le même)
est ce réalisable ou faut il que je le fasse par formules
merci de vos conseils
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
Range("DP2") = Target
End If
End Sub
peut on imaginer , associe a ce code un code qui dirait :
lorsque le contenue de la cellule DP2 est égal à par exemple CV12 "ou" CX12
Dans le cas présent DP2 prend la dernière valeur entrée en CV12 ou CX12
(CV12 et CX12 ont la même valeur; Exemple en l'occurrence ACCOR pour CV12
et ACCOR- pour CX12 (avec un tiré en plus sur ACCOR, ce qui me permet d'ajouter un scenario supplémentaire sur la même valeur)

Les valeurs ne sont pas égales puisque il y a un tiret en plus sur la deuxième.
et la cellule CZ9>0;CZ12>0; mettez moi la plage(?) en plage(?) Quelle plage en quelle plage?
Tout ceci est bien difficile à comprendre. Ne pourriez-vous pas mettre un tableau excel en pièce jointe en mettant plusieurs exemples précis et bien commentés sur ce que vous attendez, parce que là, franchement ce n'est pas clair du tout.
Bonne journée
Cdlt

Bonjour
des que j'aurais fini la saisie finale de toutes les statistiques( c'est très long a faire) je vous ferais passer le document , pour voir si c'est mieux que j'utilise les formules ou la programmation
je ne veux pas vous mettre sur une piste avant de savoir moi même exactement ou je vais pouvoir mettre au final les plages dont je vous parlais ,de façon que ce soit le plus efficace et fonctionnel possible et ne pas vous déranger pour rien

Par contre pouvez vous me dire si il y a possibilité de pouvoir ajouter selon le même principe que ce code que j'ai déjà dans ma feuille 7statist (à la suite en dessous)

Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
Range("DP2") = Target
End If
End Sub

deux codes
le premier qui dirait, lorsque je clique une fois dans la cellule CP53 le contenue de CP53
va se retrouver dans la cellule CS 56;lorsque je clique une fois dans la cellule CP 54;, le contenue de CP 54 va se retrouver dans la cellule CS 56

le deuxième qui dirait lorsque je clique une fois dans la cellule DE53 le contenue de DE 53
va se retrouver dans la cellule DA 56;lorsque je clique une fois dans la cellule DE 54;, le contenue de DE 54 va se retrouve rdans la cellule DA 56

Si ces codes sont réalisable à la suite du premier cela me permet déjà de savoir que même si il n y a pas possibilité de faire avec la programmation concernant tout le reste ,je vais quand même pouvoir arriver sans doute à le faire avec les formules et quelques astuces...

Merci et très bonne journée

bonsoir
je viens d'essayer votre code
une fois de plus je me suis sans doute mal expliqué
il faut que lorsque je clique en CP53, le texte contenue en CP53 s'inscrive en CS56 et y reste tant que je ne clique pas a nouveau sur une une des trois autres cellules si je clique enCPp54 le texte contenue en CP 54 viendra remplacer le preceder
par contre si je clique en cellule DE53 le texte devra s'inscrire en DA 56
si je clique a nouveau en DE 54 le texte s'inscrirazen DA 56 a la place du precedent clic
chaque fois que je clique ssur une de ces quatres cellules c'est un seul resultat qui doir apparaitre
les textes en cellules CP53 et CP54; DE53 et DE 54 restent toujours les memes et ne s'effacent pas ni ne changent
ce n'est que lorsque je clique qu'ils s'inscrivent dans leur cellule receptrice et une seule inscription ne doit apparaitre par clic(des que je clique a nouveau elle est remplacée par la suivante
il ne faut pas qu'il y est deux possibilites d'affichage en meme temps dans DA 56 ou CS 56
si je ne suis pas assez clair dites le moi
bonne soirée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonsoir
A copier dans le module de la feuille
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("CP53,DE53,DE54")) Is Nothing Then
        If Target.Address = "$CP$53" Then
            [CS56] = Target.Value
        ElseIf Target.Address = "$DE$53" Then
            [DA56] = Target.Value
        ElseIf Target.Address = "$DE$54" Then
            [DA56] = Target.Value
        End If
    End If
End Sub

S'exécute après un double clic sur la cellule.
Question: DE53 et DE54 recopié dans DA56. est-ce exact?
Vous ne dites pas, si le contenu de CP53 ou DE53 ou DE54 doit être effacé après le double clic? si tel est le cas rajoutez en dernière ligne Target.value=""

des que j'aurais fini la saisie finale de toutes les statistiques( c'est très long a faire) je vous ferais passer le document , pour voir si c'est mieux que j'utilise les formules ou la programmation , Non, je ne veux pas tout le document, seulement un fichier excel contenant quelques exemples de ce que vous attendez.
Bonne soirée
Cdlt
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
Ceci devrait aller
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("CP53,CP54,DE53,DE54")) Is Nothing Then
        If Target.Address = "$CP$53" Or Target.Address = "$CP$54" Then
            [CS56] = Target.Value
            [DA56] = ""
        ElseIf Target.Address = "$DE$53" Or Target.Address = "$DE$54" Then
            [DA56] = Target.Value
            [CS56] = ""
        End If
    End If
End Sub

Bonne journée
Cdlt

Bonjoiur
impeccable c'est exactement ce que je voulais faire
d'ici une semaine j'aurais bien avancé dans la saisie des statistiques j'ai déja pratiquement fini le premier scénario qui correspond à Ouv Cac-prem+
pour vous donner une petite idée de ce que je compte réaliser
losque je cliquerais dans la colonne CV12:CV51 ou CX12:CX51 cela va m'afficher dans la cellule DP2 le nom d'une des 40 valeurs du fameux cac40, je vais rapatrier ce nom plus bas en cellule CW56, par =
(je vous precise que deja ce premier code me permet d'afficher instantanement le nombre d'actions que je peux acheter avec le prix d'achat ou de vente suivant si je clique sur la colonne CV ou CX les deux colonnes ayant exactelment la liste de meme valeurs dans le meme ordre a la difference que j'ai ajouté un tiret apres chaque valeurs de celles de Cx, me permettant de faire une option supplementaire de scenario)

Au final il faudra par exemple si je clique une fois dans CV12 ou CX12 (la valeur Accor étant la premiere des plages CV12:CV51 et CX12:CX51 ) va s'afficher dans DP2 et également dans CW56;puis si je choisis par exemple de doublecliquer dans CP53(Cac-Prem+)' la statistique concernant la valeur Accor devra s'afficher ainsi:

la plage BFI14:BFR48(350 cellules) devra s'afficher en DC58:DL92(350 cellules)

la plage BFI57:BFR91(350 cellules) devra s'affichert en CS58:DB92(350 cellules)

la plage BFI00:BFR134(350 cellules) devra s'affichert en CI58:CR92(350 cellules)

ceci concerne la premiere valeur ACCOR si je clique sur la deuxieme valeur Air Liquide en CV13 ou CX13 et que je decide egalement de cliquer sur CP53

la plage BFI143:BFR177(350 cellules) devra s'afficher en DC58:DL92(350 cellules)

la plage BFI186:BFR220(350 cellules) devra s'afficher en CSC58:DB92(350 cellules)

la plage BFI229:BFR263(350 cellules) devra s'afficher en CI58:CR92(350 cellules)

Donc je pense que si vous faites un code il devra y avoir une premiere condition qui dira si la valeur de CW 56 est égale à CV12 ou CX12;la plage BFI14:BFR48(350 cellules) devra s'afficher...etc
si la valeur de CW 56 est égale à CV12 ou CX13;la plage BFI143:BFR177(350 cellules) devra s'afficher...etc

ainsi de suite jusqu'a la quarantieme valeur qui est vivendi'marqué en CV51 et CX51
plus tard je ferais sans doute un scenario en dessous selon le meme principe mais sur l'indice cac 40 seul pour etudier le taux de correllation avec chaque valeur
je pense, mais j'en suis pas sur ,que c'est deja réaliseable en formule(je ne sais pas si Excel 2013 peut me prendre 160 imbrications dans une seule cellule jusqu'a present je suis arrivé a en faire quarante par cellule pour tirer des informations sur les quarantes valeurs a partir de la cellule DP2); au dela ??

En fait de CI 58 a DL 92 ('soit 1050 cellules ),je récupère a la demande les informations statistiques d'une valaur choisie (en cliquent dans CV12:CV51 ou CX12:CX51)situées a un autre emplacement sur le tableau pour les mettre juste en dessous de mon graphe a barre de progression de facon à avoir en un seul clic et un seul coup d'oeil vers le bas l'information immediate dont j'ai besoin
pour resumer les informations statistiques concernant les quarantes valeurs, partent de BFI14:BFR 5165(pour le premier scenario Ouv Cac-Prem+
pour le deuxieme(Ouvcac-Prem-) elles partiront de BIJ14;BIS5165
pour le troisieme (Ouv Cac+Prem-)elles partiront de BLK14:BLT5165
pour le quatrieme (Ouv Cac+Prem+)elles partiront de BOL14:BOU5165
des que j'aurais fini integralement le premier scenario je vous enverrais un fichier (les choses deviendront bien plus claires pour vous)
En fait je pense que vous avez deja pigé ou je veux en venir; en deux clics je vais et je veux avoir toutes les informationss qu'il est possible d'extraire des marchés;sans laisser aucune place au hasard j'avais deja pratiquemnt 75%de ces informations maintenant le programme que vous avez mis au point va me permettre ,couplé avec mes statistiques en temps réel d'obtenir le meilleur

tres bonne journée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
En essayant de reproduire le plus fidèlement possible votre demande.
Je me suis réservé quelques cellules de DF12 à DH51 pour mémoriser l'emplacement des différents tableaux, si cette zone est déjà occupée, dites-moi laquelle puis-je utiliser.
D'autres part, vous citez la cellule CP53 pour "Ouv CAC - Prem+" mais pour les 3 autres?
En suivant votre théorie, j'ai donc utilisé CP54 à CP56. Me dire si c'est bon ou pas.
https://www.cjoint.com/c/EFwg0mfpY1w
Bonne journée
Cdlt

Bonjour
avez vous reçu le fichier que je vous ai envoyé hier
bonne journée
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324 > chrisnapoli
Bonjour
NON

Bonjour
http://www.cjoint.com/c/EFypp4xkHOd
je me doutais bien qu'il y avait un probleme; je vous renvoie le fichier ou j'ai volontairement enleve les formules sur le graphe a barre de progression(je ne veux pas qu'avec tout le travail que j'ai fait la dessus cela tombe en n'importe quelle main( comme je vous l'ai dit auparavant si un jour vous decidez de vous en servir je vous enverrai les deux classeurs complets en privé)
j'ai essayé de modifier votre fichier mais j'ai eu de petits problemes
regardez dabord ce que j'i fait sur le mien ;inutile de vous dire que c'est bien mieux de passer par votre programme
j'ai mis les deux scenarios cac- en CP52 et CP54 les deux scenarios cac+ en DE52 et DE 54 quand je clique les deux de gauche apparaissent en cellule CU 54(avec mise en forme conditionnelle pour que ce soit bien plus lisible et,en cellule CY54 pour Cac+)
apres je vais rajouter sans doute deux scenarios de plus(vous les verrez deja affiche dans le tableau tout en bas(en ligne BFI 5174 ) Indice Cac+ et Indices Cac-; il faudra que ces indices s'affichent en CU54 pour le positif et CY54 pour le negatif;je cliquerais donc pour avoir la statistique s'afficher sur la cellule juste en dessous CU55 et CY55(je viens de les marquer pour que vous voyez ou je veux les mettre
attention etant donné que l'indice n'a pas besoin de quatre statistiques mais seulement de deux ;Cac+et Cac -;les statistiques viendront se placer exactement sur le meme shema tout en bas apres VIVENDI mais elles n'occuperont que ;pour le Cac-la suite de CAC-Prem+ et pour le Cac+la suite de cac+Prem-(elles seront ainsi aux deux extremites du tableau)inutile de mettre Quatre scenarios sinon ce seraient des doubles
j'ai essaye de modifier votre code sans succes ,car je veus mettre les trois colonnes ou vous avez memorisé (DF;DG;DH)en D12:D51et E12:E51 et F12:F51 parce que la ou elles sont actuellemnt il y a les barres de progression du graphe
il y ades choses que je n'ai pas pige par exemple le numero qui apparait CV56et aussi le numero 35 dans vos codes;je vous mets ce que j'ai commence a faire "ne rigolez pas "
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
[DP2] = Target.Value
If Target.Column = 100 Then
[D56] = Target.Offset(0, -97).Value
[E56] = Target.Offset(0, -96).Value
[F56] = Target.Offset(0, -95).Value
ElseIf Target.Column = 102 Then
[D56] = Target.Offset(0, -99).Value
[E56] = Target.Offset(0, -98).Value
[F56] = Target.Offset(0, -97).Value
End If
End If
If Not Application.Intersect(Target, Range("CP52;CP54;DE52;DE54")) Is Nothing Then
If Target.Address = "$CP$53" Then
Range("DC58:DL92").Value = Range("BFI" & [D56] & ":BFR" & [D56] + 35).Value
Range("CS58:DB92").Value = Range("BFI" & [E56] & ":BFR" & [E56] + 35).Value
Range("CI58:CR92").Value = Range("BFI" & [F56] & ":BFR" & [F56] + 35).Value
ElseIf Target.Address = "$CP$54" Then
Range("DC58:DL92").Value = Range("BIJ" & [D56] & ":BIS" & [D56] + 35).Value
Range("CS58:DB92").Value = Range("BIJ" & [E56] & ":BIS" & [E56] + 35).Value
Range("CI58:CR92").Value = Range("BIJ" & [F56] & ":BIS" & [F56] + 35).Value
ElseIf Target.Address = "$DE$52" Then
Range("DC58:DL92").Value = Range("BLK" & [D56] & ":BLT" & [D56] + 35).Value
Range("CS58:DB92").Value = Range("BLK" & [E56] & ":BLT" & [E56] + 35).Value
Range("CI58:CR92").Value = Range("BLK" & [F56] & ":BLT" & [F56] + 35).Value
ElseIf Target.Address = "$DE$54" Then
Range("DC58:DL92").Value = Range("BOL" & [D56] & ":BOU" & [D56] + 35).Value
Range("CS58:DB92").Value = Range("BOL" & [E56] & ":BOU" & [E56] + 35).Value
Range("CI58:CR92").Value = Range("BOL" & [F56] & ":BOU" & [F56] + 35).Value
End If
End If
[CV56].Select
End Sub

j'ai cette ligne qui se met en jaune
If Not Application.Intersect(Target, Range("CP52;CP54;DE52;DE54")) Is Nothing Then
donc c'est que ya un blème déja à ce niveau ,cela ne doit sans doute pas s'ecrire comme cela?? de plus je suis pas du tout sur que le reste soit bon
je prefere vous laisser la place vous savez bien mieux que moi
bonne journée si ya quelaque chose que j'ai mal explique vous me le dites
Bbonne journé
(une derniere question,est il obligatoire de faire ce programme en double clic ,ne peut il pas s'executer en un seul clic?)
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Bonjour
a nouveau
je viens juste de m'apercevoir d'un petit probleme lorsque je double clique sur CV12:CV51ou CX12:CX51, j'ai le tableau qui remonte seul la derniere ligne en bas de l"écran est a 54 et des que je double clique je me retrouve a 77
Donc j'ai mis
End If

[CV35].Select
apparement cela ne le fait plus est ce la bonne solution?
Merci
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324 > chrisnapoli
Bonjour
If Not Application.Intersect(Target, Range("CN52:CN54,CP52:CP54")) Is Nothing
Dans le cas présent les cellules sont dissociées, il n'y a rien en CN53 et CP53 donc, remplacer les 2 points par une virgule
If Not Application.Intersect(Target, Range("CN52,CN54,CP52,CP54")) Is Nothing
il faut que je comprenne pourquoi moi je n'ai pas de numero en CV56 affiché comme vous? en CV56, il n'y a pas de valeur, c'est juste la cellule qui est sélectionnée, ça pourrait être n'importe laquelle.
j'ai le tableau qui remonte seul la derniere ligne en bas de l"écran est a 54 et des que je double clique je me retrouve a 77
Rajoutez cette ligne en fin de programme ActiveWindow.ScrollRow = 1
Bonne journée
Cdlt
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Bonjour
à nouveau j'ai besoin de vous
je viens egalement de m'apercevoir qu'il est impossible de faire en l'état, la statistique a partir des heures; excel ne veut pas prendre en compte et marque formules incoherentes
Donc je suis oblige de laisser tomber le comptage par couleur et je crée un comptage direct en dessous de CI58:DL98, par formules et compteur je rapatrie les informations en CN58;CN59;CQ58;CQ59,CX58,CX59,DA58,DA59,DH58,DH59,DK58;DK59(plage de réception sous le graphique)
Comment je fait pour que ces cellules soient decompter du collage, de facon que je puisse inscrire mes formules(dans la plage de reception)dedans et qu'elles ne soient pas écrasé par le collage suivant des autres scenarios
puisque meme si au depart il n'ya rien dans les cellules correspondantes ,elles m'effacent automatiquement les formules que je vais ecrire dans ces 12 cellules
je pense qu"'il ya bien un moyen en programmation pour exclure des plages globales concernes les cellules en question
A moins que vous connaissiez une formule qui disent,Exemple:
=la somme des cellules qui ont le format heure dans la plage BFM62:BFM91 si le critere suivant est vérifié BFM63<=BFO63;BFM65<=BFO65;BFM67<=BFO67..etc jusqu'a BFM 91<$BFO91
il me suffirait alors de reproduire ce type de formule a toutes les cellules concernés mais je ne pense pas qu'il y est une fonction qui permettent cela dans Excel??

Merci
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324 > chrisnapoli
Bonsoir
Méthode la plus simple
Avec l'enregistreur de macro, sélectionnez une cellule contenant une formule, positionnez-vous dans la barre de formule et validez, à faire pour chacune des 12 cellules contenant une formule. Arrêtez l'enregistreur de macro et aller consulter cette macro (elle s'est mise sous un nouveau module). Arrangez l'écriture du code obtenu pour le rendre plus lisible, puis sélectionnez le tout et collez le dans le programme existant avant les 2 dernières lignes
[CV56].Select
ActiveWindow.ScrollRow = 1
.
Avec ce système, vous conserverez toujours vos formules, même si vous faisiez une fausse manip qui les effacerait.
A moins que vous connaissiez une formule On peut tout faire ou presque, mais pour cela il faut que je vois le contenu des cellules à comptabiliser.
Mais je pense que l'enregistreur de macro est bien suffisant. Essayez
Bonne soirée
Cdlt
>
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021

Bonsoir
Bon voila ce que j'ai fait, pouvez vous me dire si c'est bon
j'ai ajouter ActiveWindow.ScrollRow = 1.' je ne sais pas ce que ca veut dire )
puis j'ai réduit de CV56 à CV32 parce que lorsque je double cliquais sur le scenario le tableau allait vers le haut et une fois la macro effectué ne revenait pas tout a fait à la bonne position
je ne sais pas si c'est normal lorsque je double clique sur la plage CV12:CV51 ou sur CX12:CX51 le tableau reste parfaitement à sa place ce n'est que lorsque je double clique sur les scenarios que ,le temps que la macro s'effectue le tableau va vers le haut une a deux secondes puis revient a la position initiale (la bonne position)
je vous met le code dites moi si il y a quelque chose qu'il faut que j'arrange
Merci je crois bien que j'aurais appris beaucoup de choses avec vous
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
[DP2] = Target.Value
If Target.Column = 100 Then
[D56] = Target.Offset(0, -96).Value
[E56] = Target.Offset(0, -95).Value
[F56] = Target.Offset(0, -94).Value
ElseIf Target.Column = 102 Then
[D56] = Target.Offset(0, -98).Value
[E56] = Target.Offset(0, -97).Value
[F56] = Target.Offset(0, -96).Value
End If
End If
If Not Application.Intersect(Target, Range("CN52:CN54,CP52:CP54")) Is Nothing Then
If Target.Address = "$CN$52" Then
Range("DC58:DL92").Value = Range("BFI" & [D56] & ":BFR" & [D56] + 35).Value
Range("CS58:DB92").Value = Range("BFI" & [E56] & ":BFR" & [E56] + 35).Value
Range("CI58:CR92").Value = Range("BFI" & [F56] & ":BFR" & [F56] + 35).Value
ElseIf Target.Address = "$CN$54" Then
Range("DC58:DL92").Value = Range("BIJ" & [D56] & ":BIS" & [D56] + 35).Value
Range("CS58:DB92").Value = Range("BIJ" & [E56] & ":BIS" & [E56] + 35).Value
Range("CI58:CR92").Value = Range("BIJ" & [F56] & ":BIS" & [F56] + 35).Value
ElseIf Target.Address = "$CP$54" Then
Range("DC58:DL92").Value = Range("BLK" & [D56] & ":BLT" & [D56] + 35).Value
Range("CS58:DB92").Value = Range("BLK" & [E56] & ":BLT" & [E56] + 35).Value
Range("CI58:CR92").Value = Range("BLK" & [F56] & ":BLT" & [F56] + 35).Value
ElseIf Target.Address = "$CP$52" Then
Range("DC58:DL92").Value = Range("BOL" & [D56] & ":BOU" & [D56] + 35).Value
Range("CS58:DB92").Value = Range("BOL" & [E56] & ":BOU" & [E56] + 35).Value
Range("CI58:CR92").Value = Range("BOL" & [F56] & ":BOU" & [F56] + 35).Value
End If
Range("CN58").Select
ActiveCell.FormulaR1C1 = _
"=SUM(R[48]C,R[50]C,R[52]C,R[54]C,R[56]C,R[58]C,R[60]C,R[62]C,R[64]C,R[66]C,R[68]C,R[70]C,R[72]C,R[74]C,R[76]C)"
Range("CN59").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-2],(""""))"
Range("CQ58").Select
ActiveCell.FormulaR1C1 = _
"=SUM(R[48]C,R[50]C,R[52]C,R[54]C,R[56]C,R[58]C,R[60]C,R[62]C,R[64]C,R[66]C,R[68]C,R[70]C,R[72]C,R[74]C,R[76]C)"
Range("CQ59").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-5],(""""))"
Range("CX58").Select
ActiveCell.FormulaR1C1 = _
"=SUM(R[48]C,R[50]C,R[52]C,R[54]C,R[56]C,R[58]C,R[60]C,R[62]C,R[64]C,R[66]C,R[68]C,R[70]C,R[72]C,R[74]C,R[76]C)"
Range("CX59").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-2],(""""))"
Range("DA58").Select
ActiveCell.FormulaR1C1 = _
"=SUM(R[48]C,R[50]C,R[52]C,R[54]C,R[56]C,R[58]C,R[60]C,R[62]C,R[64]C,R[66]C,R[68]C,R[70]C,R[72]C,R[74]C,R[76]C)"
Range("DA59").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-5],(""""))"
Range("DH58").Select
ActiveCell.FormulaR1C1 = _
"=SUM(R[48]C,R[50]C,R[52]C,R[54]C,R[56]C,R[58]C,R[60]C,R[62]C,R[64]C,R[66]C,R[68]C,R[70]C,R[72]C,R[74]C,R[76]C)"
Range("DH59").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-2],(""""))"
Range("DK58").Select
ActiveCell.FormulaR1C1 = _
"=SUM(R[48]C,R[50]C,R[52]C,R[54]C,R[56]C,R[58]C,R[60]C,R[62]C,R[64]C,R[66]C,R[68]C,R[70]C,R[72]C,R[74]C,R[76]C)"
Range("DK59").Select
ActiveCell.FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-5],(""""))"
Range("DK60").Select
End If

[CV32].Select
ActiveWindow.ScrollRow = 1#

End Sub
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324
Bonjour
ActiveWindow.ScrollRow = 1.' je ne sais pas ce que ca veut dire , permet de remonter en haut de la feuille.
ActiveWindow.ScrollRow = 1# le dièse est en trop.
Voici le programme avec l'écriture des formules allégée.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
        [DP2] = Target.Value
        If Target.Column = 100 Then
            [D56] = Target.Offset(0, -96).Value
            [E56] = Target.Offset(0, -95).Value
            [F56] = Target.Offset(0, -94).Value
        ElseIf Target.Column = 102 Then
            [D56] = Target.Offset(0, -98).Value
            [E56] = Target.Offset(0, -97).Value
            [F56] = Target.Offset(0, -96).Value
        End If
    End If
    If Not Application.Intersect(Target, Range("CN52:CN54,CP52:CP54")) Is Nothing Then
        If Target.Address = "$CN$52" Then
            Range("DC58:DL92").Value = Range("BFI" & [D56] & ":BFR" & [D56] + 35).Value
            Range("CS58:DB92").Value = Range("BFI" & [E56] & ":BFR" & [E56] + 35).Value
            Range("CI58:CR92").Value = Range("BFI" & [F56] & ":BFR" & [F56] + 35).Value
        ElseIf Target.Address = "$CN$54" Then
            Range("DC58:DL92").Value = Range("BIJ" & [D56] & ":BIS" & [D56] + 35).Value
            Range("CS58:DB92").Value = Range("BIJ" & [E56] & ":BIS" & [E56] + 35).Value
            Range("CI58:CR92").Value = Range("BIJ" & [F56] & ":BIS" & [F56] + 35).Value
        ElseIf Target.Address = "$CP$54" Then
            Range("DC58:DL92").Value = Range("BLK" & [D56] & ":BLT" & [D56] + 35).Value
            Range("CS58:DB92").Value = Range("BLK" & [E56] & ":BLT" & [E56] + 35).Value
            Range("CI58:CR92").Value = Range("BLK" & [F56] & ":BLT" & [F56] + 35).Value
        ElseIf Target.Address = "$CP$52" Then
            Range("DC58:DL92").Value = Range("BOL" & [D56] & ":BOU" & [D56] + 35).Value
            Range("CS58:DB92").Value = Range("BOL" & [E56] & ":BOU" & [E56] + 35).Value
            Range("CI58:CR92").Value = Range("BOL" & [F56] & ":BOU" & [F56] + 35).Value
        End If
    End If
        
    Range("CN58,CQ58,CX58,DA58,DH58,DK58").FormulaR1C1 = "=SUM(R[48]C,R[50]C,R[52]C,R[54]C,R[56]C,R[58]C,R[60]C,R[62]C,R[64]C,R[66]C,R[68]C,R[70]C,R[72]C,R[74]C,R[76]C)"
    Range("CN59,CQ59,CX59,DA59,DH59,DK59").FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-2],(""""))"
    [CV32].Select
    ActiveWindow.ScrollRow = 1
End Sub

Bonne journée
Cdlt

Bonjour
c'est parfait ;j'ai maintenant bien compris ce que vous avez fait et comme j'ai encore modifié d'une ligne et déplacer le comptage ailleurs dans la feuille je vais pouvoir me debrouiller tout seul
j'ai deplacé d'une ligne pour pouvoir inclure
dans la ligne du haut(57) ou est normalement inscrit la légende(la légende vient maintenant directement des cellules statistiques) le nom de la valeur ,de facon à etre sur ,qu'il n'y ai pas d"erreur ,
si j'oublie de double cliquer à nouveau sur le scénario en changeant de valeurs (je pouvais faire confusion et me retrouver avec un scenario qui ne correspondait pas a la valeur),donc je me retrouve maintenant avec en CW 56(DP2) et CW57 avec le nom qui doit correspondre à ce qui est inscrit en CW56 sauf que ce nom est tirée directement des cellules statistiques (si les noms ne correspondent pas alors c'est que j'ai oublie de recliquer sur le scenario lorsque j'ai change de valeurs
j'ai mis egalement le code suivant en dessus pour etre sur du scénario dans lequel je suis positionné
Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("CN52:CN54,CP52:CP54")) Is Nothing Then
Range("CR52") = Target
End If
End Sub
voila je vous ai tout dit on est pas loin de la perfection une fois que j'aurais tout finaliser.
Trés bonne journée à vous

Bonjour
juste une petite erreur d'inattention ,ne croyez pas que je vous chambre ,ca me permet au contraire de progresser et comprendre( c'est au niveau des formules CN59 CX59 DH59 et CQ59 DA59 DK59)
c'etait
End If

Range("CN58,CQ58,CX58,DA58,DH58,DK58").FormulaR1C1 = "=SUM(R[47]C,R[49]C,R[51]C,R[53]C,R[55]C,R[57]C,R[59]C,R[61]C,R[63]C,R[65]C,R[67]C,R[69]C,R[71]C,R[73]C,R[75]C)"
Range("CN59,CX59,DH59").FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-2],(""""))"
Range("CQ59,DA59,DK59").FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-5],(""""))"


[CV33].Select
ActiveWindow.ScrollRow = 1
End Sub

A la place de

Range("CN58,CQ58,CX58,DA58,DH58,DK58").FormulaR1C1 = "=SUM(R[48]C,R[50]C,R[52]C,R[54]C,R[56]C,R[58]C,R[60]C,R[62]C,R[64]C,R[66]C,R[68]C,R[70]C,R[72]C,R[74]C,R[76]C)"
Range("CN59,CQ59,CX59,DA59,DH59,DK59").FormulaR1C1 = "=IF(R[-1]C>0,R[-1]C/R[-1]C[-2],(""""))"
[CV32].Select
ActiveWindow.ScrollRow = 1
End Sub

Bonne journée (j'aimerais bien un jour avoir le 10% de ce que vous savez faire)
Messages postés
2215
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
17 juillet 2021
324 > chrisnapoli
Désolé, je n'avais pas vu la différence
cdlt