IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

BARRE DE PROGRESSION sur un tri [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Retraite
    Inscrit en
    Août 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Août 2021
    Messages : 13
    Points : 9
    Points
    9
    Par défaut BARRE DE PROGRESSION sur un tri
    Bonjour à tous

    Voilà j'ai adapter une barre de progression que j'ai trouvé sur le Net

    Elle ne fonctionne pas

    Si vous pouviez voir pourquoi elle plante

    Merci de votre réponse

    Codialement

    TriEcritures8.xlsm

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 594
    Points
    5 594
    Par défaut
    Bonjour,

    Si vous changez les noms des objets dans le formulaire, il faut également le faire dans le code. Ci-attaché, un exemple plus simple de barre d'avancement.

    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    ta barre est dans un form , donc tu doit indiquer que ta barre est dans un form

    moform.mabarre

    ensuite , bien sur , il faut mettre le vrai nom !!! de chaque "truc" ...

    @+JP

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Retraite
    Inscrit en
    Août 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Août 2021
    Messages : 13
    Points : 9
    Points
    9
    Par défaut BARRE DE PROGRESSION (Suite)
    Bonsoir

    Merci de vos reponse mais je n'arrive toujours pas à lier la Barre de progression à la macro

    Je vous joins mon fichier avec la progresseBar transmise

    Si vous pouviez m'aider

    Très cordialement

    Alain16110
    Fichiers attachés Fichiers attachés

  5. #5
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 594
    Points
    5 594
    Par défaut
    Bonjour,

    Pour ce qui est de votre macro ECRITURES() il n'y a absolument aucune utilité d'utiliser une barre de progression vu qu'il n'y a aucune progression dans cette macro: aucune instruction "For ... Next" à suivre! Cette macro peut d'ailleurs se réduire à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Option Explicit
     
    Sub ECRITURES()
        Sheets("Journal").Select
        ActiveSheet.ListObjects("journal").Range.AutoFilter                 '--- supprime tous les filtres
        ActiveSheet.ListObjects("journal").DataBodyRange.Font.Bold = False  '--- format caractères normaux (non gras)
        With ActiveWorkbook.Worksheets("Journal").ListObjects("journal").Sort
            .SortFields.Clear   '--- supprime tous les tris actifs
            .SortFields.Add2 Key:=Range("journal[[#All],[DATE]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal   '--- tri ajouté sur [DATE]
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply   '--- exécute le tri
        End With
        Range("A100000").End(xlUp).Offset(1, 0).Select   '--- aller juste sous le tableau
    End Sub
    Cordialement.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Retraite
    Inscrit en
    Août 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Août 2021
    Messages : 13
    Points : 9
    Points
    9
    Par défaut BARRE DE PROGRESSION sur un tri (Suite)
    Bonsoir,

    Merci de m'avoir simplifié la macro je m'occupe à la retraite et découvre le VBA

    Cependant mon fichier écriture est un exemple pour avoir une Barre de progression lié à une macro ça devait me permettre d'aller plus loin.

    J'ai d'autre demande par la suite...

    Ex:

    J'ai fais un userform pour saisir des écriture dans mon journal quand je "Valide" la mise à jour est longue et là aussi je voulais un Barre de progression

    Si vous pouvier me transmette mon fichier corrigé avec une barre de forme attaché à une macro je pourrais progresser.

    Merci encore de me répondre

    Bonne soirée

    PS je ne trouve rien sur le net que j'arrive à adapter.

  7. #7
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 594
    Points
    5 594
    Par défaut
    Bonjour,

    Comme indiqué, une barre de progression n'a de sens que s'il y a une progression à suivre et cette "progression" apparait le plus généralement lorsqu'il y a une ou plusieurs boucles à suivre (boucle = instruction For ... Next). Un exemple en attaché (qui effectue une opération qui normalement est réalisée instantanément à l'aide d'une mise en forme conditionnelle).

    Cordialement?
    Fichiers attachés Fichiers attachés

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Retraite
    Inscrit en
    Août 2021
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Retraite

    Informations forums :
    Inscription : Août 2021
    Messages : 13
    Points : 9
    Points
    9
    Par défaut
    Bonjour EricDgn

    Merci de tes conseilles pour cela un Apéro
    surtout un Dimanche pour cela je t'offre un autre apéro...
    en oprtion ton exemple un 3eme apéro...


    J'ai réussi à Adapter ma macro mais effectivement c'est ridicule une Barre de progression pour ce genre de macro.

    Cependant je voulais comprendre et faire fonctionner ce genre de fonction "ProgressBar" suite à des tutos sur le Net.

    Maintenant je vais essayer de l'adapter lors de la validation d'une nouvelle ligne d'écriture dans mon journal, cela prend
    du temps car mon journal fait plus de 3000Lignes.
    Affaire à suivre...

    Pour l'heure Bon Dimanche et merci encore d'aider un Papy "pas trop Net"

    Très cordialement

    Alain16110

    PS Pour l'heure je considère mon message Résolu, si toutefois je galère je reviendrais sur ce forum

    Bye

  9. #9
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 966
    Points : 4 088
    Points
    4 088
    Par défaut
    Citation Envoyé par Alain16110 Voir le message
    ...
    Bonjour.
    Je constate que vous travaillez avec un tableau structuré et c'est une bonne chose.
    Je vois cependant en consultant votre code source quelques imprécisions, car vous travaillez comme sur une plage ordinaire alors que justement le tableau structuré est fait pour vous simplifier la vie.
    Exemples :
    Set c = ActiveSheet.ListObjects("journal").Range.Range("A1")
    c.Offset(i, 1).Select
    C'est pourquoi je vous invite à lire cette documentation : Fonctions en VBA pour gérer les Tableaux Structurés d’Excel

    Vous y trouverez des fonctions très utiles pour gérer simplement vos données dans un tableau structuré.
    Après avoir chargé le module TS que vous trouverez dans le fichier joint, votre code pourrait ressembler à ceci :

    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub VoirBarreAvancer()
        Dim i As Long, iMax As Long, TS As Range
        Dim Pc As Double
        SupprimerCouleurs
        ProgressBar.Show 0              '--- 0 = non modal: on peut travailler sur la feuille avec le formulaire ouvert
        Set TS = Range("journal")       ' Déclaration du tableau structuré
        iMax = TS_Nombre_Lignes(TS)     ' Renvoie le nombre de lignes du tableau structuré
        For i = 1 To iMax                           '--- parcourt les lignes une à une
            If Weekday(TS_InfoCellule(TS, "DATE", i, TS_Valeur)) = vbSunday Then   '--- si c'est un dimanche
                Call TS_ModifCellule(TS, "DATE", i, 65535, TS_CouleurFond) ' Met en fond jaune la cellule de la colonne DATE
                Call TS_Sélectionner(TS, "DATE", i) ' facultatif: sélectionner la cellule = traitement plus long au cause de la sélection.
            End If
            If Round(i / iMax, 2) > Pc Then ' tous les changements de %
                Pc = Round(i / iMax, 2)
                UpdateProgressBar (Pc)          '--- ajuste la barre de progression toutes les 17 avancées
            End If
        Next i
        MsgBox "Terminé"
        Unload ProgressBar
    End Sub

    J'ai vu aussi que vous utilisez souvent select, ce qui ralenti votre traitement et n'est pas toujours utile.
    A noter aussi que la barre de progression peut n'être affichée que lorsque le pourcentage change, ce qui évite de l'afficher 2580 fois au lieu de 100.

    Enfin vous confondez Select et Activate. J'en déduit qu'il serait bon que vous lisiez cette documentation : Tome 1 - Des bases de la programmation à l'algorithme de classement rapide QuickRanking

    Bon, ça fait beaucoup de lecture, mais l'investissement vous fera gagner beaucoup de temps.
    Bonne continuation.

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 230
    Points : 5 594
    Points
    5 594
    Par défaut
    Bonjour,
    Je suis tout à fait d'accord que le code donné peut être amélioré. Je l'ai voulu aussi simple que possible, juste là pour essayer de bien montrer le mécanisme d'une barre de progression, barre de progression d'absolument aucune utilité en l'occurrence.
    Bien cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] barre de progression sur un formulaire access
    Par facteur dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/09/2012, 14h18
  2. [XL-2003] Barre de progression sur une feuille
    Par zangaloni dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/05/2011, 14h24
  3. Barre de progression pendant un TRI
    Par Yurck dans le forum Delphi
    Réponses: 12
    Dernier message: 26/01/2007, 20h30
  4. [VBA-A]paramétrer une barre de progression sur une requête
    Par jeronimo dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/02/2006, 20h38
  5. Barre de progression sur une requète SQL
    Par Wilco dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/04/2005, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo