XL 2013 rapidité d une macro

bertilemeusien

XLDnaute Nouveau
Bonjour,
Je ne connais pas le langage VISUAL BASIC en lui-même. Je fais des petites macros que je regroupe ensuite.
Je collectionne des jouets et pour savoir ceux qui me manquent j’ai créé ce tableau EXCEL.
Cette macro, LATOTALE dure plus de 9 minutes. Ma version d’EXCEL est de 2013 !
Je voulais savoir si cela est dû à mon PC ou à la version d’EXCEL ?
J’accepte, bien sur, tout autre macro !

L’onglet JOUET est la liste de tous les jouets possibles et devient JOUET à trouver après la macro TOTJOUET.
L’onglet BPZ est la liste de tous les jouets possibles et devient à trouver après la macro LATOTALE.
Il y a des séries que je ne collectionne pas : toutes celles où il y a NON dans la colonne A
Il y a également ses séries qui sont complètes : toutes celles où il y a 0 dans la colonne G

Et pour la liste des séries encore à compléter, je crée une nouvelle feuille (jouet à trouver, BPZ à trouver) où je supprime toutes les lignes «VIDES ».

Ensuite je trie les résultats en fonction du nombre de la colonne G de la feuille JOUET à trouver ou à trouver.

Voila j’espère avoir été assez clair dans mes explications et souhait ! Merci pour votre aide
 

Pièces jointes

  • 16 - recensement total des séries EN 2018 - 2019.xlsm
    335 KB · Affichages: 6
Solution
Bonsoir,
En PJ une V2.
1- J'ai supprimé toutes les macros devenues inutiles.
2- J'ai accroché les macros aux boutons dans Jouets et BPZ.
3- J'ai mis des commentaires dans la macro
Pour simplifier, j'ai fait de la macro initiale une macro paramétrée avec feuille de départ et feuille d'arrivée, ce qui donne :
VB:
Sub UpdateAtrouver()        ' On lance la mise à jour de la feuille "à trouver" à partir de la feuille "BPZ"
    UpdateSheet "BPZ", "à trouver"
End Sub

Sub UpdateJouetAtrouver()             ' On lance la mise à jour de la feuille "JOUET à trouver" à partir de la feuille "JOUET"
    UpdateSheet "JOUET", "JOUET à trouver"
End Sub

Sub UpdateSheet(SheetFrom, SheetTo)
    Macro initiale qui utilise SheetFrom et SheetTo pour...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Bertilemeusien, Thunder,
Je n'ai pas compris toutes les manips à faire.
Alors un simple essai en PJ avec seulement :
1- J'efface toute la feuille "à trouver" ( texte, couleurs, MFC ... )
2- Je remplis la feuille "à trouver" avec toutes les lignes de BPZ dont la colonne A est non vide, ne contient pas Non, et la quantité à trouver est non nulle.
Sur mon vieux PC avec XL2007 cela prends 120ms
Donc à partir de là vous pourriez continuer sur cette base.

La macro est automatique lorsqu'on sélectionne la feuille "à trouver"
 

Pièces jointes

  • 16 - recensement total des séries EN 2018 - 2019.xlsm
    344.7 KB · Affichages: 2
Dernière édition:

bertilemeusien

XLDnaute Nouveau
Bonsoir,
Super la rapidité mais comment vous faites pour que la macro se lance automatiquement. Je veux faire la même pour les jouets! Pour moi, cela serait plusa facile avec un bouton de lancement sur la feuille BPZ!
Mais je confirme que la rapidité est supersonique!!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
En PJ une V2.
1- J'ai supprimé toutes les macros devenues inutiles.
2- J'ai accroché les macros aux boutons dans Jouets et BPZ.
3- J'ai mis des commentaires dans la macro
Pour simplifier, j'ai fait de la macro initiale une macro paramétrée avec feuille de départ et feuille d'arrivée, ce qui donne :
VB:
Sub UpdateAtrouver()        ' On lance la mise à jour de la feuille "à trouver" à partir de la feuille "BPZ"
    UpdateSheet "BPZ", "à trouver"
End Sub

Sub UpdateJouetAtrouver()             ' On lance la mise à jour de la feuille "JOUET à trouver" à partir de la feuille "JOUET"
    UpdateSheet "JOUET", "JOUET à trouver"
End Sub

Sub UpdateSheet(SheetFrom, SheetTo)
    Macro initiale qui utilise SheetFrom et SheetTo pour travailler
End Sub

Votre problème, je pense, est que les feuilles BPZ et JOUET sont trop riches en terme d'encadrement, couleurs, MFC .... et que la suppression de toutes les lignes vides n'aide pas.
A tester, faites un retour si bug ou évolutions demandées.

comment vous faites pour que la macro se lance automatiquement.
Il existe certaines macro dites événementielles qui se déclenchent automatiquement sur un événement comme clic sur cellule, modification de cellules, activation page. Ces macros doivent avoir un nom spécifique et être dans la feuille concernée.
Pour plus de détails :
 

Pièces jointes

  • 16 - recensement total des séries EN 2018 - 2019 (V2).xlsm
    307.8 KB · Affichages: 3

bertilemeusien

XLDnaute Nouveau
Bonsoir,
En PJ une V2.
1- J'ai supprimé toutes les macros devenues inutiles.
2- J'ai accroché les macros aux boutons dans Jouets et BPZ.
3- J'ai mis des commentaires dans la macro
Pour simplifier, j'ai fait de la macro initiale une macro paramétrée avec feuille de départ et feuille d'arrivée, ce qui donne :
VB:
Sub UpdateAtrouver()        ' On lance la mise à jour de la feuille "à trouver" à partir de la feuille "BPZ"
    UpdateSheet "BPZ", "à trouver"
End Sub

Sub UpdateJouetAtrouver()             ' On lance la mise à jour de la feuille "JOUET à trouver" à partir de la feuille "JOUET"
    UpdateSheet "JOUET", "JOUET à trouver"
End Sub

Sub UpdateSheet(SheetFrom, SheetTo)
    Macro initiale qui utilise SheetFrom et SheetTo pour travailler
End Sub

Votre problème, je pense, est que les feuilles BPZ et JOUET sont trop riches en terme d'encadrement, couleurs, MFC .... et que la suppression de toutes les lignes vides n'aide pas.
A tester, faites un retour si bug ou évolutions demandées.


Il existe certaines macro dites événementielles qui se déclenchent automatiquement sur un événement comme clic sur cellule, modification de cellules, activation page. Ces macros doivent avoir un nom spécifique et être dans la feuille concernée.
Pour plus de détails :
Merci beaucoup! cela marche à merveille!!
 

Discussions similaires

Réponses
3
Affichages
309
Réponses
6
Affichages
238

Statistiques des forums

Discussions
315 089
Messages
2 116 099
Membres
112 661
dernier inscrit
ceucri