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
 

Fichiers joints

Lone-wolf

XLDnaute Barbatruc
Bonjour KEYVIN

Ce que tu vois, ce n'est pas un téléchargement, mais l'utilisation du processeur. Tu peux le voir dans le Gestionnaire des tâches > Performance. D'ailleurs c'est bien écrit "4 processeurs xxx".
 

KEYVIN67

XLDnaute Nouveau
Bonjour KEYVIN

Ce que tu vois, ce n'est pas un téléchargement, mais l'utilisation du processeur. Tu peux le voir dans le Gestionnaire des tâches > Performance. D'ailleurs c'est bien écrit "4 processeurs xxx".
Bonjour,

D'accord, du coup il n'y a aucun moyen d'afficher un message ? Disant que les processus sont en cours ?
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour,

D'accord, du coup il n'y a aucun moyen d'afficher un message ? Disant que les processus sont en cours ?
dans chaque étape significative de la proc en cours, insérer un message dans la barre de status :
Application.StatusBar=" Etape N : Déjà X% du traitement effectué"
 

KEYVIN67

XLDnaute Nouveau
Bonsour®

dans chaque étape significative de la proc en cours, insérer un message dans la barre de status :
Application.StatusBar=" Etape N : Déjà X% du traitement effectué"
Merci pour votre réponse, mais je suis débutant sur les macros, qu'est-ce que je dois faire concrètement avec cette formule ?
 

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.
 

Fichiers joints

Dernière édition:

KEYVIN67

XLDnaute Nouveau
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.
Je ne suis pas contre le VBA, c'est juste qu'il faudrait m'expliquer les étapes dans les détails. Si cela n'est pas trop long..
 

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


Haut Bas