VBA rapide ou non ???
Résolu/Fermé
wire less
Messages postés
230
Date d'inscription
lundi 5 octobre 2009
Statut
Membre
Dernière intervention
29 août 2018
-
Modifié par pijaku le 23/01/2015 à 07:58
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 23 janv. 2015 à 12:20
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 23 janv. 2015 à 12:20
A voir également:
- VBA rapide ou non ???
- Acces rapide - Guide
- Copie rapide - Télécharger - Gestion de fichiers
- Telechargement rapide - Télécharger - Téléchargement & Transfert
- Ajout rapide snap - Forum Snapchat
- Incompatibilité de type vba ✓ - Forum Programmation
2 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
Modifié par eriiic le 22/01/2015 à 12:43
Modifié par eriiic le 22/01/2015 à 12:43
Bonjoiur,
C'est plus rapide la 2nde fois car ce qui est déjà fait n'est plus à faire.
Cette version sera plus rapide dans certains cas :
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
C'est plus rapide la 2nde fois car ce qui est déjà fait n'est plus à faire.
Cette version sera plus rapide dans certains cas :
Sub Apostrophe() Dim cell As Range Application.ScreenUpdating = False For Each cell In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, xlTextValues) If cell.PrefixCharacter <> "" Then cell.Formula = cell.Formula End If Next cell End Sub
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
Modifié par pijaku le 23/01/2015 à 08:24
Modifié par pijaku le 23/01/2015 à 08:24
Bonjour,
Mes meilleurs voeux pour 2015.
Pour compléter la réponse d'Eriiic (salutations, comment va? je te sens un peu tendu en ce moment, non?), VBA n'est pas rapide. Ca c'est un fait acquis, tout le monde le sait.
Il existe néanmoins des "astuces" pour accélérer l'exécution d'une fonction.
La première Eriiic te l'a donnée : désactiver le rafraichissement de l'écran :
Une deuxième piste, également évoquée par Eriiic, consiste à ne pas agir directement sur les cellules (Ecrire dans une cellule est très gourmand). Il te faut à ce moment connaitre un minimum de choses sur les variables tableaux.
Le principe :
- stocker les données de ta feuille dans une variable tableau,
- modifier les données dans cette variable,
- restituer les données dans la feuille.
De plus, tu dis : bien que je ne sois qu'au début de ma macro et que je dois encore implémenter des fonction
Je te recommande donc fortement d'aller te renseigner sur ce type de variable. Si tu as d'autres traitements à réaliser, pour accélérer la procédure, il ne faut pas boucler 15 fois sur les données pour faire 15 traitements, mais boucler une fois et appliquer les 15 traitements avant restitution...
Bonne continuation.
🎼 Cordialement,
Franck 🎶
Mes meilleurs voeux pour 2015.
Pour compléter la réponse d'Eriiic (salutations, comment va? je te sens un peu tendu en ce moment, non?), VBA n'est pas rapide. Ca c'est un fait acquis, tout le monde le sait.
Il existe néanmoins des "astuces" pour accélérer l'exécution d'une fonction.
La première Eriiic te l'a donnée : désactiver le rafraichissement de l'écran :
Application.ScreenUpdating = False
Une deuxième piste, également évoquée par Eriiic, consiste à ne pas agir directement sur les cellules (Ecrire dans une cellule est très gourmand). Il te faut à ce moment connaitre un minimum de choses sur les variables tableaux.
Le principe :
- stocker les données de ta feuille dans une variable tableau,
- modifier les données dans cette variable,
- restituer les données dans la feuille.
De plus, tu dis : bien que je ne sois qu'au début de ma macro et que je dois encore implémenter des fonction
Je te recommande donc fortement d'aller te renseigner sur ce type de variable. Si tu as d'autres traitements à réaliser, pour accélérer la procédure, il ne faut pas boucler 15 fois sur les données pour faire 15 traitements, mais boucler une fois et appliquer les 15 traitements avant restitution...
Bonne continuation.
🎼 Cordialement,
Franck 🎶
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
23 janv. 2015 à 12:20
23 janv. 2015 à 12:20
Salut pijaku,
Un post de 2 lignes avec 2 questions courtes et une seule réponse c'est clair que ça désespère...
Bonne journée :-)
eric
Un post de 2 lignes avec 2 questions courtes et une seule réponse c'est clair que ça désespère...
Bonne journée :-)
eric
22 janv. 2015 à 14:28
"C'est plus rapide la 2nde fois car ce qui est déjà fait n'est plus à faire. "
:-/ Malheureusement c'est pas si simple !
Lorsque j'exécute la macro depuis mon bouton de commande, je voie en temps réel les lignes de mon tableau Excel se mettre à jour.
J'appuie sur "Escape" , je vais dans le déboguer VBA et je relance le scripte ... et VRAOUM ... l'exécution se fini quasiment instantanément ! (au lieu d'une minute si je ne fait rien)
22 janv. 2015 à 16:09
Et as-tu des formules utilisant les cellules appelées à être modifiées ?
22 janv. 2015 à 16:50
C'est effectivement plus rapide. Mais je n'arrive pas à comprendre pourquoi le fait d'interrompre le script puis de le relancer le rend plus rapide !!
Bon, sinon, 1 minute c'est pas la mort (bien que je ne sois qu'au début de ma macro et que je dois encore implémenter des fonction)
thx
22 janv. 2015 à 18:35
Ecrire dans une cellule est très gourmand et là ce n'est fait que si c'est nécessaire.
Maintenant tu peux encore réduire en restreignant à la plage où tu es susceptible de rencontrer ces '.
Sinon ne répond aux questions que si tu veux...
eric