Améliorer la vitesse de ma macro
Résolu
uly2562
Messages postés
70
Date d'inscription
Statut
Membre
Dernière intervention
-
uly2562 Messages postés 70 Date d'inscription Statut Membre Dernière intervention -
uly2562 Messages postés 70 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Améliorer la vitesse de ma macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Vitesse processeur - Guide
- Test vitesse pc - Guide
- Augmenter vitesse pc windows 10 - Guide
- Test vitesse ssd - Guide
5 réponses
Bonjour
Au lieu de travailler dans ta feuille avec des Range(..) ou des Cells( ...), il te faut 1. transférer ta plage à traiter dans un tableau par exemple
Dim TF
With Sheets(F)
TF = .Range(.Cells(lideb, codebF), .Cells(lifinF, cofinF))
End With
2. à la fin du traitement, tu revoies ton tableau dans ta plage
With Sheets(F)
.Cells(lideb, codebF).Resize(nbli, nbco) = TF
End With
Bon courage
Au lieu de travailler dans ta feuille avec des Range(..) ou des Cells( ...), il te faut 1. transférer ta plage à traiter dans un tableau par exemple
Dim TF
With Sheets(F)
TF = .Range(.Cells(lideb, codebF), .Cells(lifinF, cofinF))
End With
2. à la fin du traitement, tu revoies ton tableau dans ta plage
With Sheets(F)
.Cells(lideb, codebF).Resize(nbli, nbco) = TF
End With
Bon courage
Tiens, c'est curieux, Ces macros me rappelent quelque chose.... pourtant, il n'est fait aucune mention de l'auteur style "à partir de...."
Au passage Merci pour les propriétaires de Chihuahua
Au passage Merci pour les propriétaires de Chihuahua
Bonjour tout le monde,
1- Merci de bien vouloir changer de signature,
2- Je crois également reconnaitre l'auteur de ces macros, une référence, au sujet de base, directement en tête du code, serait en effet la moindre des choses. Par exemple :
en entête de chacun de tes modules (1 et 2)
3- Pourquoi aller plus vite? Quel est le temps d'exécution de tes procédures?
Pour le savoir, ajoute ces deux lignes en début de macro :
et cette ligne en fin de macro, avant le End Sub :
Cordialement,
Franck
1- Merci de bien vouloir changer de signature,
2- Je crois également reconnaitre l'auteur de ces macros, une référence, au sujet de base, directement en tête du code, serait en effet la moindre des choses. Par exemple :
en entête de chacun de tes modules (1 et 2)
'sources : 'http://www.commentcamarche.net/forum/affich-30483726-affichage-de-donnees#p30483726
3- Pourquoi aller plus vite? Quel est le temps d'exécution de tes procédures?
Pour le savoir, ajoute ces deux lignes en début de macro :
Dim T As Single T = Timer
et cette ligne en fin de macro, avant le End Sub :
MsgBox "Macro exécutée en : " & Timer - T & " secondes."
Cordialement,
Franck
De ce que je vois dans ta macro, tu as la ligne
Le code est donc, selon moi, optimal.
De plus, un traitement de plus de 10 000 lignes sur 10 colonnes, en 8 secondes avec Excel,= est déjà un très bon rendement...
Mes essais montrent par ailleurs un meilleur temps que 8 secondes. Certainement du à mon pc.
Bref.
Difficile de faire mieux, voire même impossible.
Par contre, j'ai un souci avec le code... Lors de mes essais, j'ai saisi, dans le textbox 195 par exemple.
Il ne trouve aucune données alors qu'il y en a...
La ligne
Application.ScreenUpdating = Falseet la restitution se fait par
resizeet
application.Transpose.
Le code est donc, selon moi, optimal.
De plus, un traitement de plus de 10 000 lignes sur 10 colonnes, en 8 secondes avec Excel,= est déjà un très bon rendement...
Mes essais montrent par ailleurs un meilleur temps que 8 secondes. Certainement du à mon pc.
Bref.
Difficile de faire mieux, voire même impossible.
Par contre, j'ai un souci avec le code... Lors de mes essais, j'ai saisi, dans le textbox 195 par exemple.
Il ne trouve aucune données alors qu'il y en a...
La ligne
Nbre = Application.CountIf(.Range("localite"), Critere)renvoit 0... Je ne me l'explique pas.
Bonjour a tous,
Le sujet de depart es celui-ci:
https://forums.commentcamarche.net/forum/affich-30483726-affichage-de-donnees#p30509107
ensuite uly2562 a choisi les M:
http://www.commentcamarche.net/forum/message-1537944-question
ce matin je lui ai mis son fichier a dispo avec modif du countif qui ne trouve pas tout et des filtres pour recherche trait 1 a & 4
pour le "plagiat" le debat est tout vert (ou rouge). Dans le fichier de Michel_M, je sais ou trouve son pseudo
Le sujet de depart es celui-ci:
https://forums.commentcamarche.net/forum/affich-30483726-affichage-de-donnees#p30509107
ensuite uly2562 a choisi les M:
http://www.commentcamarche.net/forum/message-1537944-question
ce matin je lui ai mis son fichier a dispo avec modif du countif qui ne trouve pas tout et des filtres pour recherche trait 1 a & 4
pour le "plagiat" le debat est tout vert (ou rouge). Dans le fichier de Michel_M, je sais ou trouve son pseudo
Oui, cela est normal que cela te rappelle quelque chose,
A la base, c'est un fichier destiné a la recherche de commune, et son fonctionnement est quasi identique a mon travail;
En espérant ne pas avoir commi un déli, en oubliant de mettre la mention "à partir de" :p
ah... Dsl pour la phrase, c'est la punshline d'une personne connue, et toute mes excuse si tu es propriétaire d'un chihuahua
--
A la base, c'est un fichier destiné a la recherche de commune, et son fonctionnement est quasi identique a mon travail;
En espérant ne pas avoir commi un déli, en oubliant de mettre la mention "à partir de" :p
ah... Dsl pour la phrase, c'est la punshline d'une personne connue, et toute mes excuse si tu es propriétaire d'un chihuahua
--
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mais je ne travaille pas avec les Range() ou les Cell()
voyez plutôt: https://www.cjoint.com/c/DGqhJYmy8xR