Fixer l'heure automtiquement au changement d'une cellule

Résolu/Fermé
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 - 8 mai 2015 à 11:30
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 26 juin 2015 à 15:10
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
A voir également:

20 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
10 mai 2015 à 21:47
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
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
11 mai 2015 à 10:18
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
11 mai 2015 à 15:57
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337 > chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
11 mai 2015 à 21:55
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
11 mai 2015 à 22:56
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
8 mai 2015 à 15:20
Bonjour
Quelque chose comme ceci,
https://www.cjoint.com/c/EEipIjFdnjD
remplacez les valeurs de la colonne A
A tester
cdlt
1
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
8 mai 2015 à 21:56
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
9 mai 2015 à 11:10
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
1
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
10 mai 2015 à 17:43
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
8 mai 2015 à 17:18
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
12 mai 2015 à 06:03
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
12 mai 2015 à 11:37
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)
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
12 mai 2015 à 13:35
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
12 mai 2015 à 16:51
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
12 mai 2015 à 21:47
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
12 mai 2015 à 22:51
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
13 mai 2015 à 05:14
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
13 mai 2015 à 11:44
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
13 mai 2015 à 12:28
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
13 mai 2015 à 12:42
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
17 mai 2015 à 17:16
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
25 mai 2015 à 06:27
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
0
chrisnapoli
25 mai 2015 à 22:48
Bonsoir
Beau travail, mais la je suis depassé, autant jusqua maintenant je pouvais comprendre et modifier voscodes pour les adapter mais la je comprends que dalle que voulez vous dire par copiez les codes dans un meme répertoire qu'appellez vous répertoire?
j'ai un premier code dans synthese cotation
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\Documents\" '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
ce code je le laisse dans le module 1 il va remplacer mon ancien code
apres jai deux codes un dans cotations minutes et l(autre dans cotations quart dheures je les mets ou? a quel endroit; dans this workbook? un en dessous de lautre ,et dans quel ordre?(je supprime evidement tous mes anciens code?
Excusez moi mais je ne sais pas faire ..(comment je fait pour que les premieres cotations se collent a 09:01;00 et supprimer la cellule 09:00:00?
Apres j'ai regardé ce que vous avez fait pour le Max et Mini
je pense que en modifiant un peu on doit arriver a ce que je cherche a faire
vous avez en ligne 21 les pourcentages de l'autre cote les MAX et MIN
a la place de AkA21et DE AKB21 il me faut non pas l'adresse mais le contenue des cellules AKA1ET AKB1 (puisque en plus de votre barre d'heures en ligne 11 jai mis en ligne 1 la meme barre d'heures transforme en nombre, elle i me permet de faire des statistiques tres facilement
donc si vous me donner le contenue des cellules qui sont a la verticale en ligne 1 par exemple ,ce cas AKA1et AKB1 je vais immediatement avoir lheure s'afficher a laquelle ont ete atteint Le MAX et MIN en cellule AJA22 et AJT22
j'ai fait ce systeme parce que voytre premiere barre est parfaitement lisible mais l'autre me permet de faire des statistiques chiffreés
ouf j'espere qiue je vais y arriver ca commence à se compliquer sérieusement je suis pas au bout de mes peines
un autre jour je vous montrerais comment avec une petite astuce et un petit code et beaucoup de formules je suis arrive a faire un truc surprenant ; mais je n'ai au final qu'un petit probleme je n'arrive pas au chiffre final a avoir le resulta
au format pourcentage trois decimales; meme si je met la cellule a ce format pour le moment je suis oblige de multiplie le resultat par 1 pour avoir le bon chiffre
je ne sais pas pourquoi?
il y a 40 formules par cellules (je ne sais pas si ca a une incidence sur mon probleme) je vous souhaite une tres bonne soirée et des demain je vais me creuser la tete pour voir comment mettre en forme votre magnifique travail
Merci beaucoup
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
26 mai 2015 à 05:19
Bonjour
que voulez vous dire par copiez les codes dans un même répertoire qu'appelez vous répertoire? "répertoire = dossier" si vous préférez
Comme il est dit dans le module 1 de "SyntheseCotation", remplacez
"C:\Users\Documents" (c'est ce qu'on appelle le chemin) par votre propre chemin
exemple; C:\CAC40\Cotation journalière.
jai deux codes un dans cotations minutes et l(autre dans cotations quart dheures je les mets ou? Là, vous n'avez pas suivi mes consignes. Je répète: ces 2 codes sont dans 2 fichiers distincts vides, mais très utiles, car ils contiennent individuellement le code de chaque tempo. Ces 2 fichiers sont appelés par le premier "SyntheseCotation" lors de son ouverture. le programme de chacun de ces 2 fichiers se trouve dans le module du classeur "ThisWorkbook" pour initialiser les tempos, et un autre dans le "module 1" pour le remplissage du fichier "SyntheseCotation". Les 2 tempos démarrent en même temps à 9h. Ces 2 fichiers doivent être au même endroit que "SyntheseCotation".
comment je fait pour que les premieres cotations se collent a 09:01;00 et supprimer la cellule 09:00:00, On ne peut pas supprimer la valeur à 9h, c'est ce qui sert de base pour chaque tempo, on ne peut que la masquer (donc la coller en NM et avoir 9h01 en NN, pour cela il faut modifier certaines valeurs dans tous les codes de chaque classeur, Voulez-vous tentez de le faire vous-même? sinon je vous le ferai un peu plus tard).
Pour ce qui concerne les Max et Min, je vous répondrai dans la demande initiale, sinon on ne va plus s'y retrouver.
Bonne journée
cdlt
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
26 mai 2015 à 11:06
Bonjour
j'essaye de comprendre au mieux avec ce que je sais faire;il y a beaucoup de choses qui sont pour le moment pas a mon niveau (mais petit a petit je vais apprendre en ce moment je n'ai pas trop de temps mais je vais acheter un bouquin pour débutant)
concernant le répertoire je l'ai fait j'ai compris
après vous avez marque les classeurs sont appelles lors de l'ouverture de synthèse cotations (la je pige pas cela veut dire qu'ils s'ouvrent tous seuls ?ou faut il les activer? ou cela se fait il automatiquement?
ce matin j'ai essaye d'ouvrir le classeur Synthèse cotation et seulement les cotations tous les quarts d'heure se sont mis en route je suppose que parce que je n'avais ouvert que le classeur quart d'heure(donc il faut que les trois classeurs soient ouvert en même temps?)
ce qui parait normal et simple pour vous ne l'est pas du tout pour moi; je m'en excuse
après j'ai été voir dans votre travail pour comprendre parce que je veux pouvoir maitriser l'outil ,et pouvoir modifie moi même sans votre intervention jusqu'à ce que je trouve la perfection(pour mon analyse statistique)
pour le classeur cotation minute par exemple si je veux Effacer Step2, cela me ramènera a la situation d'avant, a savoir coller toutes les lignes?"

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?)

pour If c>=411 je ne comprend pas non plus, puisque la dernière cotation de la procédure" toutes les minutes" s"arrêtent en PC(419) et 411 correspond à OU

je veux savoir également si j'efface .ClearContents (je vais bien avoir les cotations qui restent enregistres ?)ou faut ils que je mette seulement une apostrophe avant le point pour annuler la procédure?
j'ai vu également qu'il me sera très facile de modifier ou déplacer a ma convenance la colonne de cotations(Range(Cells(12, c), Cells(251, c)) = Range("NN12:NN251").Value)

pour la classeur cotations tous les 1/4 d'heures
la je pige pas trop
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
ce qui veut dire a mon sens ,en colonne 381 jusque la colonne 539
381 correspond a la colonne NQ et 539 a la colonne TS; alors que la procédure quart d Heure va de PD(09:00:00) colonne 420 à QM(17:45:00) colonne 455
je pige pas pourquoi?
je pense que si c'est trop complique et si je n'arrive pas a maitriser le truc parfaitement, je vais en revenir a la première solution du tableau précédent toutes les minutes
pouvez vous m'éclairer?(n y a t'il pas une solution pour avoir tous ces codes dans le même classeur?
c'est pas très facile pour moi parce que lorsque je veux essaye dans la journée ,au départ il faut aller modifier l'heure de départ sur les deux classeurs (minutes et quart d'heure)et pour le moment je ne suis pas arrive a le faire fonctionner comme il le devrait peut être qu'avec vos explications , tout va me sembler plus clair

Merci et très bonne journée a vous
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
26 mai 2015 à 12:31
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
26 mai 2015 à 15:54
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
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mai 2015 à 20:14
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
26 mai 2015 à 21:45
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?
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
26 mai 2015 à 22:22
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
27 mai 2015 à 06:06
Bonjour
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é

Si aucun des 2 autres classeurs ne s'ouvrent, c'est que le chemin indiqué n'est pas le bon.
avouez que c'est capricieux comme système , Non, ce n'est pas capricieux, l'informatique c'est tout bête, ou bien c'est correctement programmé et ça marche bien ou alors la moindre petite erreur (ce qu'on appelle un bug) génère des fonctionnements anormaux ou ne fonctionne pas du tout. Il faut donc décortiquer les lignes de codes pour déceler cette erreur, elle parfois tellement évidente qu'on ne la voit pas.
Il ne faut pas vous décourager et persévérer, la dernière version correspond vraiment à ce que vous attendez (avec peut-être encore quelques ajustements), mais ne revenez pas en arrière, c'est idiot d'avoir fait tout ce travail pour l'abandonner par la suite pour une broutille.
Recopiez ici tout le code de "SynthèseCotation", je vais vérifier ou se trouve l'erreur, et je vous tiens au courant dans la journée.
De votre côté, assurez-vous que le chemein soit le bon.
..
bonne journée
cdlt
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
27 mai 2015 à 09:33
Bonjour
voila j'ai remis ce code
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

les trois classeurs s'ouvrent malgré le bug de la dernière ligne
ce matin j'ai ouvert , j'ai modifie l'heure de départ parce que je n'etais pas prêt a 9heures; je l'ai mis sur 09;05:00
les classeurs se sont tout les 3 ouverts en même temps aujourd'hui apparemment je n'ai pas eu le problème de tempo au démarrage pour l'instant tout marche parfaitement
j'ai démasqué la colonne PD et les cotations du deuxième tempo sont inscrites en 09:00:00 ce qui est tout a fait normal j'attends 09:20:00 pour voir si tout va s'inscrire normalement
j'ai trouvé ceci sur internet concernant le bug

Erreur d'exécution '9': L'indice n'appartient pas à la sélection

Cela se produit par exemple quand on appelle une feuille qui n'existe pas (Worksheets("MaFeuille")), on peut donc rendre le traitement plus générique avec des numéros (Worksheets(1)).
n'est il pas possible d'ajouter a la dernière ligne Worksheets(Synthese),comme ceci?

Windows("C:\Users\Public\Documents\Bourse jo\(Worksheets (synthèse)),SynthèseCotation.xlsm").Activate
ça y est la premier cotation en colonne 09:15:00 vient de s'inscrire donc apparemment tout marcherait si ce n'est ce petit bug
Bonne journée à vous
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
27 mai 2015 à 09:40
Bonjour
Avant de tout lire, je vois que vous n'avez pas corrigé comme indiqué précedemment, je répète:
remplacez la dernière ligne Windows("C:\Users\Public\Documents\Bourse jo\SynthèseCotation.xlsm").Activate
par Windows("SynthèseCotation.xlsm").Activate
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
27 mai 2015 à 09:56
Suite
j'ai modifie l'heure de départ parce que je n'etais pas prêt a 9heures; je l'ai mis sur 09;05:00 l'avez -vous fait sur les 2 fichiers (cotation à la minute et cotation au 1/4 d'heure)?
j'ai démasqué la colonne PD et les autres (PD; PE; PF)?
Pour le reste, si les lignes sont correctement écrites, cela doit bien fonctionner (je l'ai tester et vérifié assez longtemps avant de vous l'envoyer).
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
27 mai 2015 à 13:49
Bonjour
je vous met deux liens pour que vous voyez ce qui se passe exactement

https://www.cjoint.com/?3EBnTc2WxdC

https://www.cjoint.com/?3EBnVBPjiTE




a nouveau je vais de problème en problème
votre solution a marché j'ai vu que c'était le point après Activate
maintenant c'est tout autre chose et ça a l'air plus sérieux j'ai modifie selon le nom de mon classeur et j'ai mis tout en ordre par rapport a mes dernières motifs(l(emplacement des cotations par exemple que j'ai modifié mais la y a aucune erreur possible
lorsque que j'ouvre mon Classeur les liens se mettent a jour avec le logiciel DDE
mais deux classeurs sont bien appellé
mais les formules qui font les opérations de calcul ne font plus leurs fonctions et je me retrouve donc dans la colonne cotation avec seulement des zéros qui s'affichent
c'est incompréhensible
des que j'enlève le code et que je reviens a l'ancien tout marche parfaitement les pourcentages s'affichent normalement
est ce que ca vient du fait que le code doit être affiche ailleurs que dans le module 1 puisque dans mon classeur les calculs se font sur Feuil7(statist)
voila mon code
Sub Auto_open()
Windows("Trade.xlsm").Activate
Application.ScreenUpdating = False
For i = 12 To 131 'Step 2
Rows(i).Select
Selection.NumberFormat = "0.00"
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 & "\CotationParMinuteTrade.xlsm"
Workbooks.Open Filename:=Chemin & "\CotationAu Quart-dheureTrade.xlsm"
Windows("Trade.xlsm").Activate

j'ai également ce code dans ma feuil7(statist)

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
et celui ci en module2
Sub Préouverture()
'
' Préouverture Macro
'

'

ActiveWindow.LargeScroll ToRight:=1
ActiveWindow.SmallScroll ToRight:=2
End Sub
Sub Graphe()
'
' Graphe Macro
'

'

ActiveWindow.LargeScroll ToRight:=-1
ActiveWindow.SmallScroll ToRight:=-2
End Sub

c'est un peu dur a mettre au point tout ca
Si vous en avez assez que je vous importune ,dites le moi je comprendrais parfaitement et je passerais a l'autre solution
Merci

End Sub
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
12 juin 2015 à 04:22
Bonjour
Je l'avais oublié celui là
https://www.cjoint.com/c/EFmcvNKIxJw
Bonne journée
Cdlt
0
chrisnapoli
12 juin 2015 à 08:09
Bonjour
Merci de votre rapidité
Avec cette formule je vais pouvoir rentrer maintenant dans le vif du sujet
très bonne journée
0
chrisnapoli
12 juin 2015 à 12:14
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
0
chrisnapoli
12 juin 2015 à 15:37
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
12 juin 2015 à 13:21
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
13 juin 2015 à 06:11
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
0
chrisnapoli
13 juin 2015 à 12:19
Bonjour
c'est du grand art
ca me permet de voir mes erreurs;j 'ai bien observé votre travail ;et je vais corrigé le tir d'une autre facon?
je vous explique ;il m'est impossible d'utiliser votre solution parceque de les informations MIN et MAX collectés en une seule cellule ne me permettent pas d'aller vers le résultat final recherché
j'ai de ces informations l'analyse statistique a tirer
,une concerne lheure ('moyenne horaire sur 15 jours de cotations )
une deuxieme sur le pourcentage(moyenne sur le pourcentage atteint)
je vous precise que ces moyennes obtenues vont etre encore soumise a satistique selon 4 scenarios encore, c'est un peu compliqué mais ca permet de savoir ce qui se passe exactement et d'etudier les correlations )
donc en ayant les deux résultats dans une meme cellule ,je ne vais finalement pas pouvoir arriver a mes fins
Donc j'ai décidé tout simplement de prendre en compte votre premiere solution, en faisant un MIN et MAX a a partir de 09::00:01 BGI11:BHL11, 09:30:00
puis un autre MIN et MAX pour les quart d'heures de BHN11 09:15:00 jusqu'a
BIV11 17:45:00
Ainsi je vais pouvoir mettre juste en dessus les fonctions MOYENNE ou MOYENNE SI concernant les heures mais aussi les pourcentages
je sais pas si j'aurai éte assez clair
Mais pour moi c'est tres bien parce que votre solution m'a permis de voir mon erreur
je doit vous dire que concernant ,ce que vous me permettez de réaliser ,au final je vais en etre à peu pres à1500 colonnes, et plus de 5000 lignes vers le bas(je ne vous explique meme pas le temps qu'il va me falloir pour faire toutes cette saisie???
Merci et Bonne journée (si vous avez une observation n'hesitez pas a me la faire savoir)
0
chrisnapoli
13 juin 2015 à 20:32
Bonsoir
pouvez vous me dire si vous savez lire ce langage
http://www.cjoint.com/c/EFnsDhQqg73
Merci bonne soirée
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337 > chrisnapoli
14 juin 2015 à 05:58
Bonjour
Non, je ne peux pas l'ouvrir sur mon PC
Cdlt
0
chrisnapoli > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
14 juin 2015 à 08:32
Bonjour
je vous le renvoie differemment essayez de l'ouvrir avec internet explorer
http://www.cjoint.com/c/EFogyGyiqb8
Bonne journée
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
14 juin 2015 à 08:56
non plus, c'est illisible
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
18 juin 2015 à 13:57
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
0
chrisnapoli
19 juin 2015 à 15:00
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"
0
chrisnapoli
19 juin 2015 à 19:14
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
20 juin 2015 à 07:34
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
0
chrisnapoli
20 juin 2015 à 13:00
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
0
chrisnapoli
20 juin 2015 à 21:50
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
20 juin 2015 à 19:45
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
21 juin 2015 à 05:55
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
0
chrisnapoli
21 juin 2015 à 12:35
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
22 juin 2015 à 08:59
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
0
chrisnapoli
24 juin 2015 à 11:42
Bonjour
avez vous reçu le fichier que je vous ai envoyé hier
bonne journée
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337 > chrisnapoli
24 juin 2015 à 13:44
Bonjour
NON
0
chrisnapoli
24 juin 2015 à 17:20
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?)
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
24 juin 2015 à 19:09
Bonsoir
il y a des choses que je n'ai pas pige par exemple le numero qui apparait CV56 et aussi le numero 35 dans vos codes Après le double clic, je vais chercher une cellule quelconque pour sortir de celle sur laquelle a été appliqué le double-clic (c'est une sorte de validation du choix), j'ai choisi CV56. quant au N° 35, c'est tout simplement le nombre de ligne que comporte chaque tableau, dans le cas suivant:
Range("DC58:DL92").Value = Range("BFI" & [DF56] & ":BFR" & [DF56] + 35).Value
le tableau commence à BFI et première ligne indiqué dans DF56, et se termine en BFR et première ligne indiqué dans DF56 + 35 lignes pour arriver au fond du tableau.
j'ai cette ligne qui se met en jaune
If Not Application.Intersect(Target, Range("CP52;CP54;DE52;DE54")) Is Nothing Then remplacez les points virgules par des virgules.
une dernière question,est il obligatoire de faire ce programme en double clic ,ne peut il pas s'exécuter en un seul clic?La raison du double-clic, ceci évite de lancer la macro chaque fois qu'on sélectionne une cellule (nos gestes ne sont pas toujours contrôlés, et suivant le programme qui tourne derrière, ça peut devenir vite pénible). J'avoue aussi que je ne sais faire.
Est-ce plus clair?
Bonne soirée
Cdlt
0
chrisnapoli > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
25 juin 2015 à 12:10
Bonjour
j'ai modifie mon code je me suis apercu de deux erreurs que j'avais faite, la mémorisation en D12:F51 je m'etais trompe d'une colonne dans le décompte j'ai rectifie et cela marche maintenant
j'ai egalemnt modifie le code pour choisir le mode des scenarios(effectivement en regardant l'ancien code pour DP2
il faut que je comprenne pourquoi moi je n'ai pas de numero en CV56 affiché comme vous?
j'ai modifie une derniere fois l'emplacement des scenarios et le code donne ceci si vous voyez quelque chose d'anormal vous me le dites.
je vous met egalement deux captures d'ecran j'ai maintenant toute ma saisie a faire ;
http://www.cjoint.com/c/EFzj4JFK5Db
http://www.cjoint.com/c/EFzj6qLA2bb

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
[CV56].Select
End Sub

Maintenant je ne vois pas comment je peux faire mieux si ce n'est de pousser un peu plus mon analyse statistiqe;pour ce qui concerne l'efficacite et l'ergonomie je ne crois pas que l'on puisse aller bien plus en avant...en deux clics lorsque tout sera finalise je vais avoir toutes les statistiques possible en un seul coup d'oeil
Merci encore une fois et trés bonne journée
0
chrisnapoli > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
25 juin 2015 à 12:40
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337 > chrisnapoli
25 juin 2015 à 12:53
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
0
chrisnapoli > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
25 juin 2015 à 17:02
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
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
26 juin 2015 à 08:45
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
0
chrisnapoli
26 juin 2015 à 10:43
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
0
chrisnapoli
26 juin 2015 à 14:55
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)
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337 > chrisnapoli
26 juin 2015 à 15:10
Désolé, je n'avais pas vu la différence
cdlt
0