macro trop longue a éxecuter

Le
Sunburn
Bonjour, j'ai une macro afin de copier-coller des éléments spécifiques, et
ensuite supprimer les lignes vides (grâce à JB, merci encore)
Mais cette macro est beaucoup trop longue à s'executer. est-ce possible de
gérer ce problème de timming?faire plus court?
je vous remercie beaucoup.
yann
-
Sub ESSAI()
Application.ScreenUpdating = False
[SYNTH1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A11]
[PB1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A30]
[SYNTH2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A50]
[PB2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A70]
[SYNTH3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A90]
[PB3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A110]
[SYNTH4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A130]
[PB4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A150]
[SYNTH5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A170]
[PB5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A190]
[SYNTH6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A210]
[PB6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A230]
[SYNTH7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A250]
[PB7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A270]
[SYNTH8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A290]
[PB8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A310]
[SYNTH9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A330]
[PB9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A350]
Dim Ligne As Variant
Dim Num As Variant
With ActiveSheet.UsedRange
Ligne = .Row + .Rows.Count - 1
End With
For Num = Ligne To 1 Step -1
If Application.CountA(Rows(Num)) = 0 Then Rows(Num).Delete
Next Num
Application.ScreenUpdating = True
End Sub
-
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
alexandre-dit le jeune
Le #4798021
Bonjour,
longue comment, elle ne finit jamais ? Quelle est la taille des éléments que
tu copies-colles ? Aussi peux-tu nous dire la vitesse de rotation de ton
disque dur et la RAM dont tu disposes sur l'ordinateur où tu exécutes la
macro ?
Cordialement,
Alexandre


"Sunburn" news:
Bonjour, j'ai une macro afin de copier-coller des éléments spécifiques, et
ensuite supprimer les lignes vides (grâce à JB, merci encore)
Mais cette macro est beaucoup trop longue à s'executer. est-ce possible de
gérer ce problème de timming?faire plus court?
je vous remercie beaucoup.
yann
-------
Sub ESSAI()
Application.ScreenUpdating = False
[SYNTH1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A11]
[PB1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A30]
[SYNTH2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A50]
[PB2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A70]
[SYNTH3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A90]
[PB3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A110]
[SYNTH4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A130]
[PB4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A150]
[SYNTH5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A170]
[PB5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A190]
[SYNTH6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A210]
[PB6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A230]
[SYNTH7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A250]
[PB7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A270]
[SYNTH8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A290]
[PB8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A310]
[SYNTH9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A330]
[PB9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A350]
Dim Ligne As Variant
Dim Num As Variant
With ActiveSheet.UsedRange
Ligne = .Row + .Rows.Count - 1
End With
For Num = Ligne To 1 Step -1
If Application.CountA(Rows(Num)) = 0 Then Rows(Num).Delete
Next Num
Application.ScreenUpdating = True
End Sub
----------


Sunburn
Le #4797881
re
en fait, cette fonction met 4 à 5 minutes.
Chaque zones (donc y'en a 18) fait 17 lignes * 7 colonnes.
J'ai fait le test sur des zones presques vides (seules une trentaine de
cellules avaient du texte, pas de formules, rien de lourd quoi).
Je suis sur windows XP,excel 2002, portable IBM Pentium 1.6GHZ, 1.5 Go de
RAM.....
Donc la config doit etre largement suffisante.

Merci si tu as une idée, mais je pense qu'il faut que je repense le code.
Yann


Bonjour,
longue comment, elle ne finit jamais ? Quelle est la taille des éléments que
tu copies-colles ? Aussi peux-tu nous dire la vitesse de rotation de ton
disque dur et la RAM dont tu disposes sur l'ordinateur où tu exécutes la
macro ?
Cordialement,
Alexandre


