dans mon fichier excel, j'ai mis en place une macro qui fonctionne bien,
mais qui est malheureusement très lent.
n'étant pas un spécialiste en langage vb, tout ce que j'ai essayé pour
épurer le code ne fonctionne pas..... ;(
si quelqu'un peut me donner des infos sur la possibilité d'améliorer ce
code, d'avance merci.
d'abord petit explicatif du fichier
dans une feuille nommée "saisie", l'on remplit différentes zones sur une
colonne de cette feuille, la macro est activée par un bouton.
le but de cette macro est d'imprimer une page de ce qui a été saisi,
puis de copier la colonne saisie et de la coller en ligne dans une autre
feuille "journal" (cette feuille est protégée et cachée),
puis la macro vide les zones saisies dans la feuille nommée "saisie" et
prépare ainsi cette feuille pour une nouvelle saisie....
elle fait en plus qlqes autres bidules telles que copies de diverses autres
cellules
voilà
l'éxecution de cette macro prend pas mal de temps, mon but maintenant est
d'essayer de l'alléger pour la rendre plus rapide, d'avance merci si
quelqu'un peu m'aider.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Fauconnier
Bonjour
Sans détailler ton code, je peux te donner les conseils suivants :
En début de macro, ajoute la ligne application.screenupdating = false
et en fin de macro application.screenupdating = true
Ces lignes feront en sorte qu'Excel travaille sans raffraichissement d'écran, ce qui accélerera déjà grandement l'exécution...
Ensuite, tu n'es pas obligé de sélectionner les cellules pour travailler avec.
Ainsi, Range("a1").select selection = "Bonjour" Peut s'écrire Range("A1") = "Bonjour"
Là aussi, tu gagneras du temps car Excel ne devra pas constamment sélectionner ou activer de nouveaux objets.
Ainsi, tu peux réaliser l'opération suivante Feuil1.Range("a1").Copy Destination:þuil2.Range("b4") plus rapidement qu'en sélectionnant la source pour la copier, puis sélectionner la cible, ...
Lorsque tu as plusieurs manipulations à effectuer avec la même plage, crée et utilise un objet Plage Dim Plage as range set Plage = feuil1.range("A1:B6") plage.copy destination:= feuil2.range("B19") Plage.interior.color = vbred Plage.clearcontents...
ETc...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Eric" a écrit dans le message de news: %
bonjour à tous
dans mon fichier excel, j'ai mis en place une macro qui fonctionne bien, mais qui est malheureusement très lent.
n'étant pas un spécialiste en langage vb, tout ce que j'ai essayé pour épurer le code ne fonctionne pas..... ;(
si quelqu'un peut me donner des infos sur la possibilité d'améliorer ce code, d'avance merci.
d'abord petit explicatif du fichier
dans une feuille nommée "saisie", l'on remplit différentes zones sur une colonne de cette feuille, la macro est activée par un bouton.
le but de cette macro est d'imprimer une page de ce qui a été saisi, puis de copier la colonne saisie et de la coller en ligne dans une autre feuille "journal" (cette feuille est protégée et cachée), puis la macro vide les zones saisies dans la feuille nommée "saisie" et prépare ainsi cette feuille pour une nouvelle saisie.... elle fait en plus qlqes autres bidules telles que copies de diverses autres cellules voilà
l'éxecution de cette macro prend pas mal de temps, mon but maintenant est d'essayer de l'alléger pour la rendre plus rapide, d'avance merci si quelqu'un peu m'aider.
Meilleures salutations
Eric
Bonjour
Sans détailler ton code, je peux te donner les conseils suivants :
En début de macro, ajoute la ligne
application.screenupdating = false
et en fin de macro
application.screenupdating = true
Ces lignes feront en sorte qu'Excel travaille sans raffraichissement
d'écran, ce qui accélerera déjà grandement l'exécution...
Ensuite, tu n'es pas obligé de sélectionner les cellules pour travailler
avec.
Ainsi,
Range("a1").select
selection = "Bonjour"
Peut s'écrire
Range("A1") = "Bonjour"
Là aussi, tu gagneras du temps car Excel ne devra pas constamment
sélectionner ou activer de nouveaux objets.
Ainsi, tu peux réaliser l'opération suivante
Feuil1.Range("a1").Copy Destination:þuil2.Range("b4")
plus rapidement qu'en sélectionnant la source pour la copier, puis
sélectionner la cible, ...
Lorsque tu as plusieurs manipulations à effectuer avec la même plage, crée
et utilise un objet Plage
Dim Plage as range
set Plage = feuil1.range("A1:B6")
plage.copy destination:= feuil2.range("B19")
Plage.interior.color = vbred
Plage.clearcontents...
ETc...
Ok?
--
Pierre Fauconnier (pierre.fauconnier@nospam.nospam)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Eric" <info.nospam@shs.ch> a écrit dans le message de news:
%23XFm4zKUFHA.3644@TK2MSFTNGP10.phx.gbl...
bonjour à tous
dans mon fichier excel, j'ai mis en place une macro qui fonctionne bien,
mais qui est malheureusement très lent.
n'étant pas un spécialiste en langage vb, tout ce que j'ai essayé pour
épurer le code ne fonctionne pas..... ;(
si quelqu'un peut me donner des infos sur la possibilité d'améliorer ce
code, d'avance merci.
d'abord petit explicatif du fichier
dans une feuille nommée "saisie", l'on remplit différentes zones sur une
colonne de cette feuille, la macro est activée par un bouton.
le but de cette macro est d'imprimer une page de ce qui a été saisi,
puis de copier la colonne saisie et de la coller en ligne dans une autre
feuille "journal" (cette feuille est protégée et cachée),
puis la macro vide les zones saisies dans la feuille nommée "saisie" et
prépare ainsi cette feuille pour une nouvelle saisie....
elle fait en plus qlqes autres bidules telles que copies de diverses
autres
cellules
voilà
l'éxecution de cette macro prend pas mal de temps, mon but maintenant est
d'essayer de l'alléger pour la rendre plus rapide, d'avance merci si
quelqu'un peu m'aider.
Sans détailler ton code, je peux te donner les conseils suivants :
En début de macro, ajoute la ligne application.screenupdating = false
et en fin de macro application.screenupdating = true
Ces lignes feront en sorte qu'Excel travaille sans raffraichissement d'écran, ce qui accélerera déjà grandement l'exécution...
Ensuite, tu n'es pas obligé de sélectionner les cellules pour travailler avec.
Ainsi, Range("a1").select selection = "Bonjour" Peut s'écrire Range("A1") = "Bonjour"
Là aussi, tu gagneras du temps car Excel ne devra pas constamment sélectionner ou activer de nouveaux objets.
Ainsi, tu peux réaliser l'opération suivante Feuil1.Range("a1").Copy Destination:þuil2.Range("b4") plus rapidement qu'en sélectionnant la source pour la copier, puis sélectionner la cible, ...
Lorsque tu as plusieurs manipulations à effectuer avec la même plage, crée et utilise un objet Plage Dim Plage as range set Plage = feuil1.range("A1:B6") plage.copy destination:= feuil2.range("B19") Plage.interior.color = vbred Plage.clearcontents...
ETc...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Eric" a écrit dans le message de news: %
bonjour à tous
dans mon fichier excel, j'ai mis en place une macro qui fonctionne bien, mais qui est malheureusement très lent.
n'étant pas un spécialiste en langage vb, tout ce que j'ai essayé pour épurer le code ne fonctionne pas..... ;(
si quelqu'un peut me donner des infos sur la possibilité d'améliorer ce code, d'avance merci.
d'abord petit explicatif du fichier
dans une feuille nommée "saisie", l'on remplit différentes zones sur une colonne de cette feuille, la macro est activée par un bouton.
le but de cette macro est d'imprimer une page de ce qui a été saisi, puis de copier la colonne saisie et de la coller en ligne dans une autre feuille "journal" (cette feuille est protégée et cachée), puis la macro vide les zones saisies dans la feuille nommée "saisie" et prépare ainsi cette feuille pour une nouvelle saisie.... elle fait en plus qlqes autres bidules telles que copies de diverses autres cellules voilà
l'éxecution de cette macro prend pas mal de temps, mon but maintenant est d'essayer de l'alléger pour la rendre plus rapide, d'avance merci si quelqu'un peu m'aider.
Meilleures salutations
Eric
HD
Un petit article intéressant pour optimiser tout ça :
Accélération du code VBA http://xcell05.free.fr/pages/prog/accvba.htm -- @+ HD
Un petit article intéressant pour optimiser tout ça :
Accélération du code VBA
http://xcell05.free.fr/pages/prog/accvba.htm
--
@+
HD
Un petit article intéressant pour optimiser tout ça :
Accélération du code VBA http://xcell05.free.fr/pages/prog/accvba.htm -- @+ HD
Eric
merci des conseils
je vais essayés tout ça
merci beaucoup
Eric
"Pierre Fauconnier" a écrit dans le message de news:
Bonjour
Sans détailler ton code, je peux te donner les conseils suivants :
En début de macro, ajoute la ligne application.screenupdating = false
et en fin de macro application.screenupdating = true
Ces lignes feront en sorte qu'Excel travaille sans raffraichissement d'écran, ce qui accélerera déjà grandement l'exécution...
Ensuite, tu n'es pas obligé de sélectionner les cellules pour travailler avec.
Ainsi, Range("a1").select selection = "Bonjour" Peut s'écrire Range("A1") = "Bonjour"
Là aussi, tu gagneras du temps car Excel ne devra pas constamment sélectionner ou activer de nouveaux objets.
Ainsi, tu peux réaliser l'opération suivante Feuil1.Range("a1").Copy Destination:þuil2.Range("b4") plus rapidement qu'en sélectionnant la source pour la copier, puis sélectionner la cible, ...
Lorsque tu as plusieurs manipulations à effectuer avec la même plage, crée et utilise un objet Plage Dim Plage as range set Plage = feuil1.range("A1:B6") plage.copy destination:= feuil2.range("B19") Plage.interior.color = vbred Plage.clearcontents...
ETc...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Eric" a écrit dans le message de news: %
bonjour à tous
dans mon fichier excel, j'ai mis en place une macro qui fonctionne bien, mais qui est malheureusement très lent.
n'étant pas un spécialiste en langage vb, tout ce que j'ai essayé pour épurer le code ne fonctionne pas..... ;(
si quelqu'un peut me donner des infos sur la possibilité d'améliorer ce code, d'avance merci.
d'abord petit explicatif du fichier
dans une feuille nommée "saisie", l'on remplit différentes zones sur une colonne de cette feuille, la macro est activée par un bouton.
le but de cette macro est d'imprimer une page de ce qui a été saisi, puis de copier la colonne saisie et de la coller en ligne dans une autre feuille "journal" (cette feuille est protégée et cachée), puis la macro vide les zones saisies dans la feuille nommée "saisie" et prépare ainsi cette feuille pour une nouvelle saisie.... elle fait en plus qlqes autres bidules telles que copies de diverses autres cellules voilà
l'éxecution de cette macro prend pas mal de temps, mon but maintenant est
d'essayer de l'alléger pour la rendre plus rapide, d'avance merci si quelqu'un peu m'aider.
Meilleures salutations
Eric
merci des conseils
je vais essayés tout ça
merci beaucoup
Eric
"Pierre Fauconnier" <pierre.fauconnier@nospam.nospam> a écrit dans le
message de news:OWfId6KUFHA.628@tk2msftngp13.phx.gbl...
Bonjour
Sans détailler ton code, je peux te donner les conseils suivants :
En début de macro, ajoute la ligne
application.screenupdating = false
et en fin de macro
application.screenupdating = true
Ces lignes feront en sorte qu'Excel travaille sans raffraichissement
d'écran, ce qui accélerera déjà grandement l'exécution...
Ensuite, tu n'es pas obligé de sélectionner les cellules pour travailler
avec.
Ainsi,
Range("a1").select
selection = "Bonjour"
Peut s'écrire
Range("A1") = "Bonjour"
Là aussi, tu gagneras du temps car Excel ne devra pas constamment
sélectionner ou activer de nouveaux objets.
Ainsi, tu peux réaliser l'opération suivante
Feuil1.Range("a1").Copy Destination:þuil2.Range("b4")
plus rapidement qu'en sélectionnant la source pour la copier, puis
sélectionner la cible, ...
Lorsque tu as plusieurs manipulations à effectuer avec la même plage, crée
et utilise un objet Plage
Dim Plage as range
set Plage = feuil1.range("A1:B6")
plage.copy destination:= feuil2.range("B19")
Plage.interior.color = vbred
Plage.clearcontents...
ETc...
Ok?
--
Pierre Fauconnier (pierre.fauconnier@nospam.nospam)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Eric" <info.nospam@shs.ch> a écrit dans le message de news:
%23XFm4zKUFHA.3644@TK2MSFTNGP10.phx.gbl...
bonjour à tous
dans mon fichier excel, j'ai mis en place une macro qui fonctionne bien,
mais qui est malheureusement très lent.
n'étant pas un spécialiste en langage vb, tout ce que j'ai essayé pour
épurer le code ne fonctionne pas..... ;(
si quelqu'un peut me donner des infos sur la possibilité d'améliorer ce
code, d'avance merci.
d'abord petit explicatif du fichier
dans une feuille nommée "saisie", l'on remplit différentes zones sur une
colonne de cette feuille, la macro est activée par un bouton.
le but de cette macro est d'imprimer une page de ce qui a été saisi,
puis de copier la colonne saisie et de la coller en ligne dans une autre
feuille "journal" (cette feuille est protégée et cachée),
puis la macro vide les zones saisies dans la feuille nommée "saisie" et
prépare ainsi cette feuille pour une nouvelle saisie....
elle fait en plus qlqes autres bidules telles que copies de diverses
autres
cellules
voilà
"Pierre Fauconnier" a écrit dans le message de news:
Bonjour
Sans détailler ton code, je peux te donner les conseils suivants :
En début de macro, ajoute la ligne application.screenupdating = false
et en fin de macro application.screenupdating = true
Ces lignes feront en sorte qu'Excel travaille sans raffraichissement d'écran, ce qui accélerera déjà grandement l'exécution...
Ensuite, tu n'es pas obligé de sélectionner les cellules pour travailler avec.
Ainsi, Range("a1").select selection = "Bonjour" Peut s'écrire Range("A1") = "Bonjour"
Là aussi, tu gagneras du temps car Excel ne devra pas constamment sélectionner ou activer de nouveaux objets.
Ainsi, tu peux réaliser l'opération suivante Feuil1.Range("a1").Copy Destination:þuil2.Range("b4") plus rapidement qu'en sélectionnant la source pour la copier, puis sélectionner la cible, ...
Lorsque tu as plusieurs manipulations à effectuer avec la même plage, crée et utilise un objet Plage Dim Plage as range set Plage = feuil1.range("A1:B6") plage.copy destination:= feuil2.range("B19") Plage.interior.color = vbred Plage.clearcontents...
ETc...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Eric" a écrit dans le message de news: %
bonjour à tous
dans mon fichier excel, j'ai mis en place une macro qui fonctionne bien, mais qui est malheureusement très lent.
n'étant pas un spécialiste en langage vb, tout ce que j'ai essayé pour épurer le code ne fonctionne pas..... ;(
si quelqu'un peut me donner des infos sur la possibilité d'améliorer ce code, d'avance merci.
d'abord petit explicatif du fichier
dans une feuille nommée "saisie", l'on remplit différentes zones sur une colonne de cette feuille, la macro est activée par un bouton.
le but de cette macro est d'imprimer une page de ce qui a été saisi, puis de copier la colonne saisie et de la coller en ligne dans une autre feuille "journal" (cette feuille est protégée et cachée), puis la macro vide les zones saisies dans la feuille nommée "saisie" et prépare ainsi cette feuille pour une nouvelle saisie.... elle fait en plus qlqes autres bidules telles que copies de diverses autres cellules voilà
l'éxecution de cette macro prend pas mal de temps, mon but maintenant est
d'essayer de l'alléger pour la rendre plus rapide, d'avance merci si quelqu'un peu m'aider.
Meilleures salutations
Eric
gh
c'est une mine d'or cette réponse
je prends note moi aussi
merci
"Pierre Fauconnier" a écrit dans le message de news:
Bonjour
Sans détailler ton code, je peux te donner les conseils suivants :
En début de macro, ajoute la ligne application.screenupdating = false
et en fin de macro application.screenupdating = true
Ces lignes feront en sorte qu'Excel travaille sans raffraichissement d'écran, ce qui accélerera déjà grandement l'exécution...
Ensuite, tu n'es pas obligé de sélectionner les cellules pour travailler avec.
Ainsi, Range("a1").select selection = "Bonjour" Peut s'écrire Range("A1") = "Bonjour"
Là aussi, tu gagneras du temps car Excel ne devra pas constamment sélectionner ou activer de nouveaux objets.
Ainsi, tu peux réaliser l'opération suivante Feuil1.Range("a1").Copy Destination:þuil2.Range("b4") plus rapidement qu'en sélectionnant la source pour la copier, puis sélectionner la cible, ...
Lorsque tu as plusieurs manipulations à effectuer avec la même plage, crée et utilise un objet Plage Dim Plage as range set Plage = feuil1.range("A1:B6") plage.copy destination:= feuil2.range("B19") Plage.interior.color = vbred Plage.clearcontents...
ETc...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
c'est une mine d'or cette réponse
je prends note moi aussi
merci
"Pierre Fauconnier" <pierre.fauconnier@nospam.nospam> a écrit dans le
message de news:OWfId6KUFHA.628@tk2msftngp13.phx.gbl...
Bonjour
Sans détailler ton code, je peux te donner les conseils suivants :
En début de macro, ajoute la ligne
application.screenupdating = false
et en fin de macro
application.screenupdating = true
Ces lignes feront en sorte qu'Excel travaille sans raffraichissement
d'écran, ce qui accélerera déjà grandement l'exécution...
Ensuite, tu n'es pas obligé de sélectionner les cellules pour travailler
avec.
Ainsi,
Range("a1").select
selection = "Bonjour"
Peut s'écrire
Range("A1") = "Bonjour"
Là aussi, tu gagneras du temps car Excel ne devra pas constamment
sélectionner ou activer de nouveaux objets.
Ainsi, tu peux réaliser l'opération suivante
Feuil1.Range("a1").Copy Destination:þuil2.Range("b4")
plus rapidement qu'en sélectionnant la source pour la copier, puis
sélectionner la cible, ...
Lorsque tu as plusieurs manipulations à effectuer avec la même plage, crée
et utilise un objet Plage
Dim Plage as range
set Plage = feuil1.range("A1:B6")
plage.copy destination:= feuil2.range("B19")
Plage.interior.color = vbred
Plage.clearcontents...
ETc...
Ok?
--
Pierre Fauconnier (pierre.fauconnier@nospam.nospam)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"Pierre Fauconnier" a écrit dans le message de news:
Bonjour
Sans détailler ton code, je peux te donner les conseils suivants :
En début de macro, ajoute la ligne application.screenupdating = false
et en fin de macro application.screenupdating = true
Ces lignes feront en sorte qu'Excel travaille sans raffraichissement d'écran, ce qui accélerera déjà grandement l'exécution...
Ensuite, tu n'es pas obligé de sélectionner les cellules pour travailler avec.
Ainsi, Range("a1").select selection = "Bonjour" Peut s'écrire Range("A1") = "Bonjour"
Là aussi, tu gagneras du temps car Excel ne devra pas constamment sélectionner ou activer de nouveaux objets.
Ainsi, tu peux réaliser l'opération suivante Feuil1.Range("a1").Copy Destination:þuil2.Range("b4") plus rapidement qu'en sélectionnant la source pour la copier, puis sélectionner la cible, ...
Lorsque tu as plusieurs manipulations à effectuer avec la même plage, crée et utilise un objet Plage Dim Plage as range set Plage = feuil1.range("A1:B6") plage.copy destination:= feuil2.range("B19") Plage.interior.color = vbred Plage.clearcontents...
ETc...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci