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. 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
  2. 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
  3. 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

      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. 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

        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. 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. Re
            pour mettre la barre il faut la mettre dans une boucle

            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. Bonjour

                voila un model de barre

                http://cjoint.com/?3BCqMXV02L2

                A+

                Maurice
                0