Faire remonter les lignes en programmant

Fermé
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 - 12 mars 2018 à 09:48
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018 - 15 mars 2018 à 13:19
Bonjour, Bonjour
Je voudrais solutionner ce problème avec Visual Basic
J ai un tableau Excel 2016 avec deux plages CV12:CV51 puis Cx12 :CX51
Lorsque j utilise mon tableau Excel, j’ai en permanence une barre de fractionnement en horizontal qui englobe la 11 -ème ligne
En vertical j ai une autre barre de fractionnement qui englobe la colonne CZ( quand on part de la gauche du tableau vers la droite

je voudrais lorsque je double clique dans la plage de gauche CV12 :CV51 je voudrais que mes lignes remontent dans cet ordre

Si je double clique par exemple sur CV12 je voudrais passer en dessous de ma barre de fractionnement de le la ligne 12 à la ligne 227
Si je double clique par exemple sur CV13 je voudrais passer en dessous de ma barre de fractionnement de le la ligne 12 à la ligne 313
Si je double clique par exemple sur CV14 je voudrais passer en dessous de ma barre de fractionnement de le la ligne 12 à la ligne 399
Si je double clique par exemple sur CV15 je voudrais passer en dessous de ma barre de fractionnement de le la ligne 12 à la ligne 485
Etc jusqu’à CV51

je voudrais lorsque je double clique dans la plage de Droite CX12 :CX51 je voudrais que mes lignes remontent dans cet ordre

Si je double clique par exemple sur CX12 je voudrais passer en dessous de ma barre de fractionnement de le la ligne 12 à la ligne 270
Si je double clique par exemple sur CX13 je voudrais passer en dessous de ma barre de fractionnement de le la ligne 12 à la ligne 356
Si je double clique par exemple sur CX14 je voudrais passer en dessous de ma barre de fractionnement de le la ligne 12 à la ligne 442
Si je double clique par exemple sur CX15 je voudrais passer en dessous de ma barre de fractionnement de le la ligne 12 à la ligne 528
Etc jusqu’à CX51

Il me faut également une macro qui me donne la possibilité de n’ importe quelle emplacement ou je serais , de pouvoir revenir d’un clic à la position initiale de départ c’est-à-dire la ligne 12 en dessous de ma barre de fractionnement
je mettrai ce Bouton en cellule DI10j au dessus de ma barre de fractionnement (se situant en ligne11, comprise)
Merci de me dire si c’est réalisable et si cette macro ne va pas venir en contradiction avec une autre macro simple clic que je b viens d’intégrer a ma feuille ,décrite si dessous(attention je ne suis pas programmeur ,je bricole Merci de vos solutions

Option Explicit
'------
Sub Worksheet_selectionChange(ByVal Target As Range)
Dim Lig As Byte, Col As Byte
If Not Application.Intersect(Target, Range("CV12:CV51,CX12:CX51")) Is Nothing Then
Range("DP2") = Target
Lig = Target.Row
Col = Target.Column
If Col = 100 Then
Range("CW52") = Cells(Lig, "DX")
Else
Range("CW52") = Cells(Lig, "DW")
End If
End If
End Sub




9 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
14 mars 2018 à 10:56
Tu dis...
https://mon-partage.fr/f/6Fn34v7H/
1
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
14 mars 2018 à 15:33
Michel
ta solution fonctionne à merveille mais sur la feuille que je t ai envoyé ,c'est instantané moi ma feuille est beaucoup plus lourde je sais pas si cela a une incidence sur la rapidité d’exécution il me faut a peu prés pratiquement une minute a partir du moment ou j'ai enclenché le processus ;pareil pour réinitialiser ma feuille va jusqu'a la colonne BVF je ne sais pas si cela vient de la est ce que tu peux me dire si le fait de le mettre dans n importe quel module a une incidence j ai inscrit sur un module qui était vide
je vois tout de même que tu te défends et que tu n 'as pas mis longtemps pour trouver une solution je vais aussi essayer d'ouvrir une autre feuille plus legere dans le classeur pour rapatrier juste ces informations et mettre ton code dedans peut être que je devrais obtenir la rapidité voulu...?
autre fois je rapatriais les informations par un programme qui me copiait et collait toujours vers le même emplacement , je ne sais pas si je vais pas essayer cette solution c’était très rapide mais le problème est que je me souviens pas de quelle manière le gars s'y était pris je crois que c'est ce code qu il avait inscrit (les infos étaient prises d'un autre emplacement



Private Sub CommandButton1_Click()

End Sub

Sub Worksheet_selectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("CT56,CV56,CX56,CZ56")) Is Nothing Then
Range("CQ56") = Target
End If
End Sub

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("CT56,CV56,CX56,CZ56")) Is Nothing Then
If Target.Address = "$CV$56" Then
Range("DC57:DL92").Value = Range("BFI" & [D56] & ":BFR" & [D56] + 36).Value
Range("CS57:DB92").Value = Range("BFI" & [E56] & ":BFR" & [E56] + 36).Value
Range("CI57:CR92").Value = Range("BFI" & [F56] & ":BFR" & [F56] + 36).Value
ElseIf Target.Address = "$CT$56" Then
Range("DC57:DL92").Value = Range("BIJ" & [D56] & ":BIS" & [D56] + 36).Value
Range("CS57:DB92").Value = Range("BIJ" & [E56] & ":BIS" & [E56] + 36).Value
Range("CI57:CR92").Value = Range("BIJ" & [F56] & ":BIS" & [F56] + 36).Value
ElseIf Target.Address = "$CZ$56" Then
Range("DC57:DL92").Value = Range("BLK" & [D56] & ":BLT" & [D56] + 36).Value
Range("CS57:DB92").Value = Range("BLK" & [E56] & ":BLT" & [E56] + 36).Value
Range("CI57:CR92").Value = Range("BLK" & [F56] & ":BLT" & [F56] + 36).Value
ElseIf Target.Address = "$CX$56" Then
Range("DC57:DL92").Value = Range("BOL" & [D56] & ":BOU" & [D56] + 36).Value
Range("CS57:DB92").Value = Range("BOL" & [E56] & ":BOU" & [E56] + 36).Value
Range("CI57:CR92").Value = Range("BOL" & [F56] & ":BOU" & [F56] + 36).Value
End If
End If
[CV76].Select
End Sub

c'est pas bien grave , j ai un problème beaucoup plus costaud à résoudre ;je t'interroge pour savoir si tu peux m 'aider à solutionner attention c'est complexe...je pense que tu as le niveau
Bonne soirée et félicitation
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
14 mars 2018 à 14:11
Merci d'utiliser "répondre" plutôt que "commenter"
1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié le 13 mars 2018 à 08:52
Bonjour,

Qu'appelles tu "barre de fractionnement" ?

pour le risque de collision entre tes 2 événement, cette maquette te montre qu'il n'y a pas collision
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$A$2" Then: MsgBox "double"
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$2" Then: MsgBox "simple"
End Sub




0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
13 mars 2018 à 14:46
salut Michel
je ne suis pas programmeur mais j arrive a comprendre généralement ce qui est fait par la personne qui me donne un coup de main )
ce que j appelle les barres de fractionnement est tout simple ,vous allez dans EXcel 2016 sur l 'onglet affichage puis a droite vous verrez fractionner et en dessous masquer , vous cliquez sur fractionner et vous verrez les 2 barres apparaître sur votre feuille qui permettent de bloquer une partie pour faire dérouler l autre (c'est un peu comme si vous figiez les volets)

