Programmer un timer sur plusieurs feuilles

Résolu/Fermé
chrisnapoli - 21 avril 2018 à 11:52
 chrisnapoli - 23 avril 2018 à 13:27
Bonjour,

J ai ce code dans un fichier de mon programme de recuperation de cotations par un timer
je voudrais appliquer ce code a quatre feuilles différentes dans le même fichier
je voudrais mettre cette première ligne 4 fois comment dois je faire

Set sh = Sheets("CAC40")


Set sh = Sheets("AEX")
Set sh = Sheets("BEL20")
Set sh = Sheets("PSI20")







J ai ceci pour le moment ,et la procédure ne se fait évidement que sur la première feuille merci de votre aide

Private Sub Workbook_BeforeClose(Cancel As Boolean)
copy_dh
End Sub
Private Sub copy_dh()
Dim sh As Worksheet
Set sh = Sheets("CAC40")
sh.Range("D12:H51").Value = sh.Range("AS12:AW51").Value
sh.Range("C12:C51").ClearContents
sh.Range("C11") = Now
End Sub


A voir également:

1 réponse

yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 474
21 avril 2018 à 14:28
bonjour,
moi je ferais ainsi:
dans thisworkbook:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
copy_dh
End Sub

Private Sub Workbook_Open()
init_marches
End Sub

dans un autre module:
Option Explicit

Dim marches() As Worksheet
Sub copy_dh()
Dim marche As Variant
Dim fl As Worksheet
For Each marche In marches
    Set fl = marche
    Call copy_dhfl(fl)
Next marche
End Sub
Private Sub copy_dhfl(sh As Worksheet)
sh.Range("D12:H51").Value = sh.Range("AS12:AW51").Value
sh.Range("C12:C51").ClearContents
sh.Range("C11") = Now
End Sub
Sub init_marches()
ReDim marches(3)
Set marches(0) = Sheets("CAC40")
Set marches(1) = Sheets("AEX")
Set marches(2) = Sheets("BEL20")
Set marches(3) = Sheets("PSI20")
End Sub
0
Bonjour
j ai mis le code et j 'ai la fenêtre de débogage qui s'ouvre et

For Each marche In marches se colore en jaune
0
yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 474 > chrisnapoli
Modifié le 21 avril 2018 à 18:04
il est important que tu partages chaque fois le texte du message d'erreur que tu reçois avant le coloriage en jaune.
j'ai oublié d'expliquer qu'il fallait sauver, fermer et rouvrir le fichier pour que cela fonctionne. il suffit donc de choisir "terminer" quand tu as le message d'erreur avant d'avoir fermé et rouvert le fichier.
0
j ai ouvert a nouveau le fichier la fenêtre de débogage dit erreur de compilation
la variable de controle For Each doit etre de type variant ou Object
0
yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 474 > chrisnapoli
21 avril 2018 à 19:21
peux-tu partager le code complet du module?
0
sur this workbook

Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
copy_dh
End Sub

Private Sub Workbook_Open()
init_marches
End Sub
sur module 8

Option Explicit

Dim marches() As Worksheet
Sub copy_dh()
Dim marche As Variant
Dim fl As Worksheet
For Each marches In marche
Set fl = marche
Call copy_dhfl(fl)
Next marche
End Sub
Private Sub copy_dhfl(sh As Worksheet)
sh.Range("D12:H51").Value = sh.Range("AS12:AW51").Value
sh.Range("C12:C51").ClearContents
sh.Range("C11") = Now
End Sub
Sub init_marches()
ReDim marches(3)
Set marches(0) = Sheets("CAC40")
Set marches(1) = Sheets("AEX")
Set marches(2) = Sheets("BEL20")
Set marches(3) = Sheets("PSI20")
End Sub
0