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 :

Problème de lenteur de calcul avec une macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut Problème de lenteur de calcul avec une macro
    Bonjour/Bonsoir mes amis

    Voila j'ai un fichier qui fonctionne parfaitement par rapport à ce que je désire à part un problème de fonctionnement que je n’arrive pas à résoudre.
    En effet quand je suis sur la feuille (Ajout Opération) et que je sélectionne un produit dans le Combox puis je reclique une fois dedans (Combox) pour soit disons effacer l’article lettre par lettre par la touche retour du clavier ce dernier met une légère lenteur qui me gêne, je sais c'est du aux macros qui sont dedans car il procède au certains calculs.
    Donc ma question est : y a-t-il un moyen de modifier quelque chose dans les macros afin de rendre le calcul plus rapide sans bien sur toucher à la base du fichier.

    Je joins le fichier

    Merci par avance à vous tous

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    Bonjour,

    https://www.developpez.net/forums/d8...s-discussions/

    Quand tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    cela se termine part:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating =true
    je ne vois pas spécialement de lenteur de mon coté

  3. #3
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    bonjour,

    une piste peut-être évité de faire courir Excel sur les 1048576 cellules

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Choix = Application.Transpose(F.Range("A4:A" & F.[A1048576].End(xlUp).Row))
    en (edité)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Choix = Application.Transpose(F.Range("A4:A" & F.Range("A" & Application.Rows.Count).End(xlUp).Row))
    et ainsi de suite dans tout le code
    et comme la dis Nicolas JACQUIN a la fin de ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = True

  4. #4
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut
    Merci Nicolas je tacherai de modifier cela

    Merci Tony pour la réponse j'ai essayer le deuxième code que tu m'a donné mais VBE me renvoi une erreur de compilation puis il s’arrête sur le point de ton code ici : "A4:A".Range ....

  5. #5
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    je les modifié et édité

    tu pourrais aussi enlevé le filtre la fin du code
    nom de la feuille à vérifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ......
    Worksheets("BD_Produits").AutoFilterMode = False
    End Sub

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut
    Merci Tony donc au final ça va être cela si je me trompe pas

    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
    Sub AlimChoix()
    'Déterminer la feuille source qui va alimenter les le Combobox (Liste Des Produits)
     Set F = Sheets("Liste_Des_Produits")
    'Déterminer la feuille où le Combobox se trouve
     Set F2 = Sheets("Ajout_Opération")
    'La plage débute de la ligne 4 jusqu'à la dernière ligne
     If F.Range("A" & Application.Rows.Count) > 4 Then
    'Variable qui transpose les noms dans le Combobox
       Choix = Application.Transpose(F.Range("A4:A" & F.Range("A" & Application.Rows.Count).End(xlUp).Row))
       F2.ComboBox1.List = Choix
    'Assosier le nom dans le Combobox avec la variable Choix pour le filtrage
     Else
       ReDim Choix(1 To 1)
        If F.Range("A" & Application.Rows.Count) = 4 Then
          F2.ComboBox1.Clear
          F2.ComboBox1.AddItem F.[A4]: Choix(1) = F.[A4]
        End If
      End If
    End Sub

  7. #7
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    Oui parfait regarde aussi pour enlevé le filtre a la fin de ton script

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Algérie

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2015
    Messages : 86
    Par défaut
    La je n'arrive pas à suivre quel filtre et surtout comment l'enlever

  9. #9
    Membre très actif Avatar de tony76
    Homme Profil pro
    Développeur pour le plaisir....
    Inscrit en
    Avril 2014
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur pour le plaisir....

    Informations forums :
    Inscription : Avril 2014
    Messages : 131
    Par défaut
    ici Module1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'Dans la feuille "BD_Produits" activer le filtre avancé avec le critère
    'indiqué dans le gestionnaire des noms
    Sheets("BD_Produits").Range("B2:I1000").AdvancedFilter Action:=xlFilterCopy, _
          CriteriaRange:=Sheets("Données").Range("G16:H17"), CopyToRange:=Range("B19:I19")
    ..........
    pour enlevé le filtre voir mon message du dessus

  10. #10
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ce n'est pas un AutoFilter qu'il utilise mais un AdvancedFilter muni du paramètre Export

    savoir l'utiliser, c'est ne plus savoir s'en passer

    http://philippetulliez.developpez.co...dvancedfilter/

Discussions similaires

  1. [XL-2013] Problème de changement de feuille avec une macro
    Par filsdepub dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2017, 14h55
  2. [LibreOffice][Texte] Problème d'insertion d'image avec une macro dans Writer
    Par sebaragorn dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 01/09/2016, 08h34
  3. Problèmes pour tracer des graphiques avec une macro
    Par Margoooot dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/08/2011, 17h19
  4. Réponses: 0
    Dernier message: 04/08/2008, 17h05
  5. Problème avec une macro faisant apel à un tableau Excell
    Par valouche dans le forum Macros et VBA Excel
    Réponses: 52
    Dernier message: 19/06/2007, 12h38

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