En fait mon tableau est toujours avec la barre horizontale en ligne11 (comprise) et en vertical ma deuxième barre s 'arrête a la colonne CZ (comprise ) Mon but est de faire remonter les lignes du tableau(sans changer mes barres de fractionnement de place) la des que je vais double cliquer dans les cellules des deux plages dont je vous ai mis les références et selon l'ordre choisi je pourrais choisir immédiatement l information a l 'emplacement qui m 'intéresse par un simple double Click(et surtout, très important l avoir immédiatement sous les yeux) mais comme je vous l ai précisé il faut aussi que de la position qui a été sélectionné je puisse revenir a la position initiale c'est a dire que je me retrouve a nouveau quand je le désire en ligne 12 en dessous de ma barre de fractionnement (ligne11) donc il faudra une macro pour assurer le retour à la position habituelle
je pense que c'est réalisable
je comprends que le double click ne viendra pas interférer sur le simple click
Avez vous une idée précise de la façon de réaliser ce petit programme??
??
MERCi Bonne journée
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
13 mars 2018 à 16:33
une aide sera plus facile avec la feuille du classeur
pour cela:
Mettre le classeur sans données confidentielles en pièce jointe sur 
https://mon-partage.fr/
Puis faire un clic droit copier le raccourci et coller dans votre message


