Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps donné

kelito

XLDnaute Nouveau
Bonjour à toutes et tous,

Voilà, je cherche a faire défiler en boucle selon un temps donné (minutes) les feuilles d'un même classeur.

De plus, je souhaiterais pouvoir arrêter le défilement afin de pouvoir faire une mise à jour des données et ensuite pouvoir le relancer.

Etant débutant en language VBA, je me tourne vers vous car je ne vois pas comment faire.

Merci pour votre aide.

PS : Je joins un petit fichier
 

Pièces jointes

  • Classeur1.xlsx
    10.4 KB · Affichages: 84
  • Classeur1.xlsx
    10.4 KB · Affichages: 105
  • Classeur1.xlsx
    10.4 KB · Affichages: 108

ivan27

XLDnaute Occasionnel
Re : Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps

Bonsoir kelito, le forum,

Voici une proposition qui devrait fonctionner pour le défilement automatique des pages.

VB:
Private Sub x()
Sheets("Feuil1").Activate
a = Now + ((1 / 1440) * Sheets("PARAM").Range("B1").Value)
Application.OnTime a, "y"
End Sub
Private Sub y()
Sheets("Feuil2").Activate
b = Now + ((1 / 1440) * Sheets("PARAM").Range("B2").Value)
Application.OnTime b, "z"
End Sub
Private Sub z()
Sheets("Feuil3").Activate
c = Now + ((1 / 1440) * Sheets("PARAM").Range("B3").Value)
Application.OnTime c, "x"
End Sub

Par contre, pour la pause et la reprise, je ne sais pas comment faire.

Bonne chance et à bientôt

Ivan
 

kelito

XLDnaute Nouveau
Re : Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps

Bonjour Ivan27,

Merci du temps passé sur mon problème. Mais étant débutant en programmation, je ne comprends pas tout.

J'ai essayé de copier ta proposition dans un module, mais je n'arrive pas à lier mon bouton de lancement avec ton code à partir de la feuille "PARAM"

Qu'est ce que je ne fais pas bien.

D'avance merci.

Kelito
 

job75

XLDnaute Barbatruc
Re : Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps

Bonjour kelito, ivan27,

Voyez le fichier joint et cette macro dans Module1 (Alt+F11) :

Code:
Sub Défilement()
'touches Ctrl+D pour lancer la macro
Static defil As Boolean 'mémorise
Dim c As Range, F As Object, t As Double
defil = Not defil
If Not defil Then End 'arrête la macro
On Error Resume Next 'si une feuille n'existe pas
1 With Sheets("PARAM") 'feuille à adapter
  For Each c In .Range("A1", .Range("A" & .Rows.Count).End(xlUp)(2))
    If c = "" Then GoTo 1
    Set F = Nothing: Set F = Sheets(CStr(c))
    If F Is Nothing Then
      MsgBox "la feuille '" & c & "' n'existe pas..."
    Else
      F.Activate
      t = Now + Val(c(1, 2)) / IIf(c(1, 3) Like "m*", 1440, 86400)
      While Now < t: DoEvents: Wend
    End If
  Next
End With
End Sub
La macro se lance par les touches Ctrl+D.

Notez les listes de validation en colonne C de la feuille PARAM.

Et le format personnalisé en colonne A "Temps "@

A+
 

Pièces jointes

  • Défilement feuilles(1).xls
    44.5 KB · Affichages: 119

kelito

XLDnaute Nouveau
Re : Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps

Bonjour Job75,

C'est exactement se dont j'avais besoin ! Ton application est vraiment super !

Merci pour le temps consacré à mon problème car sans toi et Ivan 27, je n'y serai jamais arrivée seul.

Encore merci mille fois.
 

job75

XLDnaute Barbatruc
Re : Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps

Re,

Fichier (2) avec un bouton dans un UserForm.

Code dans Module1 :

Code:
Sub Défilement()
'touches Ctrl+D pour lancer la macro
With UserForm1
  .StartUpPosition = 0
  .Show 0 'non modal
End With
End Sub
Code dans UserForm1 :

Code:
Private Sub CommandButton1_Click()
Static defil As Boolean
Dim c As Range, F As Object, t As Double
defil = Not defil
CommandButton1.Caption = IIf(defil, "Arrêter", "Lancer") & " le défilement"
If Not defil Then Exit Sub
On Error Resume Next 'si une feuille n'existe pas
1 With Sheets("PARAM") 'feuille à adapter
  For Each c In .Range("A1", .Range("A" & .Rows.Count).End(xlUp)(2))
    If c = "" Then GoTo 1
    Set F = Nothing: Set F = Sheets(CStr(c))
    If F Is Nothing Then
      MsgBox "La feuille '" & c & "' n'existe pas..."
    Else
      F.Activate
      t = Now + Val(c(1, 2)) / IIf(c(1, 3) Like "m*", 1440, 86400)
      While Now < t
        If Not defil Then Exit Sub 'arrête la boucle
        DoEvents
      Wend
    End If
  Next
End With
End Sub
A+
 

Pièces jointes

  • Défilement feuilles(2).xls
    51 KB · Affichages: 91

kelito

XLDnaute Nouveau
Re : Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps

C'est encore mieux et plus esthétique je dirais.

Bravo à toi Job75.

Pour ma culture (car je débute) Peux-tu me "traduire" ce code s'il te plaît ?

D'avance merci.
 

job75

XLDnaute Barbatruc
Re : Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps

Re,

Non je ne vais pas traduire, voyez simplement l'aide VBA sur While/Wend et DoEvents.

Par ailleurs il y avait bouclage sans fin si la feuille PARAM n'existe pas ou si A1 est vide.

Cette ligne de code l'évite :

Code:
If .[A1] = "" Then Exit Sub 'sécurité
Fichiers (1 bis) et (2 bis) complétés.

A+
 

Pièces jointes

  • Défilement feuilles(2 bis).xls
    39 KB · Affichages: 57
  • Défilement feuilles(1 bis).xls
    44 KB · Affichages: 56

job75

XLDnaute Barbatruc
Re : Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps

Re,

Avec une temporisation minimum de 5 secondes on pourra toujours sortir de la boucle :

Code:
t = Application.Max(t, Now + 5 / 86400) '5 secondes au moins
Qu'il n'y ait aucune feuille existante en colonne A ou que la colonne B soit vide.

Fichiers (ter).

Je pense qu'on a fait le tour de la question.

Edit : j'ai quand même ajouté dans le ThisWorkbook du fichier (2 ter) :

Code:
Private Sub Workbook_Activate()
Défilement
End Sub

Private Sub Workbook_Deactivate()
Unload UserForm1
End Sub
A+
 

Pièces jointes

  • Défilement feuilles(2 ter).xls
    50 KB · Affichages: 75
  • Défilement feuilles(1 ter).xls
    34 KB · Affichages: 45
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Comment avec VBA créer un défilement de feuilles excel en boucle selon un temps

Bonjour kelito, Salut Job :)

N'apporte rien à la discution.

En voyant le titre du fil : "
défilement de feuilles excel en boucle ", je ne peux m’empêcher de poster le fichier que MyDearFriend avait donné pour son 200em Post et que Hervé :) a retrouvé pour mon plus grand bonheur.

Cordialement
 

Pièces jointes

  • 200eme_mDF.xls
    872 KB · Affichages: 104
  • 200eme_mDF.xls
    872 KB · Affichages: 86

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 868
dernier inscrit
JJV