Insertion barre de progression

Résolu
Bonjour,

Je suis actuellement en train de travailler sur un document excel et j'ai un problème.
Je voudrai en faite mettre en place une barre de progression qui permet de visualiser l'état de progression de la macro.
J'ai visiter plusieurs forum et tenter plusieurs manipulation mais cela n'a rien donné

Si quelqu'un a une idée je serai ravi qu'il puisse me donner un coup de main.
Je vous joins mon fichier

MERCI D'AVANCE

http://cjoint.com/data/0BCpvwbfVEZ.htm

10 réponses

  1. Bonjour

    voila un model de barre

    http://cjoint.com/?3BCqMXV02L2

    A+

    Maurice
    0
    1. Merci pour ta réponse Maurice, c'est sympa d'avoir pris le temps de répondre.
      Mais quand j'essai d'intégrer ta barre a mon fichier , j'ai toujours des problème ou bien elle se lance et ensuite ma macro derrière mais elle n'est pas syncro avec ma macro
      Dsl j'ai encore bcp de mal avec excel. -_-
      0
      1. Re
        pour mettre la barre il faut la mettre dans une boucle

        A+
        Maurice
        0
        1. Maurice je reviens vers toi après quelques jours parce que j'ai encore des difficultés a insérer ma fameuse barre de progression...
          Voila ma grande boucle et l'endroit ou je veut insérer ma barre de progression

          Sub recherche(nom_tourelle As String)
          dernligne = Worksheets("donnees king").Range("A65536").End(xlUp).Row
          dernligne1 = Worksheets("King-37").Range("A65536").End(xlUp).Row
          critere = Worksheets(nom_tourelle).Name

          'insertion des titres
          Worksheets(nom_tourelle).Cells(9, 2).Value = "Designation(3.7)"
          Worksheets(nom_tourelle).Cells(9, 3).Value = "Orientation(3.7)"
          Worksheets(nom_tourelle).Cells(9, 4).Value = "Designation(3.2)"
          Worksheets(nom_tourelle).Cells(9, 5).Value = "Orientation(3.2)"
          Worksheets(nom_tourelle).Cells(9, 6).Value = "Poste"
          Worksheets(nom_tourelle).Cells(9, 7).Value = "Tourelle"
          Worksheets(nom_tourelle).Cells(9, 8).Value = "famille"
          Worksheets(nom_tourelle).Cells(9, 9).Value = "Ordre"
          Worksheets(nom_tourelle).Cells(9, 10).Value = "Angle Tourelle"
          Worksheets(nom_tourelle).Cells(9, 11).Value = "Rayon Tourelle"
          Worksheets(nom_tourelle).Cells(9, 12).Value = "OTX"
          Worksheets(nom_tourelle).Cells(9, 13).Value = "OTY"
          Worksheets(nom_tourelle).Cells(9, 14).Value = "Auto Index"

          'creation de la boucle pour recupurer les informations souhaitees
          For n = 10 To 67
          Num_outil = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 2).Value
          Ordre = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 1).Value
          Taille = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 3).Value
          Angle_Tourelle = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 5).Value
          Rayon_Tourelle = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 6).Value
          OTX = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 7).Value
          OTY = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 8).Value

          designation = "--"
          Orientation = "--"
          designation3_7 = "--"
          Orientation3_7 = "--"
          tourelle = "--"
          famille = "--"
          Auto_Index = "--"

          'info ActCut 3.2
          For j = 2 To dernligne
          If Worksheets("donnees king").Cells(j, 1).Value = critere Then
          If Worksheets("donnees king").Cells(j, 3).Value = Num_outil Then
          designation = Worksheets("donnees king").Cells(j, 2).Value
          Orientation = Worksheets("donnees king").Cells(j, 4).Value
          tourelle = Worksheets("donnees king").Cells(j, 1).Value
          famille = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 4).Value
          Auto_Index = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 9).Value
          GoTo suite1
          End If
          End If
          Next j
          suite1:

          'affichage des resultats 3.2
          Worksheets(nom_tourelle).Cells(n, 4).Value = designation
          Worksheets(nom_tourelle).Cells(n, 9).Value = Ordre
          Worksheets(nom_tourelle).Cells(n, 6).Value = Num_outil
          Worksheets(nom_tourelle).Cells(n, 7).Value = tourelle
          Worksheets(nom_tourelle).Cells(n, 8).Value = famille
          Worksheets(nom_tourelle).Cells(n, 5).Value = Orientation
          Worksheets(nom_tourelle).Cells(n, 10).Value = Angle_Tourelle
          Worksheets(nom_tourelle).Cells(n, 11).Value = Rayon_Tourelle
          Worksheets(nom_tourelle).Cells(n, 12).Value = OTX
          Worksheets(nom_tourelle).Cells(n, 13).Value = OTY
          Worksheets(nom_tourelle).Cells(n, 14).Value = Auto_Index

          'info ActCut3.7
          For x = 1 To dernligne1
          If Worksheets("King-37").Cells(x, 1).Value = critere Then
          If Worksheets("King-37").Cells(x, 3).Value = Num_outil Then
          designation3_7 = Worksheets("King-37").Cells(x, 2).Value
          Orientation3_7 = Worksheets("King-37").Cells(x, 4).Value
          famille = Worksheets("Tourelle Physique VIPROS KING").Cells(n, 4).Value
          GoTo suite2
          End If
          End If
          Next x
          suite2:

          'affichage des resultats 3.7
          Worksheets(nom_tourelle).Cells(n, 2).Value = designation3_7
          Worksheets(nom_tourelle).Cells(n, 3).Value = Orientation3_7
          Worksheets(nom_tourelle).Cells(n, 8).Value = famille

          INSERER LA BARRE DE PROGRESSION ICI
          Next n
          End Sub

          -----------------------------------------------------------------------------------------------------

          j'ai creer un UserForm avec un code qui est le suivant :

          Sub ActionRépétitive() 'ta boucle où tu fais ce que tu veux...
          Dim Nbredefois, UnitéDeLongueur, i 'etc
          Nbredefois = 58
          UnitéDeLongueur = Int(Règle.Width / Nbredefois)
          For i = 1 To Nbredefois
          insertion (UnitéDeLongueur)
          Next i
          End Sub

          Sub insertion(UnitéDeLongueur)
          Curseur.Visible = False
          LongueurCurseur = Aperçus.Curseur.Width + UnitéDeLongueur
          Aperçus.Curseur.Width = LongueurCurseur
          r = DoEvents
          Curseur.Visible = True
          End Sub

          Mais malgré cela sa ne marche toujours pas

          Si quelqu'un aurai une idée se serai très gentille de la faire partager.
          0
          1. Bonjour

            jespere que ca va marcher

            Sub recherche(nom_tourelle As String)
            Dim R As Long
            Dim ProgMaxWidth As Long
            Dim LastRow As Long
            ProgMaxWidth = 215
            LastRow = 65000
            U_ProBarre.Show vbModeless
            Dernligne = Worksheets("donnees king").Range("A" & Rows.Count).End(xlUp).Row
            'dernligne = Worksheets("donnees king").Range("A65536").End(xlUp).Row
            Dernligne1 = Worksheets("King-37").Range("A" & Rows.Count).End(xlUp).Row
            'Dernligne1 = Worksheets("King-37").Range("A65536").End(xlUp).Row
            critere = Worksheets(nom_tourelle).Name

            'insertion des titres
            With Worksheets(nom_tourelle)
            .Cells(9, 2).Value = "Designation(3.7)"
            .Cells(9, 3).Value = "Orientation(3.7)"
            .Cells(9, 4).Value = "Designation(3.2)"
            .Cells(9, 5).Value = "Orientation(3.2)"
            .Cells(9, 6).Value = "Poste"
            .Cells(9, 7).Value = "Tourelle"
            .Cells(9, 8).Value = "famille"
            .Cells(9, 9).Value = "Ordre"
            .Cells(9, 10).Value = "Angle Tourelle"
            .Cells(9, 11).Value = "Rayon Tourelle"
            .Cells(9, 12).Value = "OTX"
            .Cells(9, 13).Value = "OTY"
            .Cells(9, 14).Value = "Auto Index"
            End With
            'creation de la boucle pour recupurer les informations souhaitees
            U_ProBarre.Show vbModeless
            For N = 10 To 67
            If N Mod 10 = 0 Then
            U_ProBarre.Label1.Width = CInt(N * ProgMaxWidth / LastRow)
            U_ProBarre.Label1.Caption = Format(N / LastRow, "0%")
            U_ProBarre.Repaint
            End If

            Num_outil = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 2).Value
            Ordre = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 1).Value
            Taille = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 3).Value
            Angle_Tourelle = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 5).Value
            Rayon_Tourelle = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 6).Value
            OTX = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 7).Value
            OTY = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 8).Value

            designation = "--"
            Orientation = "--"
            designation3_7 = "--"
            Orientation3_7 = "--"
            tourelle = "--"
            famille = "--"
            Auto_Index = "--"

            'info ActCut 3.2
            For j = 2 To Dernligne
            If Worksheets("donnees king").Cells(j, 1).Value = critere Then
            If Worksheets("donnees king").Cells(j, 3).Value = Num_outil Then
            designation = Worksheets("donnees king").Cells(j, 2).Value
            Orientation = Worksheets("donnees king").Cells(j, 4).Value
            tourelle = Worksheets("donnees king").Cells(j, 1).Value
            famille = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 4).Value
            Auto_Index = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 9).Value
            GoTo suite1
            End If
            End If
            Next j
            suite1:

            'affichage des resultats 3.2

            Worksheets(nom_tourelle).Cells(N, 4).Value = designation
            Worksheets(nom_tourelle).Cells(N, 9).Value = Ordre
            Worksheets(nom_tourelle).Cells(N, 6).Value = Num_outil
            Worksheets(nom_tourelle).Cells(N, 7).Value = tourelle
            Worksheets(nom_tourelle).Cells(N, 8).Value = famille
            Worksheets(nom_tourelle).Cells(N, 5).Value = Orientation
            Worksheets(nom_tourelle).Cells(N, 10).Value = Angle_Tourelle
            Worksheets(nom_tourelle).Cells(N, 11).Value = Rayon_Tourelle
            Worksheets(nom_tourelle).Cells(N, 12).Value = OTX
            Worksheets(nom_tourelle).Cells(N, 13).Value = OTY
            Worksheets(nom_tourelle).Cells(N, 14).Value = Auto_Index

            'info ActCut3.7
            For x = 1 To Dernligne1
            If Worksheets("King-37").Cells(x, 1).Value = critere Then
            If Worksheets("King-37").Cells(x, 3).Value = Num_outil Then
            designation3_7 = Worksheets("King-37").Cells(x, 2).Value
            Orientation3_7 = Worksheets("King-37").Cells(x, 4).Value
            famille = Worksheets("Tourelle Physique VIPROS KING").Cells(N, 4).Value
            GoTo suite2
            End If
            End If
            Next x
            suite2:

            'affichage des resultats 3.7
            With Worksheets(nom_tourelle)
            .Cells(N, 2).Value = designation3_7
            .Cells(N, 3).Value = Orientation3_7
            .Cells(N, 8).Value = famille
            End With
            ' INSERER LA BARRE DE PROGRESSION ICI
            Next N
            Unload U_ProBarre
            End Sub

            A+

            Maurice
            0
            1. Bonjour Maurice,
              Ton code affiche bien la barre de progression mais celle ci n'evolue pas avec le deroulement de ma macro...
              La progression ne marche pas... :(
              0
              1. bonjour

                donne au moins ton fichier pour voir car la je ses pas
                A+
                Maurice
                0
                1. http://cjoint.com/data/0Ckpusk4Tsf.htm

                  Bonjour Maurice
                  Voila mon fichier Maurice...
                  Quand tu clique sur le bouton importer je voudrai qu'une barre de progression informe l'utilisateur du déroulement de la macro.
                  Rq: dans mon fichier la macro s'exécute rapidement car ce document et loin d'être complet.

                  Si tu a une solution se serai sympa de me venir en aide.
                  Merci Maurice
                  0
              2. Contributeur
                Bonjour,

                plutôt que de boucler sur toutes les lignes pour rechercher ton critère, regarde directement s'il est présent en colonne A avec .find.
                Et ajoute au début Application.ScreenUpdating = False
                Tout accélèrera ton code et la barre de progression sera peut-être inutile.
                Je n'ai pas pu tester, je ne sais pas comment faire marcher ton classeur.
                ex :
                Sub recherche(nom_tourelle As String)
                    Application.ScreenUpdating = False
                    dernligne = Worksheets("donnees king").Range("A65536").End(xlUp).Row
                    critere = Worksheets(nom_tourelle).Name
                    Worksheets(nom_tourelle).Cells(9, 4).Value = "designation(3.2)"
                    Worksheets(nom_tourelle).Cells(9, 9).Value = "Orientation"
                    Worksheets(nom_tourelle).Cells(9, 6).Value = "poste"
                    Worksheets(nom_tourelle).Cells(9, 7).Value = "Tourelle"
                    Worksheets(nom_tourelle).Cells(9, 8).Value = "famille"
                    Worksheets(nom_tourelle).Cells(9, 5).Value = "Ordre"
                    Worksheets(nom_tourelle).Cells(9, 10).Value = "Angle Tourelle"
                    Worksheets(nom_tourelle).Cells(9, 11).Value = "Rayon Tourelle"
                    Worksheets(nom_tourelle).Cells(9, 12).Value = "OTX"
                    Worksheets(nom_tourelle).Cells(9, 13).Value = "OTY"
                    Worksheets(nom_tourelle).Cells(9, 14).Value = "Auto Index"
                
                    For n = 10 To 67
                        Num_outil = Worksheets("Tourelle Tout VIPROS KING").Cells(n, 2).Value
                        Ordre = Worksheets("Tourelle Tout VIPROS KING").Cells(n, 1).Value
                        Taille = Worksheets("Tourelle Tout VIPROS KING").Cells(n, 3).Value
                        Angle_Tourelle = Worksheets("Tourelle Tout VIPROS KING").Cells(n, 5).Value
                        Rayon_Tourelle = Worksheets("Tourelle Tout VIPROS KING").Cells(n, 6).Value
                        OTX = Worksheets("Tourelle Tout VIPROS KING").Cells(n, 7).Value
                        OTY = Worksheets("Tourelle Tout VIPROS KING").Cells(n, 8).Value
                        Auto_Index = Worksheets("Tourelle Tout VIPROS KING").Cells(n, 9).Value
                
                        designation = "--"
                        Orientation = "--"
                        Tourelle = "--"
                        famille = "--"
                        Set c = Worksheets("donnees king").Columns(1).Find(critere, LookIn:=xlValues, lookat:=xlWhole)
                        If Not c Is Nothing Then
                            Worksheets(nom_tourelle).Cells(n, 4).Value = designation
                            Worksheets(nom_tourelle).Cells(n, 5).Value = Ordre
                            Worksheets(nom_tourelle).Cells(n, 6).Value = Num_outil
                            Worksheets(nom_tourelle).Cells(n, 7).Value = Tourelle
                            Worksheets(nom_tourelle).Cells(n, 8).Value = famille
                            Worksheets(nom_tourelle).Cells(n, 9).Value = Orientation
                            Worksheets(nom_tourelle).Cells(n, 10).Value = Angle_Tourelle
                            Worksheets(nom_tourelle).Cells(n, 11).Value = Rayon_Tourelle
                            Worksheets(nom_tourelle).Cells(n, 12).Value = OTX
                            Worksheets(nom_tourelle).Cells(n, 13).Value = OTY
                            Worksheets(nom_tourelle).Cells(n, 14).Value = Auto_Index
                        Else
                            MsgBox "Erreur : critère " & critère & " non trouvé."
                        End If
                    Next n
                End Sub

                J'ai pris en exemple la feuille vipros_king

                eric
                0
                1. Bonjour

                  Voila voir le Module M_Modif

                  http://cjoint.com/?3CkqSV7QycP

                  A+
                  Maurice
                  0
                  1. Merci Maurice
                    J'ai adapté ton fichier et sa fonctionne parfaitement...
                    Merci encore
                    0
                2. Contributeur
                  Bonjour,

                  et ma réponse du 8 mars 2014 à 19:30, tu n'en as rien à f... ?
                  Ok, j'éviterai tes questions à l'avenir

                  eric
                  0
                  1. Il ne faut pas réagir comme ça eriiic ' ton aide m'a été bien précieuse crois moi et je t'en suis très reconnaissant.D'ailleurs ton outils de recherche d'onglet a immediatment intégrer mon travail.le document que j'ai mis sur le forum n'est pas mon travail final mais juste un appercu ...j'ai fais cela car je ne veut pas mettre sut la toile mon projet qui est rattaché a une entreprise ...
                    J'espère que tu pourra comprendre eriiic
                    0
                  2. Contributeur
                    Oui, et bien la moindre des politesses est de répondre aux interventions de ceux qui prennent du temps pour toi.
                    Ca n'est pas évident pour tout le monde apparemment.
                    Et je te parle de ce fil là, pas du précédent.
                    eric
                    0
                  3. @eriiicJe suis DSL eriiic ' j'ai commis une erreur' je le reconnais et je m'en excuse.
                    Ceci dit ' tu pourrai te montrer un peu plud réceptif tout de même. Tu crois pas?
                    0
                  4. Contributeur
                    Réceptif, c'est peut-être à toi de l'être.
                    Toujours aucun retour sur ma proposition d'accélérer ton programme et de voir ensuite si une barre de progression est toujours nécessaire.
                    Tu n'as même pas testé le code proposé, je parle dans le vent et j'ai bossé pour rien.

                    eric
                    0
                  5. afin de répondre a ton message je tiens a te signaler que j'ai penser a utiliser la fonction Application.ScreenUpdating = False comme tu me le propose dans ton message du 8 mars. Je comprend que tu me fasse une remarque dans la mesure ou je ne t'ai pas tenu informé et que tu prends de ton temps pour me venir en aide (d'ailleurs je t'ai présenté mes excuses) mais je veux pas qu'on s'éternise la dessus.

                    Voila la preuve que j'ai bien utilisé la fonction Application.ScreenUpdating = False

                    Sub creerFeuilles()

                    'suppression preliminaire avant creation des onglets
                    Application.ScreenUpdating = False

                    Dim curWsht As Worksheet
                    Application.DisplayAlerts = False
                    For Each curWsht In ThisWorkbook.Sheets
                    If curWsht.Name <> "Paramétrage" And curWsht.Name <> "Vipros_King" ............
                    0