je mettrai ce Bouton en cellule DI10j au dessus de ma barre de fractionnement (se situant en ligne11, comprise)
on pourrait peut-^tre utiliser un clic droit ?


je verrai tout ça demain matin à moins que qqn d'autre te propose une solution..

ps: j'ai xl2007
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
13 mars 2018 à 19:49
Salut Michel
je te mets le fichier si il y une chose que tu comprends pas n hésite pas
moi je pense qu il est possible de faire un mini programme qui permet de se retrouver a la ligne qu on désire sans aller faire du copier coller avec un tempo et une mémoire de l 'emplacement
à mon avis ce serait beaucoup mieux ; merci de t intéresser c'est sympa https://mon-partage.fr/f/XLoh5Whl/
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
14 mars 2018 à 09:11
Salut

Comme d'hab, je fais une proc bidon pour étudier le principe demandé

ici, on cache de la ligne 12 à la ligne 50 (227 ) avec un pas de 5 (86) suivant la ligne sélectionnée ( 20 pour l'étude); Si je mets 21 par ex on agrandira les lignes Masquées de 5 soit ligne 12 à 55 masquées ( il y a peut-^tre un moins 1 qui traine à étudier!)

Sub cacher()
Dim Lignes As String, Deb As Byte, Fin As Integer
Deb = 20
Fin = 50 + 5 * (Deb - 20)
Lignes = 12 & ":" & Fin
Rows(Lignes).Hidden = True
End Sub


j'insiste: ce n'est que le principe pour cacher des lignes suivant la valeur d'une cellule. l'étape suivante est d'utiliser les proc événementielles: peut-^tre peux tu le faire
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
14 mars 2018 à 13:52
Bonjour Michel
je ne suis pas programmeur je ne comprends pas ce que tu as fait je ne vois aucun lien avec mes colonnes CV12:CV51 et CX12 CX51 je ne vois pas comment tu peux actionner ce programme tu parles de lignes selectionne alors qu il faut que je double clique dans une cellule de chaque plage pour pouvoir masquer mes lignes
exemple si je doubleclique sur la cellule CV12 il va falloir que de la ligne 12 a la ligne 226 ce soit masqué
si je clique sur la cellule CV13 il va falloir que de la ligne 12 a la ligne 312 ce soit masqué
si je clique sur la cellule CV14 il va falloir que de la ligne 12 a la ligne 398 ce soit masqué
etc
pour la plage CX12;CX51 si je clique sur la cellule CX12 il va falloir que de la ligne 12 a la ligne 269 ce soit masqué
si je clique sur la cellule CX13 il va falloir que de la ligne 12 a la ligne 355 ce soit masqué
si je clique sur la cellule CX14 il va falloir que de la ligne 12 a la ligne 441 ce soit masqué
etc

j ai essaye de masquer en macro manuellement de la ligne 12 a 226 cela donne cela
Sub Masquer()
'
' Masquer Macro
'

'
Rows("12:226").Select
Range("CI12").Activate
Selection.EntireRow.Hidden = True

quand je veux revenir a la position initiale je sélectionne le tableau entier, puis clic droit afficher
Sub Afficher()
'
' Afficher Macro
'

'
Cells.Select
Range("CQ21").Activate
Selection.EntireRow.Hidden = False
End Sub


le problème est que lorsque je clique dans l angle pour sélectionner le tableau entier il m 'apparaît à chaque fois une fenêtre de débogage Erreur d'execution 1004 sinon c'est un peu un début de piste sauf que il faut maintenant lié la sélection aux plages CV12.CV51 et CX
;CX51 ;ca je ne sais pas du tout comment il faut faire
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
14 mars 2018 à 14:01
salut michel
excuse moi je n avais pas vu ton document je suis entrain de regarder mais apparemment cela a l air de fonctionner
0

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

Posez votre question
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
14 mars 2018 à 19:00
salut michel
j ai un petit soucis j ai fait comme je t ai dit une copie de ma feuille ou je n ai garde que le strict nécessaire donc ça marche maintenant rapidement ,sauf que sur les dernières valeurs ca ne fonctionne pas
j ai regarde ton programme et tu as arrete a 3500 donc j ai remis le chiffre de 3624 correspondant a celui qui doit s 'afficher si je clique sur CX51 et ca ne me remonte pas a la ligne 12 et lorsque j appuie sur la CV51 c'est celle de la CX51 qui s affiche j ai vu que d a partir de la ligne 35000 les lignes étaient masquées donc je les ai démasqué mais j ai toujours un problème
je cherche d ou vient ce schmilblic
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
14 mars 2018 à 23:04
ca y est Michel tout marche impeccable j ai réparé ,merci demain je te parlerais d une chose bien plus compliquée merci et bonne soirée
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié le 15 mars 2018 à 07:46
Bonjour,
1/
JE T'AI DEMANDE D'UTILISER "REPONDRE AU SUJET" ET NON "COMMENTER LA REPONSE"

et tu t'en fous complétement

2/ tu fais des demandes incomplètes et il faudrait que je repasse du temps pour réparer ton inconséquence ?
LA REPONSE EST NON


0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
15 mars 2018 à 08:55
Salut Michel
C'est bon pas la peine de se fâcher pour rien j'ai pas l habitude de ce forum ;excuse moi, tu as fait du bon travail j ai réparé c était pas le bout du monde désolé j ai plus de 60 balais et j ai pas la verve d'un tout jeune,il faut m'excuser
Pour le reste c'est dommage parce que c'est quelque chose qui te permettrait de te dépasser ,je pense que vous aimez vous les programmeurs ,la difficulté ; mais bon tu es libre de tes décisions
merci d 'avoir solutionner mon premier problème aussi rapidement le résultat est très positif

Bonne journée,encore une fois je te remercie
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
15 mars 2018 à 09:16
c était pas le bout du monde désolé j ai plus de 60 balais et j ai pas la verve d'un tout jeune

bravo, j'en ai 72!

quelque chose qui te permettrait de te dépasser
Bof, ce n'était pas compliqué du tout...
0
chrisnapoli Messages postés 134 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 5 avril 2018
15 mars 2018 à 13:19
salut Michel
c'est bien tu es dans de meilleures dispositions
rien ne sert de s'embrouiller pour des futilités ,si ce n 'est pas compliqué pour toi ça l 'est pour moi ,je suis sculpteur de métier
je te propose de jeter un œil pour un soucis complètement insurmontable pour moi si ça te dit sinon ce n 'est pas grave .
j ai un classeur que l on nommera A, ce classeur, dès son ouverture appelle 2 autres classeurs B et C, dans lesquels sont enregistres des programmes différents ,qui s appliquent au classeur A
Ce sont deux timers qui me collent des cotations a intervalles réguliers
pour un il colle toutes les minutes a partir de 09:00:01 et jusqu a 09:30:00
pour l autre toutes les 15 mn a partir de 09:30 jusqu a 17:45:00 ces cotations sont inscrites dans le Classeur A en colonne A de A12 :A131
les cotations dans cette plage sont tires directement des plages AU12:AU51 (qui sont le dernier cours enregistré)
puis de AV12:AV51 (qui sont les plus Haut de séance)
puis de AW12:AW51( qui sont les plus Bas de séance) les cotations dans ces 3 plages sont inscrites en temps réel par un logiciel d'importation de liens DDE(Data Dynamic Exchange) , ces cotations boursieres s'inscrivent dans Excel en Streaming en vrai temps réel
mon problème est le suivant , lorsque le marche financier ouvre a 09:00:00 les cotations s'inscrivent dans mon classeur A dans un emplacement bien défini de telle façon que je puisse analyser a quelle heure sont les PH et PB de séance,mon soucis est que certains jours il y a des mouvements de panique a l ouverture et de nombreux traders vendent en même temps empêchant le cours d'ouverture d’être fixé certains jours il arrive que sur des valeurs le cours d'ouverture ne soit fixé que 2 a 4 voir 5 mn après 09:00:00 entraînant ainsi une erreur sur mon classeur A ,puisque ces cotations avant fixation du prix d'ouverture s'inscrivent tout de même et faussent ainsi les résultats Pour bien aller il faudrait que le Timer commence a coller chaque valeur séparément, seulement lorsque le prix d'ouverture est fixée le seul moyen pour cela est que il prenne en compte le fait que des que les PB et PH changent dans les plages AV12:AV51 et AW12:AW51 c'est a dire à partir de 09:00:00, a ce moment la et seulement a ce moment la les cotations pourront s'inscrire
le soucis est que si on fait un programme qui n enclenche pas le collage des cotations tant que les PB et PH n' aient pas changé , comment faire pour que les cotations s'inscrivent en face des heures sur mon classeur Pour comprendre il faut savoir que les cotations de la colonne A se collent ainsi dans la feuille
en colonne NR12:NR131 pour celles de 09:00:00 en NS12:NS131 pour celles 09:01:00;en NT12:NT131 pour 09:02:00 :etc jusque a la colonne QF12:QF131 pour les cotations de 17:45:00
Je vous précise que sur la ligne 11 et a partir de NR11 sont inscrits les repaires des heures
Cellule NR11 (09:00:00) Cellule NS11(09:01:00) cellule NT11(09:02:00) jusqua QF11(17:45:00)

je vous met les différents code d appel des classeurs ainsi que les timers pour que vous ayez déjà une idée de la complexité du problème après je pourrais éventuellement vous fournir les classeurs en partie

Sub Auto_open()
Windows("Trade .xlsm").Activate
Application.ScreenUpdating = False
For i = 12 To 134
Rows(i).Select
'Range("NR" & i & ":QF" & i).ClearContents
Next

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



VBA project(cotationsParMinutetrade.xlsm)

Option Explicit

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

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ArretCotation1
End Sub

Public Durée1 As Date
Public c As Long
Public TempsInitial1 As Date
Public TempsInitial1Num As Double
Public T1
Public Tempo1

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


VBAPoject(CotationAu Quart-dheureTrade.xlsm)

Option Explicit

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

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ArretCotation2
End Sub

Public Durée2 As Date
Public d As Long
Public TempsInitial2 As Date
Public TempsInitial2Num As Double
Public T2
Public Tempo2
Public Bascule2 As Date
Public PremierPassage2 As Boolean



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

Bonne journée

du coup la , je pense que c'est vraiment très trés complexe
0