Microsoft 365 Mise à jour d'un graphique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

garnote

XLDnaute Junior
Bonjour,

J'ai une macro qui génère 10 formules qui changent les valeurs d'une plage associée à un graphique.
Après chaque changement, elle fait une pause de une seconde, mais le graphique ne se met pas à jour
suite au changement de formule. Que faire, mon dieu, que faire? 😊
Content d'apprendre que le site est en bonne santé.

Bonne journée!
garnote
 

Pièces jointes

Dernière édition:
Bonsoir à tous,

Testez avec :
VB:
Dim i As Byte, t 'mémorise les variables

Sub Weierstrass()
    Calcul
    If i = 0 Then t = Now
    i = i + 1
    If i > 9 Then i = 0: Exit Sub
    Application.OnTime t + i / 86400, "Weierstrass"
End Sub

Sub Calcul()
    Dim n As Byte, an$, bn$, f$, Texte$
    For n = 0 To i
        an = "a^" & n
        bn = "b^" & n
        f = f & "+" & an & "*COS(" & bn & "*PI()*d9)"
    Next n
    Texte = Right(f, Len(f) - 1)
    Range("E9:E109") = "=" & Texte
    f = ""
End Sub
A+
 

Pièces jointes

Bonjour garnote, le forum,

Autre solution avec le Timer :
VB:
Sub Weierstrass()
    Dim i As Byte, t
    For i = 0 To 9
        Calcul i
        t = Timer
        While Timer < t + 1 And t < 86400: DoEvents: Wend 'attente
    Next i
End Sub

Sub Calcul(i As Byte)
    Dim n As Byte, an$, bn$, f$, Texte$
    For n = 0 To i
        an = "a^" & n
        bn = "b^" & n
        f = f & "+" & an & "*COS(" & bn & "*PI()*d9)"
    Next n
    Texte = Right(f, Len(f) - 1)
    Range("E9:E109") = "=" & Texte
    f = ""
End Sub
A+
 

Pièces jointes

Bonsoir à tous,

Testez avec :
VB:
Dim i As Byte, t 'mémorise les variables

Sub Weierstrass()
    Calcul
    If i = 0 Then t = Now
    i = i + 1
    If i > 9 Then i = 0: Exit Sub
    Application.OnTime t + i / 86400, "Weierstrass"
End Sub

Sub Calcul()
    Dim n As Byte, an$, bn$, f$, Texte$
    For n = 0 To i
        an = "a^" & n
        bn = "b^" & n
        f = f & "+" & an & "*COS(" & bn & "*PI()*d9)"
    Next n
    Texte = Right(f, Len(f) - 1)
    Range("E9:E109") = "=" & Texte
    f = ""
End Sub
A+
Bonjour à tous ceux qui m'aident,
Super, la première approche de job75 a fonctionné. Merci
J'ai essayé d'adapter cette approche avec ce nouveau classeur, mais en vain!
 

Pièces jointes

Dernière édition:
Re,
Comme dit au post #15, 365 doit rafraichir à la fin de la macro.
La macro du post #15 ou celle de Job ont une structure différente.
Chaque seconde la macro de calcul de la matrice est exécutée puis se termine. Donc en sortie de macro effectue le refresh.
Dans votre macro on n'en sort qu'à la fin de tous les calculs donc le refresh ne se fait qu'à la fin.
C'est pour ça que sur mon PC ça marche car en VBA6 le refresh est permanent donc ça marche mais c'est plus lent. Sur la version 7 le refresh ne se fait qu'à la fin donc c'est plus rapide mais ne permet pas une approche dynamique.
 
Re,
Comme dit au post #15, 365 doit rafraichir à la fin de la macro.
La macro du post #15 ou celle de Job ont une structure différente.
Chaque seconde la macro de calcul de la matrice est exécutée puis se termine. Donc en sortie de macro effectue le refresh.
Dans votre macro on n'en sort qu'à la fin de tous les calculs donc le refresh ne se fait qu'à la fin.
C'est pour ça que sur mon PC ça marche car en VBA6 le refresh est permanent donc ça marche mais c'est plus lent. Sur la version 7 le refresh ne se fait qu'à la fin donc c'est plus rapide mais ne permet pas une approche dynamique.
Ah bien ça alors! 👍Merci pour ces éclaircissements.
 
J'ai essayé d'adapter cette approche avec ce nouveau classeur, mais en vain!
Vous n'avez pas essayé d'adapter, voyez ceci avec le Timer :
VB:
Sub Fourier()
    Dim i%, t
    For i = 1 To 50
        Calcul i
        t = Timer
        While Timer < t + 1 And t < 86400: DoEvents: Wend 'attente
    Next i
End Sub

Sub Calcul(i%)
    Dim j%, n%, f$, texte$
    [J4] = i
    For j = 1 To i
        n = 2 * j - 1
        f = f & "+" & "sin(" & n & "*t)/" & n
    Next j
    texte = Right(f, Len(f) - 1)
    Range("E6:E106") = "=" & texte
    f = ""
End Sub
 

Pièces jointes

Vous n'avez pas essayé d'adapter, voyez ceci avec le Timer :
VB:
Sub Fourier()
    Dim i%, t
    For i = 1 To 50
        Calcul i
        t = Timer
        While Timer < t + 1 And t < 86400: DoEvents: Wend 'attente
    Next i
End Sub

Sub Calcul(i%)
    Dim j%, n%, f$, texte$
    [J4] = i
    For j = 1 To i
        n = 2 * j - 1
        f = f & "+" & "sin(" & n & "*t)/" & n
    Next j
    texte = Right(f, Len(f) - 1)
    Range("E6:E106") = "=" & texte
    f = ""
End Sub
C'est parfait!
Merci.
Eh oui, j'ai essayé, mais maladroitement et non publié.
Bonne soirée!
 
Avec Application.OnTime chez moi le comptage n'est pas bien régulier :
VB:
Dim i%, t 'mémorise les variables

Sub Fourier()
    If i = 0 Then t = Now
    i = i + 1
    If i > 50 Then i = 0: Exit Sub
    Calcul
    Application.OnTime t + i / 86400, "Fourier"
End Sub

Sub Calcul()
    Dim j%, n%, f$, texte$
    [J4] = i
    For j = 1 To i
        n = 2 * j - 1
        f = f & "+" & "sin(" & n & "*t)/" & n
    Next j
    texte = Right(f, Len(f) - 1)
    Range("E6:E106") = "=" & texte
    f = ""
End Sub
 

Pièces jointes

Avec Application.OnTime chez moi le comptage n'est pas bien régulier :
VB:
Dim i%, t 'mémorise les variables

Sub Fourier()
    If i = 0 Then t = Now
    i = i + 1
    If i > 50 Then i = 0: Exit Sub
    Calcul
    Application.OnTime t + i / 86400, "Fourier"
End Sub

Sub Calcul()
    Dim j%, n%, f$, texte$
    [J4] = i
    For j = 1 To i
        n = 2 * j - 1
        f = f & "+" & "sin(" & n & "*t)/" & n
    Next j
    texte = Right(f, Len(f) - 1)
    Range("E6:E106") = "=" & texte
    f = ""
End Sub
Chez moi non plus, mais avec les macros précédentes, c'est parfaitement régulier.
Merci et bonne soirée!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
317
Retour