Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Barre de progression

BEKA One

XLDnaute Nouveau
Salut la communauté,
Je viens encore une fois solliciter l'aide du forum. Je précise que je suis un débutant en excel. Et là je suis presque à la fin d'un de mes projets et j'ai besoin d'un gros coup de main.

J'ai élaboré un fichier comportant une bonne dizaine de feuilles qui se remplissent à partir des formulaires. J'ai préparé le fichier pour être réutilisable les années suivantes, du coup j'ai prévu un code de réinitialisation qui permet de vider toutes les feuilles en plus des photos dans les répertoires séparés. Mais vu qu'il y a plusieurs feuilles, le code de la procédure prend du temps pour s'exécuter. C'est là que j'ai pensé y insérer une barre de progression afin d'informer l'utilisateur sur l'état d'avancée de la procédure.

J'ai réussi à trouver sur internet deux (02) modèles de barre de progression qui me vont bien. Mon seul problème c'est que je n'arrive pas à adapter les codes à mon projet. Ce que je souhaite faire, c'est de pouvoir afficher l'état d'avancement de l'exécution du code de suppression des données des feuilles grâce aux barres de progression. J'avoue que je ne comprend rien aux codes trouvés sur le net.

J'ai créé deux (02) fichiers ci-joints avec un exemple de feuille pré remplie avec les barres de progression que je souhaite intégrer à mon projet. Merci d'avance à toutes les personnes qui sont disposées à m'aider dans cette tâche.

PS: Au passage, quelqu'un aurait-il un code qui permettrait de supprimer uniquement des images dont les noms commencent par un préfixe donné (par exemple AGE-000) dans un dossier!

Cordialement!
 

Pièces jointes

  • BARRE_PROGRESSION.xlsm
    40.8 KB · Affichages: 37
  • PROGRESS_BAR.xlsm
    45 KB · Affichages: 29

BEKA One

XLDnaute Nouveau
Holla, Mr Toulon et Roland je ne vous suis plus.

Patrick, voici le fichier que vous m'avez proposé. J'y ai inséré ma macro, mais l'exécution est d'une lenteur incompréhensible. En plus pendant l'exécution, le curseur n’arrête pas de tourner en boucle.

Est-il possible d’accélérer le processus? J'ai vu que vous avez posté d'autres macros, mais comme je ne m'y connais pas aussi bien en VBA, je n'arrive pas à vous suivre.

Pouvez-vous me dire ce qu'il arrive à mon code? Merci bien pour votre sollicitude!
 

Pièces jointes

  • Barre de progression simplifiéeV3 .xlsm
    54.2 KB · Affichages: 23

BEKA One

XLDnaute Nouveau

Okay Roland!

Comme vous le dites, je m'attendais au lancement de la macro test avoir en retour
un message comportant la valeur de la variable "Chemin$..." Mais rien.!

Je vais encore revoir une fois de plus, peut être que c'est moi qui me plante en fin
de compte!

A très bientôt!
 

patricktoulon

XLDnaute Barbatruc
re
peut etre que finalement tu comprendra mieux comme ca
VB:
Sub testzz()
    Dim debut&, fin&, i&, c&
    debut = 254   'debut de la boucle
    fin = 20000    'limite de la boucle
    For i = debut To fin    'boucle de 386 a 20000
        c = c + 1
        progress3 debut, fin,c
        DoEvents    'autorise d'autres action pendant la boucle mais ralenti la boucle(testez bloqué et débloqué)
    Next
End Sub

Sub progress3(debut, fin, c)
    Dim a&, StringBar$, longBar&
    longBar = 75    'longueur de la bar de progression en terme de caractere
    a = c / (fin / longBar)    'calcul index(situation bar) par rapport à C iteré apartir de 1 dans la boucle
    StringBar = String(a, Chr$(8)) & String(longBar - (a), Chr$(6))    'creation du string
    Application.StatusBar = "  << |||" & StringBar & "||| >>  " & Int((a + 0.1) * 100 / longBar) & " % EFFECTUE"""    ' le (((0.1))) c'est pour eviter le division par zero
    DoEvents
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
heu ...fichier du post#16
ceci n'a aucun sens selon moi
en gros si on fait abstraction de la progressbar tu eface 3 plage dans 3 feuilles différentes 100 milles fois
tu t'ennuie c'est ca ???
VB:
Sub test()
    Dim i As Long, fin As Long
    debut = 1: fin = 100000
    Application.ScreenUpdating = False
    For i = debut To fin
        ' ton code qui fait ce que tu veux
        'blablabla
        '....
        Feuil1.Range("A1:K150").ClearContents
        Feuil2.Range("A1:N575").ClearContents
        Feuil3.Range("A1:Q99").ClearContents
        '
        progression i, fin, styleColor.blue_seven

    Next
