Barre de progression ou message lors des calculs

KEYVIN67

XLDnaute Nouveau
Bonjour,

Je m'explique, j'ai créé un fichier avec de nombreux calculs, en particulier "Sommeprod". Dans ce fichier, je dispose de menus déroulants avec des sélections (client, année, série, ..). Lorsque je change ma sélection, tous les calculs sont recalculés puis "L'état du téléchargement" apparait en bas à droite du fichier. Ce chargement prend en moyenne 10 secondes. Mon fichier ne contient aucune macro. Il s'agit uniquement de formules.

J'aimerai donc lorsque les calculs se réalisent, avoir une barre de progression qui apparait sur mon fichier pour signaler un téléchargement en cours (ou bien un message).

Merci d'avance pour vos réponses.

Ci-joint une impression écran de mon fichier, pour la confidentialité des données, j'ai flouté certaines informations, merci.

Cordialement

Kévin
 

Pièces jointes

  • Exemple chargement calcul.png
    Exemple chargement calcul.png
    93.8 KB · Affichages: 85

Lone-wolf

XLDnaute Barbatruc
Re

Bonjour Modeste :)

Il faut enregistrer ton classeur en .xls, en suite copie ces macros.

VB:
Sub Incremente()
Dim nb As Integer, k&, t

        nb = 0
        For k = 1 To 10
            nb = nb + 1
            Application.StatusBar = nb * 10 & "% du traitement terminé."
           t = Timer + 1: Do Until Timer > t: DoEvents: Loop
        Next k
End Sub

Dans le module de la feuille, colonne à adapter

VB:
Private Sub Worksheet_Change(ByVal R As Range)
    If Not Intersect(R, Columns("C:C")) Is Nothing Then
        Application.EnableEvents = False
        If R <> "" Then Call Incremente
        Application.EnableEvents = True
    End If
End Sub
 

KEYVIN67

XLDnaute Nouveau
Re

Bonjour Modeste :)

Il faut enregistrer ton classeur en .xls, en suite copie ces macros.

VB:
Sub Incremente()
Dim nb As Integer, k&, t

        nb = 0
        For k = 1 To 10
            nb = nb + 1
            Application.StatusBar = nb * 10 & "% du traitement terminé."
           t = Timer + 1: Do Until Timer > t: DoEvents: Loop
        Next k
End Sub

Dans le module de la feuille, colonne à adapter

VB:
Private Sub Worksheet_Change(ByVal R As Range)
    If Not Intersect(R, Columns("C:C")) Is Nothing Then
        Application.EnableEvents = False
        If R <> "" Then Call Incremente
        Application.EnableEvents = True
    End If
End Sub

Merci pour votre réponse, mais moi ce que je veux uniquement, c'est signaler par un grand message qui apparait sur la feuille que le calcul est en cours.. Je ne connais rien au langage VBA.
 

Lone-wolf

XLDnaute Barbatruc
Re

Et bein, pour afficher un message il faut du VBA. Sinon par formule

En H1 par exemple : = SI(D15 <> ""; "Calcul en cours... veuillez patienter.";"")

Avec le classeur joint, ecrit quelque chose en colonne C, puis touche Enter.
 

Pièces jointes

  • Classeur-exemple.xlsm
    19.9 KB · Affichages: 54
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re KEYVIN,

Si tu as l'onglet Developpeur, clique dessus, Mode création >Inserer > Contrôle ActiveX. Clique sur A et ajoute le Label sur la feuille.

Ensuite, clique sur Developpeur > Visual Basic (tout à gauche) > Double-clique sur ThisWorkbook, copie et colle ceci dans l'espace vide.

Private Sub Workbook_Open()
'Nom de l'onglet à modifier par le tien
Sheets("Data").Label1.Visible = False
End Sub



Double-clique sur la feuille où tu procède aux modifications. Tu va te retouver dans le module de la feuille. Ici tu copie et colle ce code.

VB:
Private Sub Worksheet_Change(ByVal R As Range)
  'ICI NOM DE(S) COLONNE(S)  À AJOUTER OU MODIFIER
    If Not Intersect(R, Columns("C:C")) Is Nothing Then

        Application.EnableEvents = False
        If R <> "" Then
            Me.Label1.Visible = True

            For k = 1 To 10
                If Me.Label1.Visible = True Then
                    Me.Label1.Visible = False
                Else
                    Me.Label1.Visible = True
                End If
                t = Timer + 1: Do Until Timer > t: DoEvents: Loop
            Next k
            Me.Label1.Visible = False
        End If
        Application.EnableEvents = True

    End If
End Sub

Si tu n'a pas l'onglet Developpeur. Clique sur Fichier > Options > Personnaliser le ruban, et coche la case Developpeur (fenêtre droite).
 

Discussions similaires

Statistiques des forums

Discussions
315 134
Messages
2 116 613
Membres
112 811
dernier inscrit
shade1452