"Sunburn" news:
Bonjour, j'ai une macro afin de copier-coller des éléments spécifiques, et
ensuite supprimer les lignes vides (grâce à JB, merci encore)
Mais cette macro est beaucoup trop longue à s'executer. est-ce possible de
gérer ce problème de timming?faire plus court?
je vous remercie beaucoup.
yann
-------
Sub ESSAI()
Application.ScreenUpdating = False
[SYNTH1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A11]
[PB1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A30]
[SYNTH2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A50]
[PB2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A70]
[SYNTH3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A90]
[PB3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A110]
[SYNTH4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A130]
[PB4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A150]
[SYNTH5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A170]
[PB5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A190]
[SYNTH6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A210]
[PB6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A230]
[SYNTH7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A250]
[PB7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A270]
[SYNTH8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A290]
[PB8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A310]
[SYNTH9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A330]
[PB9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A350]
Dim Ligne As Variant
Dim Num As Variant
With ActiveSheet.UsedRange
Ligne = .Row + .Rows.Count - 1
End With
For Num = Ligne To 1 Step -1
If Application.CountA(Rows(Num)) = 0 Then Rows(Num).Delete
Next Num
Application.ScreenUpdating = True
End Sub
----------





jps
Le #4797851
bonjour yann
j'ai le même problème avec une macro et ne perds pas ton temps à refondre ta
macro : cela ne changera rien, crois-moi
VBA, c'est comme le coeur ; ça a des raisons que la raison ne connaît pas
la seule satisfaction que tu puisses tirer de cette douloureuse affaire,
c'est d'écrire à bilou pour lui dire que ton temps est aussi précieux que le
sien...je sais, il s'en fout mais toi, au moins, tu te sentiras mieux
jps

"Sunburn" news:
re
en fait, cette fonction met 4 à 5 minutes.
Chaque zones (donc y'en a 18) fait 17 lignes * 7 colonnes.
J'ai fait le test sur des zones presques vides (seules une trentaine de
cellules avaient du texte, pas de formules, rien de lourd quoi).
Je suis sur windows XP,excel 2002, portable IBM Pentium 1.6GHZ, 1.5 Go de
RAM.....
Donc la config doit etre largement suffisante.

Merci si tu as une idée, mais je pense qu'il faut que je repense le code.
Yann


Bonjour,
longue comment, elle ne finit jamais ? Quelle est la taille des éléments
que
tu copies-colles ? Aussi peux-tu nous dire la vitesse de rotation de ton
disque dur et la RAM dont tu disposes sur l'ordinateur où tu exécutes la
macro ?
Cordialement,
Alexandre


"Sunburn" news:
Bonjour, j'ai une macro afin de copier-coller des éléments spécifiques,
et
ensuite supprimer les lignes vides (grâce à JB, merci encore)
Mais cette macro est beaucoup trop longue à s'executer. est-ce possible
de
gérer ce problème de timming?faire plus court?
je vous remercie beaucoup.
yann
-------
Sub ESSAI()
Application.ScreenUpdating = False
[SYNTH1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A11]
[PB1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A30]
[SYNTH2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A50]
[PB2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A70]
[SYNTH3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A90]
[PB3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A110]
[SYNTH4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A130]
[PB4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A150]
[SYNTH5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A170]
[PB5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A190]
[SYNTH6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A210]
[PB6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A230]
[SYNTH7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A250]
[PB7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A270]
[SYNTH8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A290]
[PB8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A310]
[SYNTH9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A330]
[PB9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A350]
Dim Ligne As Variant
Dim Num As Variant
With ActiveSheet.UsedRange
Ligne = .Row + .Rows.Count - 1
End With
For Num = Ligne To 1 Step -1
If Application.CountA(Rows(Num)) = 0 Then Rows(Num).Delete
Next Num
Application.ScreenUpdating = True
End Sub
----------







Sunburn
Le #4797751
merci JPS, alors je dois prendre mon mal en patience....
Et ce cher Bilou, bien qu'il devienne humaniste et caritatif, n'aura pas de
temps pour moi, c'est clair.
Bon, je vais rester zen, car de toute façon, je ne l'utiliserai pas 10 fois
par jour cette fonction, sinon je vais faire une overdose de café.... ;))
merci à toi.