End Sub

on se croise Roland
 

BEKA One

XLDnaute Nouveau

Ma macro a pour but de vider les plages des cellules des 3 feuilles
comme. Je précise que les données dans le projet que j'ai soumis
sont à titre d'exemple.

Dans le vrai projet, les lignes peuvent dépasser le millier par feuille
d'où l’intérêt d'avoir un état d'avancé de la macro par la barre de
progression.

Voilà en bref ce que je veux faire.
 

patricktoulon

XLDnaute Barbatruc
re
dans le fichier du post 16 met lui ca la place et adapte tes 3 plages car la effectivement c'est relativement rapide le progress ne sert a rien
VB:
Sub test()
    Dim i As Long, fin As Long,plage$
    debut = 1: fin = 3
    Application.ScreenUpdating = False
    plage = Array(, "A1:K150", "A1:N575", "A1:Q99")
    For i = 1 To fin
        ' ton code qui fait ce que tu veux
        'blablabla
        '....
        Sheets("Feuil" & i).Range(plage(i)).ClearContents
         '
        progression i, fin, styleColor.blue_seven

    Next
End Sub
 

BEKA One

XLDnaute Nouveau

Euh non Mr Patrick!

Le fichier que je vous ai soumis est juste un exemple. Mon vrai projet comporte
quatorze (14) feuilles de calculs avec environ un bon millier de lignes de données
par feuille. Pour les vider, vous comprenez que ça prend un peu de temps d'où mon
intention d'y intégrer une barre de progression.

La macro que j'utilise pour vider les 14 feuilles est celle que j'ai fourni dans mon fichier
pour les 3 le vidage des cellules des premières feuilles. J'évite de soumettre le vrai projet
car contenant des données hyper confidentielles.

Je veux juste qu'on m'aide à trouver un code pour la suppression des données de plages
de cellules de plusieurs feuilles qui marche avec une barre de progression. Etant un gros
débutant en excel VBA, j'ai un peu de mal à me retrouver avec des macro très élaborés.
Veuillez m'en excuser.

Merci en tout cas pour vos apports!
 

patricktoulon

XLDnaute Barbatruc
re
je te l'ai donné en post 24
a toi d'adapter l'aray des plage avec le nombre de feuilles

cela dit je viens de tester en effaçant les feuilles complètes sur tes 3 feuilles et je le répète le progress ne sert a rien
tout juste cliqué sur ton bouton ben c'est déjà fini et 14 ca doit pas changer grand chose

a mon avis si ca dure des plombes chez toi c'est soit
le PC est a la ramasse
soit il y a des formules avec des données d'autres feuilles dans les feuilles et le calculate tire dans le rouge avec des ref a gogo quand une feuille est effacée donc données plus dispo

conclusion
met tout visu et action auto a false
le screen
le displayalerts
le calculate
et après seulement efface
je parirais a 10 contre 1 que le progress ne te sera plus utile
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re

tu es sérieux Roland ?
VB:
Sub test()
InitStatusBar
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
    Dim I As Long, Fin As Long
    Debut = 1: Fin = 100000
    For I = Debut To Fin
        Feuil1.Range("A1:K150").ClearContents
        Feuil2.Range("A1:N575").ClearContents
        Feuil3.Range("A1:Q99").ClearContents
        'avec une grande quantité afficher la barre tous les !? ici 100 pour 100 0000
        If I Mod 100 = 0 Then AffProgressStatusBar I, Fin
    Next
InitStatusBar
Application.Calculation = xlCalculationAutomatic
End Sub

What else
ca va faire plaisir a coluche ca tiens
des cellule plus blanc que blanc
 

Roland_M

XLDnaute Barbatruc
re

oui je suis sérieux !
j'ai voulu lui mettre ce qu'il souhaitait, c'est à dire le déroulement de X fois l'effaçage de ces plages !?
peu importe pour moi ce qu'il en fera !

ma version n'a rien à voir là dedans, j'aurai pu mettre la tienne c'était pareil !
 

Discussions similaires

Réponses
5
Affichages
650
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…