Programmer un timer sur plusieurs feuilles

Résolu
chrisnapoli -  
 chrisnapoli -
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

1 réponse

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. chrisnapoli
       
      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
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > chrisnapoli
       
      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
    3. chrisnapoli
       
      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
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > chrisnapoli
       
      peux-tu partager le code complet du module?
      0
    5. chrisnapoli
       
      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