Optimisation de la durré d’une focntion
Résolu/Fermé
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
-
Modifié par crapoulou le 5/12/2016 à 00:13
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 - 5 déc. 2016 à 21:09
mijean94 Messages postés 413 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 12 septembre 2024 - 5 déc. 2016 à 21:09
A voir également:
- Optimisation de la durré d’une focntion
- Optimisation pc - Accueil - Utilitaires
- Optimisation découpe panneau gratuit - Télécharger - Outils professionnels
- Optimisation windows 10 - Guide
- Glary Utilities : l'outil référence pour entretenir un PC - Télécharger - Nettoyage
- Optimizer : nettoyer, optimiser et personnaliser Windows - Télécharger - Optimisation
3 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 5/12/2016 à 08:50
Modifié par michel_m le 5/12/2016 à 08:50
Bonjour
Après les déclarations, écris déjà cette ligne
Application.screenupdating=false
qui fige le défilement de l'écran
la couleur 2 (blanc) n'est elle pas plutôt " aucune couleur" ?
sinon est elle une mise en forme conditionnelle de la valeur de la cellule ?
Michel
Après les déclarations, écris déjà cette ligne
Application.screenupdating=false
qui fige le défilement de l'écran
la couleur 2 (blanc) n'est elle pas plutôt " aucune couleur" ?
sinon est elle une mise en forme conditionnelle de la valeur de la cellule ?
Michel
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
858
Modifié par JvDo le 5/12/2016 à 17:36
Modifié par JvDo le 5/12/2016 à 17:36
Bonjour à tous,
essaye de remplacer ta procédure par :
Cordialement
essaye de remplacer ta procédure par :
Public Sub Vitesse() ' Dim contenu As Variant Dim Plages As Range 'la cellule B2 contien les coordonnées de la zone à traiter sous la forme $X$X:$X$X . Set Plages = Range([B2]) nblig = Plages.Rows.Count nbcol = Plages.Columns.Count contenu = Plages For i = 1 To nblig: For j = 1 To nbcol If Plages(i, j).Interior.ColorIndex = -4142 Then contenu(i, j) = "" Next j: Next i Range("D4").Resize(nblig, nbcol) = contenu End Sub
Cordialement
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
5 déc. 2016 à 19:28
5 déc. 2016 à 19:28
Bonjour,
J'ai pas tous compris le fonctionnement mais le résultat est sans appel. 0,7 sec au lieu de 35 sec, même avec mes cellule en blanches, donc code -4142 remplacé par 2.
Merci beaucoup.
Bien cordialement
J'ai pas tous compris le fonctionnement mais le résultat est sans appel. 0,7 sec au lieu de 35 sec, même avec mes cellule en blanches, donc code -4142 remplacé par 2.
Merci beaucoup.
Bien cordialement
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
858
>
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
5 déc. 2016 à 20:58
5 déc. 2016 à 20:58
Bonsoir,
Tout est dans le passage par un tableau avec l'instruction contenu = Plages qui charge le contenu de Plages dans le tableau à 2 dimensions : contenu().
Le traitement est alors beaucoup plus rapide.
C'est un classique de l'accélération des traitements sur des Range().
Si tu veux plus de précisions, regarde dans le site de J. Boisgontier.
Cordialement
Tout est dans le passage par un tableau avec l'instruction contenu = Plages qui charge le contenu de Plages dans le tableau à 2 dimensions : contenu().
Le traitement est alors beaucoup plus rapide.
C'est un classique de l'accélération des traitements sur des Range().
Si tu veux plus de précisions, regarde dans le site de J. Boisgontier.
Cordialement
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
>
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
5 déc. 2016 à 21:09
5 déc. 2016 à 21:09
Re,
Merci encore pour toutes ces précisions ci précieuses ? je vais prendre le temps de regarder ce site car le résultat est formidable.
Bien cordialement
Merci encore pour toutes ces précisions ci précieuses ? je vais prendre le temps de regarder ce site car le résultat est formidable.
Bien cordialement
Raymond PENTIER
Messages postés
58720
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
10 novembre 2024
17 233
5 déc. 2016 à 02:14
5 déc. 2016 à 02:14
Peut-être en ajoutant Quick ou Speed quelque part ?
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
11
5 déc. 2016 à 10:40
5 déc. 2016 à 10:40
bonjour,
j'ai essayé avec Rapidman mais ça ne marche pas ?
Bien cordialement
j'ai essayé avec Rapidman mais ça ne marche pas ?
Bien cordialement
Raymond PENTIER
Messages postés
58720
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
10 novembre 2024
17 233
>
mijean94
Messages postés
413
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
12 septembre 2024
Modifié par Raymond PENTIER le 5/12/2016 à 18:09
Modifié par Raymond PENTIER le 5/12/2016 à 18:09
Dommage !
Tu as observé qu'il y a 4 CCMistes qui n'ont pas le même sens de l'humour que toi et moi ?
Amitiés.
Tu as observé qu'il y a 4 CCMistes qui n'ont pas le même sens de l'humour que toi et moi ?
Amitiés.
5 déc. 2016 à 10:38
Merci l'aide et pour la proposition.
Après l’ajout de (Application.screenupdating=false ) la boucle dure environ 10 secondes de moins pour une même utilisation.
Faut-il mettre Application.screenupdating= true en fin de procédure ?
Q : la couleur 2 (blanc) n'est elle pas plutôt " aucune couleur" ? R : ça pourrait-être la cellule sans couleur. Es-que ça changerais quelque chose ?
Q : Sinon est-elle une mise en forme conditionnelle de la valeur de la cellule ? R : non , c’est la colorisation suite à un traitement qui pourrait mettre la cellule sous n’importe quelle forme.
Bien cordialement
Modifié par michel_m le 5/12/2016 à 12:07
Faut-il mettre Application.screenupdating= true en fin de procédure ?
Non, car tu rends la main au système à la fin de la macro (Source: Laurent Longre)
la couleur 2 (blanc) n'est elle pas plutôt " aucune couleur" ? R : ça pourrait-être la cellule sans couleur. Es-que ça changerais quelque chose ?
Oui , la macro est plus simple car il n'y aurait pas de test à faire sur la couleur car il y a une différence MSOffice entre blanc et sans couleur...
colorindex blanc=0
pas de couleur colorindex= -4142
----------
taille maxi de "plages" ?
Pour déterminer "plages"
peut-^tre +simplement
5 déc. 2016 à 13:47
Merci pour cette proposition de simplification que j'ai appliquée.
Pas de gain mais effectivement plus simple dans la compréhension.
Q :taille maxi de "plages" ? R: 300 lignes et 250 colonnes à partir de la cellule D4.
comment faudrait-il pratiquer si les cellule à effacer sont sans couleur ?
Bien cordialement
Modifié par michel_m le 5/12/2016 à 14:08
fais des test cellule vide ou avec une donnée avec cette macro
si on a -4142 cellule non colorée
si on a 2 couleur blanche
5 déc. 2016 à 15:42
j'ai pas bien compris l'objectif de cette demande ?
Pour le test, actuellement je trouve bien 2 sur les cellules à supprimer.
Dans tous les cas mes cellule à effacer sont de couleur blanches, mais je peut faire en sorte qu'elles soient non colorées.
Bien cordialement