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

Excel Discussion :

Optimisation macro car trop lente [XL-2007]


Sujet :

Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Optimisation macro car trop lente
    Bonjour à tous.

    Je suis un novice en excel. ci-joint mes fichiers.

    J'ai reçu l'aide d'une personne qui m'a rédigé cette macro, grâce à mes comptes projets dans mon fichier EXCEL, la macro va chercher dans tout mon répertoire le fichier PDF qui correspond au compte projet pour en faire un lien hypertexte.

    Pouvez-vous m'aider à améliorer cette macro car super lent.

    et j'aimerai aussi qu'elle ne redémarre pas à chaque ouverture du fichier, qu'elle reste figé sauf si je clique sur le bouton pour la mise à jour.

    Merci pour votre aide.

    Cordialement.

    VOICI LA MACRO :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Private ListeDoss() As String
    Dim fichier As String
    Dim k As Integer
     
    Sub ChercheDoss(Chemin1 As String)
    Dim Ligne As Long, Nom As String
        Ligne = Range("N65536").End(xlUp).Row + 1
        On Error GoTo Err1
        Nom = Dir(Chemin1 & "\" & fichier & "*pdf")
        If Nom <> "" Then
            If Range("P" & CStr(k)).Value = Empty Then
                Range("P" & CStr(k)).Value = Nom
                ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(k, 16), Address:=Chemin1 & "\" & Nom, TextToDisplay:=Nom
            End If
        End If
    Err1:
     
    End Sub
     
    Sub ChercheTout()
    Dim Chemin As String, i As Long
     
    Range("P3:P65536").Clear
     
    For k = 3 To 5000
        fichier = Range("N" + CStr(k)).Value
     
        If fichier = Empty Then
            MsgBox "SOURIEZ-vous êtes FILMES, Bonne Journée !!! Merci"
            Exit For
        End If
     
        Chemin = "I:\IPM\IPMM\IPM-MR\DMR ER GP S\Courrier"
        LanceListe Chemin
        For i = 1 To UBound(ListeDoss)
            ChercheDoss ListeDoss(i)
        Next i
    Next k
    End Sub
     
    Sub ListeArborescence(Dossier As String)
    Dim fs, sousdoss
        Set fs = CreateObject("Scripting.FileSystemObject")
        On Error Resume Next
        For Each sousdoss In fs.getfolder(Dossier).subfolders
            ReDim Preserve ListeDoss(1 To UBound(ListeDoss) + 1)
            ListeDoss(UBound(ListeDoss)) = sousdoss.Path
            ListeArborescence sousdoss.Path
        Next sousdoss
        On Error GoTo 0
        Set fs = Nothing
    End Sub
     
    Sub LanceListe(Dossier As String)
        ReDim ListeDoss(1 To 1)
        ListeDoss(1) = Dossier
        ListeArborescence Dossier
    End Sub
     
     
    Private Sub Workbook_Open()
        Call ChercheTout
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 133
    Points : 83 972
    Points
    83 972
    Billets dans le blog
    15
    Par défaut


    Pouvez-vous m'aider à améliorer cette macro car super lent.
    Il serait plus judicieux de copier ici le code de la macro à améliorer (n'oubliez pas d'utiliser la balise # prévue à cet effet), car certains membres n'ouvrent pas les pièces jointes.

    Cordialement
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Suite à mon sujet voici la macro :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Private ListeDoss() As String
    Dim fichier As String
    Dim k As Integer
     
    Sub ChercheDoss(Chemin1 As String)
    Dim Ligne As Long, Nom As String
        Ligne = Range("N65536").End(xlUp).Row + 1
        On Error GoTo Err1
        Nom = Dir(Chemin1 & "\" & fichier & "*pdf")
        If Nom <> "" Then
            If Range("P" & CStr(k)).Value = Empty Then
                Range("P" & CStr(k)).Value = Nom
                ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(k, 16), Address:=Chemin1 & "\" & Nom, TextToDisplay:=Nom
            End If
        End If
    Err1:
     
    End Sub
     
    Sub ChercheTout()
    Dim Chemin As String, i As Long
     
    Range("P3:P65536").Clear
     
    For k = 3 To 5000
        fichier = Range("N" + CStr(k)).Value
     
        If fichier = Empty Then
            MsgBox "SOURIEZ-vous êtes FILMES, Bonne Journée !!! Merci"
            Exit For
        End If
     
        Chemin = "I:\IPM\IPMM\IPM-MR\DMR ER GP S\Courrier"
        LanceListe Chemin
        For i = 1 To UBound(ListeDoss)
            ChercheDoss ListeDoss(i)
        Next i
    Next k
    End Sub
     
    Sub ListeArborescence(Dossier As String)
    Dim fs, sousdoss
        Set fs = CreateObject("Scripting.FileSystemObject")
        On Error Resume Next
        For Each sousdoss In fs.getfolder(Dossier).subfolders
            ReDim Preserve ListeDoss(1 To UBound(ListeDoss) + 1)
            ListeDoss(UBound(ListeDoss)) = sousdoss.Path
            ListeArborescence sousdoss.Path
        Next sousdoss
        On Error GoTo 0
        Set fs = Nothing
    End Sub
     
    Sub LanceListe(Dossier As String)
        ReDim ListeDoss(1 To 1)
        ListeDoss(1) = Dossier
        ListeArborescence Dossier
    End Sub
     
     
    Private Sub Workbook_Open()
        Call ChercheTout
    End Sub

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    +1 avec milkoseck pour ce qui est de la non-ouverture des pièces jointes.

    Citation Envoyé par deton Voir le message
    et j'aimerai aussi qu'elle ne redémarre pas à chaque ouverture du fichier, qu'elle reste figé sauf si je clique sur le bouton pour la mise à jour.
    Ta macro doit sans doute être dans un évènement Workbook_Open du module Workbook de ton fichier dans ton gestionnaire de projet.

    Dans le gestionnaire de projet, tu insères un module pour ton fichier.
    Tu crées dedans une nouvelle macro, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub MonLink()
     
    End Sub
    Tu recopies dedans le contenu de ta macro Workbook_Open.
    Tu fais un clic droit dans ta barre d'outil d'accès rapide > Personnaliser la barre d'outil d'accès rapide > Catégorie = Macros
    Dans la liste, tu choisies la macro que tu viens de créer (MonLink dans mon exemple) > Ajouter pour le passer dans le liste de droite.
    Tu le sélectionnes dans la liste de droite > Bouton Modifier
    Tu lui choisis une icone qui te va bien.
    Tu valides tout ça à coup de bouton OK.

    A partir de là, tu pourras lancer ta macro avec ce bouton.

    N'oublie pas de supprimer la macro Workbook_Open si tu ne veux plus qu'elle se déclenche à l'ouverture.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    je suis un peu novice, qu'est ce que tu appelles "ta barre d'outil d'accès rapide > Personnaliser la barre d'outil d'accès rapide > Catégorie = Macros" ??? moi j'ai excel 2007.
    as tu une idée pour la macro qui est super lente
    merci

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par deton Voir le message
    je suis un peu novice, qu'est ce que tu appelles "ta barre d'outil d'accès rapide > Personnaliser la barre d'outil d'accès rapide > Catégorie = Macros" ??? moi j'ai excel 2007.
    as tu une idée pour la macro qui est super lente
    merci
    voici la macro :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Private ListeDoss() As String
    Dim fichier As String
    Dim k As Integer
     
    Sub ChercheDoss(Chemin1 As String)
    Dim Ligne As Long, Nom As String
        Ligne = Range("N65536").End(xlUp).Row + 1
        On Error GoTo Err1
        Nom = Dir(Chemin1 & "\" & fichier & "*pdf")
        If Nom <> "" Then
            If Range("P" & CStr(k)).Value = Empty Then
                Range("P" & CStr(k)).Value = Nom
                ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(k, 16), Address:=Chemin1 & "\" & Nom, TextToDisplay:=Nom
            End If
        End If
    Err1:
     
    End Sub
     
    Sub ChercheTout()
    Dim Chemin As String, i As Long
     
    Range("P3:P65536").Clear
     
    For k = 3 To 5000
        fichier = Range("N" + CStr(k)).Value
     
        If fichier = Empty Then
            MsgBox "SOURIEZ-vous êtes FILMES, Bonne Journée !!! Merci"
            Exit For
        End If
     
        Chemin = "I:\IPM\IPMM\IPM-MR\DMR ER GP S\Courrier"
        LanceListe Chemin
        For i = 1 To UBound(ListeDoss)
            ChercheDoss ListeDoss(i)
        Next i
    Next k
    End Sub
     
    Sub ListeArborescence(Dossier As String)
    Dim fs, sousdoss
        Set fs = CreateObject("Scripting.FileSystemObject")
        On Error Resume Next
        For Each sousdoss In fs.getfolder(Dossier).subfolders
            ReDim Preserve ListeDoss(1 To UBound(ListeDoss) + 1)
            ListeDoss(UBound(ListeDoss)) = sousdoss.Path
            ListeArborescence sousdoss.Path
        Next sousdoss
        On Error GoTo 0
        Set fs = Nothing
    End Sub
     
    Sub LanceListe(Dossier As String)
        ReDim ListeDoss(1 To 1)
        ListeDoss(1) = Dossier
        ListeArborescence Dossier
    End Sub
     
     
    Private Sub Workbook_Open()
        Call ChercheTout
    End Sub

  7. #7
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fichier = Range("N" + CStr(k)).Value
     
        If fichier = Empty Then
            MsgBox "SOURIEZ-vous êtes FILMES, Bonne Journée !!! Merci"
            Exit For
        End If
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par cerede2000 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    fichier = Range("N" + CStr(k)).Value
     
        If fichier = Empty Then
            MsgBox "SOURIEZ-vous êtes FILMES, Bonne Journée !!! Merci"
            Exit For
        End If

    Merci mais J'ai pas compri votre reponse

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par deton Voir le message
    je suis un peu novice, qu'est ce que tu appelles "ta barre d'outil d'accès rapide > Personnaliser la barre d'outil d'accès rapide > Catégorie = Macros" ??? moi j'ai excel 2007.
    En 2007, ça correspond à une barre d'outils personnalisée.
    de mémoire (ça fait plusieurs années que je n'ai pas touché à un 2007), tu fais un clic droit sur les barres d'outils et tu peux ajouter une fonction à une barre d'outil existante ou créer une nouvelle barre d'outils. Quelle que soit ton choix, tu places dans la barre d'outils une nouvelle fonction en prenant comme catégorie les macros. Tu crées bouton lié à la macro ChercheTout.

    as tu une idée pour la macro qui est super lente
    J'ai quelques idées.
    Déjà, je pense que le getfolder n'est pas judicieux. Une boucle sur Dir(Chemin,vbDirectory) serait sans doute plus léger.

    Mais surtout, le développeur s'est amusé à créer tout un tas de macro qui s'enchainent sans cohérence entre elles. Donc, à chaque tour de la boucle, il est obligé de réinventer la roue, par exemple en cherchant la dernière ligne utilisée avec un Range("N65536").End(xlUp).Row alors que s'il avait fait ça en une seule macro, il aurait pu le gérer en incrémentant une variable.
    A mon avis, concaténer tes quatre macros (je ne compte pas Workbook_Open qui ne fait que lancer la macro racine), pourrait permettre de faire un ensemble plus cohérent et sans doute plus rapide.

    Et pour répondre à la question que tu t’apprêtes à poser, je réponds tout de suite : non, ce n'est pas moi qui vais m'y coller.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Menhir Voir le message
    En 2007, ça correspond à une barre d'outils personnalisée.
    de mémoire (ça fait plusieurs années que je n'ai pas touché à un 2007), tu fais un clic droit sur les barres d'outils et tu peux ajouter une fonction à une barre d'outil existante ou créer une nouvelle barre d'outils. Quelle que soit ton choix, tu places dans la barre d'outils une nouvelle fonction en prenant comme catégorie les macros. Tu crées bouton lié à la macro ChercheTout.


    J'ai quelques idées.
    Déjà, je pense que le getfolder n'est pas judicieux. Une boucle sur Dir(Chemin,vbDirectory) serait sans doute plus léger.

    Mais surtout, le développeur s'est amusé à créer tout un tas de macro qui s'enchainent sans cohérence entre elles. Donc, à chaque tour de la boucle, il est obligé de réinventer la roue, par exemple en cherchant la dernière ligne utilisée avec un Range("N65536").End(xlUp).Row alors que s'il avait fait ça en une seule macro, il aurait pu le gérer en incrémentant une variable.
    A mon avis, concaténer tes quatre macros (je ne compte pas Workbook_Open qui ne fait que lancer la macro racine), pourrait permettre de faire un ensemble plus cohérent et sans doute plus rapide.

    Et pour répondre à la question que tu t’apprêtes à poser, je réponds tout de suite : non, ce n'est pas moi qui vais m'y coller.

    En macro je ne connais pas grand chose mais je viens sur ce forum pour obtenir de l'aide.
    Merci pour ta reponse.

  11. #11
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par deton Voir le message
    je viens sur ce forum pour obtenir de l'aide.
    Et de l'aide t'a été fournie.

    Cependant, tu dois comprendre que je préfère passer ma soirée à m'occuper de ma fille plutôt que de la passer à réécrire du code pour une personne qui m'aura oublié moins de 10 min après avoir obtenu ce qu'elle souhaite.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Et de l'aide t'a été fournie.

    Cependant, tu dois comprendre que je préfère passer ma soirée à m'occuper de ma fille plutôt que de la passer à réécrire du code pour une personne qui m'aura oublié moins de 10 min après avoir obtenu ce qu'elle souhaite.
    Ecoute, je cherche juste de l'aide, si tu ne peux pas c'est pas une obligation.
    il y a peut être d'autres qui peuvent.

    Merci à toi.

    Cordialement,

  13. #13
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Le problème de lenteur, c'est l'utilisation de FileSystemObject qui est notoirement très lent.

    J'ai reçu l'aide d'une personne qui m'a rédigé cette macro, grâce à mes comptes projets dans mon fichier EXCEL, la macro va chercher dans tout mon répertoire le fichier PDF qui correspond au compte projet pour en faire un lien hypertexte.

    Pouvez-vous m'aider à améliorer cette macro car super lent.
    C'est à l'auteur d'assurer le Service après-vente.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  14. #14
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Citation Envoyé par clementmarcotte Voir le message
    Le problème de lenteur, c'est l'utilisation de FileSystemObject qui est notoirement très lent.
    + 100
    Lent, certes, mais également lourd et, "cerise sur le gâteau", inaccessible sur certaines machines (par décision de leur propriétaire).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  15. #15
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Dans ton code, il y a ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Call ChercheTout
    End Sub
    Efface ça et mets un rectangle sur ta feuille (menu Insertion > Formes)
    Clique droit sur ce rectangle et choisit "Affecter une macro"
    Choisis ChercheTout

    Donc, quand tu cliqueras le bouton, ça va appeler cette macro qui semble être le départ...

    Pour accélérer un peu, tu pourrais changer cette macro de cette façon
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub ChercheTout()
        Dim Chemin As String, i As Long
     
        Application.ScreenUpdating = False  'l'affichage sera gelé durant la macro
        Application.Calculation = xlCalculationManual   'on se met en mode calcul manuel pour accélérer s'il y a des formules
     
        Range("P3:P65536").Clear
     
        For k = 3 To 5000
            fichier = Range("N" + CStr(k)).Value
     
            If fichier = Empty Then
                MsgBox "SOURIEZ-vous êtes FILMES, Bonne Journée !!! Merci"
                Exit For
            End If
     
            Chemin = "I:\IPM\IPMM\IPM-MR\DMR ER GP S\Courrier"
            LanceListe Chemin
            For i = 1 To UBound(ListeDoss)
                ChercheDoss ListeDoss(i)
            Next i
        Next k
     
    'On remet le tout par défaut
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
    End Sub
    MPi²

  16. #16
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    Merci infiniment pour ton aide.

    Excellente journée à toi

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

Discussions similaires

  1. Macro RechercheV trop lente
    Par legenuis dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/12/2011, 17h06
  2. Optimisation de requêtes trop lentes..
    Par Nevrosl dans le forum Requêtes
    Réponses: 5
    Dernier message: 11/03/2010, 13h38
  3. Besoin d'optimiser un explorateur d'images trop lent
    Par josh38 dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 14/09/2008, 17h01
  4. Requête trop lente, comment l'optimiser?
    Par getz85 dans le forum Langage SQL
    Réponses: 19
    Dernier message: 29/01/2008, 13h40
  5. [VBA-E] Saturation de la mémoire car trop de macros activées
    Par MrYoYo dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 02/12/2005, 19h01

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