bonjour yann
j'ai le même problème avec une macro et ne perds pas ton temps à refondre ta
macro : cela ne changera rien, crois-moi
VBA, c'est comme le coeur ; ça a des raisons que la raison ne connaît pas
la seule satisfaction que tu puisses tirer de cette douloureuse affaire,
c'est d'écrire à bilou pour lui dire que ton temps est aussi précieux que le
sien...je sais, il s'en fout mais toi, au moins, tu te sentiras mieux
jps


jps
Le #4797661
:-))))
jps

"Sunburn" news:
merci JPS, alors je dois prendre mon mal en patience....
Et ce cher Bilou, bien qu'il devienne humaniste et caritatif, n'aura pas
de
temps pour moi, c'est clair.
Bon, je vais rester zen, car de toute façon, je ne l'utiliserai pas 10
fois
par jour cette fonction, sinon je vais faire une overdose de café.... ;))
merci à toi.


bonjour yann
j'ai le même problème avec une macro et ne perds pas ton temps à refondre
ta
macro : cela ne changera rien, crois-moi
VBA, c'est comme le coeur ; ça a des raisons que la raison ne connaît pas
la seule satisfaction que tu puisses tirer de cette douloureuse affaire,
c'est d'écrire à bilou pour lui dire que ton temps est aussi précieux que
le
sien...je sais, il s'en fout mais toi, au moins, tu te sentiras mieux
jps




Misange
Le #4797461
Bonjour
Si dans les plages que tu copies il y a des formules qui sont
recalculées chaque fois que tu ajoutes une donnée sur ta feuille tu
arrives très très vite à des temps de traitement inutilement longs.
Mets dans ta macro ton mode de calcul sur manuel en début de macro et
rétablit le à la fin sur automatique. C'est magique le temps que tu
gagnes dans certains cas.
Et bien bien sur application.screenupdatingúlse.

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour, j'ai une macro afin de copier-coller des éléments spécifiques, et
ensuite supprimer les lignes vides (grâce à JB, merci encore)
Mais cette macro est beaucoup trop longue à s'executer. est-ce possible de
gérer ce problème de timming?faire plus court?
je vous remercie beaucoup.
yann
-------
Sub ESSAI()
Application.ScreenUpdating = False
[SYNTH1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A11]
[PB1].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A30]
[SYNTH2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A50]
[PB2].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A70]
[SYNTH3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A90]
[PB3].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A110]
[SYNTH4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A130]
[PB4].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A150]
[SYNTH5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A170]
[PB5].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A190]
[SYNTH6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A210]
[PB6].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A230]
[SYNTH7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A250]
[PB7].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A270]
[SYNTH8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A290]
[PB8].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A310]
[SYNTH9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy
Sheets("1B").[A330]
[PB9].SpecialCells(xlCellTypeConstants, 23).EntireRow.Copy Sheets("1B").[A350]
Dim Ligne As Variant
Dim Num As Variant
With ActiveSheet.UsedRange
Ligne = .Row + .Rows.Count - 1
End With
For Num = Ligne To 1 Step -1
If Application.CountA(Rows(Num)) = 0 Then Rows(Num).Delete
Next Num
Application.ScreenUpdating = True
End Sub
----------


Sunburn
Le #4760181
Bonjour missange,
en fait, ce que je copie est uniquement du texte, rien que du texte, avec un
mise en forme classique (couleur de police et de remplissage, gras), enfin
rien d'extraordinaire.
De plusn, étant débutant, "mettre mon mode de calcul en manuel dans ma
macro", je sais pas faire du tout du tout.
Mais je pense que c'est ma structure qui est fausse, car il faudrait que je
supprime les lignes vides, seulement de la ligne 11 à la ligne 370, mais je
sais pas comment.
merci.
Yann


Bonjour
Si dans les plages que tu copies il y a des formules qui sont
recalculées chaque fois que tu ajoutes une donnée sur ta feuille tu
arrives très très vite à des temps de traitement inutilement longs.
Mets dans ta macro ton mode de calcul sur manuel en début de macro et
rétablit le à la fin sur automatique. C'est magique le temps que tu
gagnes dans certains cas.
Et bien bien sur application.screenupdatingúlse.

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net



Publicité
Poster une réponse
Anonyme