Bonjour,
Je voudrais accélérer la boucle ci-dessous :
L = 3
For i = 2 To 70
Range("A" & L) = Worksheets("Récap1").Cells(3, i)
Range("B" & L) = Worksheets("Récap2").Cells(4, i)
Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value
L = L + 1
Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes
Range(... qui concernent les cellules A à H de la ligne L
pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ????
Peut être une collection ?
Mon problème est que je ne maitrise pas du tout,
même après avoir lu l'Aide, différents sites (peut-être pas les bons),
et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer.
Merci d'avance.
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
Papyjac
Bonjour Lanimal
as tu constater que cette boucle était longue à l'éxécution ?
Si oui, je ne pense pas que cela vienne de la boucle elle même
Tu peux essayer 2 choses mineures : supprimer le rafraichissement d'écran =>Application.Screeupdating = false Supprimer le mode recalcul automatique Application.Calculation = xlmanual éventuellement vérifier que des événement ne se déclenche pas à ton issu => Application.Enableevents = False
-- P a p y j a c
"LANIMAL" a écrit dans le message de news:uRmxBz$
Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.
Bonjour Lanimal
as tu constater que cette boucle était longue à l'éxécution ?
Si oui, je ne pense pas que cela vienne de la boucle elle même
Tu peux essayer 2 choses mineures :
supprimer le rafraichissement d'écran =>Application.Screeupdating = false
Supprimer le mode recalcul automatique Application.Calculation = xlmanual
éventuellement vérifier que des événement ne se déclenche pas à ton issu =>
Application.Enableevents = False
--
P a p y j a c
"LANIMAL" <noreply@xxx.yy> a écrit dans le message de
news:uRmxBz$TJHA.5860@TK2MSFTNGP02.phx.gbl...
Bonjour,
Je voudrais accélérer la boucle ci-dessous :
L = 3
For i = 2 To 70
Range("A" & L) = Worksheets("Récap1").Cells(3, i)
Range("B" & L) = Worksheets("Récap2").Cells(4, i)
Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value
L = L + 1
Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes
Range(... qui concernent les cellules A à H de la ligne L
pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ????
Peut être une collection ?
Mon problème est que je ne maitrise pas du tout,
même après avoir lu l'Aide, différents sites (peut-être pas les bons),
et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer.
Merci d'avance.
as tu constater que cette boucle était longue à l'éxécution ?
Si oui, je ne pense pas que cela vienne de la boucle elle même
Tu peux essayer 2 choses mineures : supprimer le rafraichissement d'écran =>Application.Screeupdating = false Supprimer le mode recalcul automatique Application.Calculation = xlmanual éventuellement vérifier que des événement ne se déclenche pas à ton issu => Application.Enableevents = False
-- P a p y j a c
"LANIMAL" a écrit dans le message de news:uRmxBz$
Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.
michdenis
Juste pour te donner une idée...
La feuille où tu copies tes données doit être la feuille active à l'écran sinon tu dois l'identifier devant Range("A3:A70") par worksheets("NomFeuille").Range("A3:A70") =.....
L = 3 For i = 2 To 70 With Worksheets("Récap1") Range("A3:A70") = Application.Transpose(.Range(.Cells(3, 2), .Cells(3, 70))) End With
Je te laisse pratiquer pour les autres lignes de code !
"LANIMAL" a écrit dans le message de news: uRmxBz$ Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.
Juste pour te donner une idée...
La feuille où tu copies tes données doit être la feuille active à l'écran
sinon tu dois l'identifier devant Range("A3:A70") par
worksheets("NomFeuille").Range("A3:A70") =.....
L = 3
For i = 2 To 70
With Worksheets("Récap1")
Range("A3:A70") = Application.Transpose(.Range(.Cells(3, 2), .Cells(3,
70)))
End With
Je te laisse pratiquer pour les autres lignes de code !
"LANIMAL" <noreply@xxx.yy> a écrit dans le message de news:
uRmxBz$TJHA.5860@TK2MSFTNGP02.phx.gbl...
Bonjour,
Je voudrais accélérer la boucle ci-dessous :
L = 3
For i = 2 To 70
Range("A" & L) = Worksheets("Récap1").Cells(3, i)
Range("B" & L) = Worksheets("Récap2").Cells(4, i)
Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value
L = L + 1
Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes
Range(... qui concernent les cellules A à H de la ligne L
pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ????
Peut être une collection ?
Mon problème est que je ne maitrise pas du tout,
même après avoir lu l'Aide, différents sites (peut-être pas les bons),
et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer.
Merci d'avance.
La feuille où tu copies tes données doit être la feuille active à l'écran sinon tu dois l'identifier devant Range("A3:A70") par worksheets("NomFeuille").Range("A3:A70") =.....
L = 3 For i = 2 To 70 With Worksheets("Récap1") Range("A3:A70") = Application.Transpose(.Range(.Cells(3, 2), .Cells(3, 70))) End With
Je te laisse pratiquer pour les autres lignes de code !
"LANIMAL" a écrit dans le message de news: uRmxBz$ Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.
LSteph
bonjour,
un =transpose(...)
ce serait pas bien ou un collage special...
@+
-- lsteph
LANIMAL a écrit :
Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.
bonjour,
un
=transpose(...)
ce serait pas bien
ou un collage special...
@+
--
lsteph
LANIMAL a écrit :
Bonjour,
Je voudrais accélérer la boucle ci-dessous :
L = 3
For i = 2 To 70
Range("A" & L) = Worksheets("Récap1").Cells(3, i)
Range("B" & L) = Worksheets("Récap2").Cells(4, i)
Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value
L = L + 1
Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes
Range(... qui concernent les cellules A à H de la ligne L
pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ????
Peut être une collection ?
Mon problème est que je ne maitrise pas du tout,
même après avoir lu l'Aide, différents sites (peut-être pas les bons),
et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer.
Merci d'avance.
Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.
LANIMAL
Bonsoir Papyjac Ah bien sûr ! - Que je suis étourdi ! Longue, la boucle ? - Oui, 12 secondes ! et c'est bien pour ça que j'aurais dû penser à Application.Calculation, d'autant qu'il y a un tableau bourré de calculs. Je n'y ai pas pensé car en fait je n'en ai généralement pas besoin. Maintenant : environ 1 seconde... ça change. J'avais pensé à Screeupdating qui change pas grand chose, et maintenant je comprends pourquoi. Enableevents est sans objet. Encore un grand merci. Au fait... moi, c'est PapyMich ;-)
Papyjac a écrit :
Bonjour Lanimal
as tu constater que cette boucle était longue à l'éxécution ?
Si oui, je ne pense pas que cela vienne de la boucle elle même
Tu peux essayer 2 choses mineures : supprimer le rafraichissement d'écran =>Application.Screeupdating = false Supprimer le mode recalcul automatique Application.Calculation = xlmanual éventuellement vérifier que des événement ne se déclenche pas à ton issu => Application.Enableevents = False
Bonsoir Papyjac
Ah bien sûr ! - Que je suis étourdi !
Longue, la boucle ? - Oui, 12 secondes !
et c'est bien pour ça que j'aurais dû penser à Application.Calculation,
d'autant qu'il y a un tableau bourré de calculs.
Je n'y ai pas pensé car en fait je n'en ai généralement pas besoin.
Maintenant : environ 1 seconde... ça change.
J'avais pensé à Screeupdating qui change pas grand chose, et maintenant
je comprends pourquoi.
Enableevents est sans objet.
Encore un grand merci.
Au fait... moi, c'est PapyMich ;-)
Papyjac a écrit :
Bonjour Lanimal
as tu constater que cette boucle était longue à l'éxécution ?
Si oui, je ne pense pas que cela vienne de la boucle elle même
Tu peux essayer 2 choses mineures :
supprimer le rafraichissement d'écran =>Application.Screeupdating = false
Supprimer le mode recalcul automatique Application.Calculation = xlmanual
éventuellement vérifier que des événement ne se déclenche pas à ton issu
=> Application.Enableevents = False
Bonsoir Papyjac Ah bien sûr ! - Que je suis étourdi ! Longue, la boucle ? - Oui, 12 secondes ! et c'est bien pour ça que j'aurais dû penser à Application.Calculation, d'autant qu'il y a un tableau bourré de calculs. Je n'y ai pas pensé car en fait je n'en ai généralement pas besoin. Maintenant : environ 1 seconde... ça change. J'avais pensé à Screeupdating qui change pas grand chose, et maintenant je comprends pourquoi. Enableevents est sans objet. Encore un grand merci. Au fait... moi, c'est PapyMich ;-)
Papyjac a écrit :
Bonjour Lanimal
as tu constater que cette boucle était longue à l'éxécution ?
Si oui, je ne pense pas que cela vienne de la boucle elle même
Tu peux essayer 2 choses mineures : supprimer le rafraichissement d'écran =>Application.Screeupdating = false Supprimer le mode recalcul automatique Application.Calculation = xlmanual éventuellement vérifier que des événement ne se déclenche pas à ton issu => Application.Enableevents = False
LANIMAL
Merci, Ce n'est pas possible, car, pour simplifier, je n'avais pas indiqué q'il y a dans la boucle une condition qui fait sauter des lignes L. Merci qd même de me donner un exemple auquel je n'aurais pas pensé, et qui m'intéresse pour d'autres applications. Papyjac a été très clairvoyant, il a reniflé la cause de la lenteur de la boucle (voir ma réponse). Mais c'est vrai que toi comme LSteph ne pouviez pas imaginer que je sois assez étourdi pour ne pas y penser ! Merci à vous
michdenis a écrit :
Juste pour te donner une idée...
La feuille où tu copies tes données doit être la feuille active à l'écran sinon tu dois l'identifier devant Range("A3:A70") par worksheets("NomFeuille").Range("A3:A70") =.....
L = 3 For i = 2 To 70 With Worksheets("Récap1") Range("A3:A70") = Application.Transpose(.Range(.Cells(3, 2), .Cells(3, 70))) End With
Je te laisse pratiquer pour les autres lignes de code !
"LANIMAL" a écrit dans le message de news: uRmxBz$ Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.
Merci,
Ce n'est pas possible, car, pour simplifier, je n'avais pas indiqué q'il
y a dans la boucle une condition qui fait sauter des lignes L.
Merci qd même de me donner un exemple auquel je n'aurais pas pensé, et
qui m'intéresse pour d'autres applications.
Papyjac a été très clairvoyant, il a reniflé la cause de la lenteur de
la boucle (voir ma réponse). Mais c'est vrai que toi comme LSteph ne
pouviez pas imaginer que je sois assez étourdi pour ne pas y penser !
Merci à vous
michdenis a écrit :
Juste pour te donner une idée...
La feuille où tu copies tes données doit être la feuille active à l'écran
sinon tu dois l'identifier devant Range("A3:A70") par
worksheets("NomFeuille").Range("A3:A70") =.....
L = 3
For i = 2 To 70
With Worksheets("Récap1")
Range("A3:A70") = Application.Transpose(.Range(.Cells(3, 2), .Cells(3,
70)))
End With
Je te laisse pratiquer pour les autres lignes de code !
"LANIMAL" <noreply@xxx.yy> a écrit dans le message de news:
uRmxBz$TJHA.5860@TK2MSFTNGP02.phx.gbl...
Bonjour,
Je voudrais accélérer la boucle ci-dessous :
L = 3
For i = 2 To 70
Range("A" & L) = Worksheets("Récap1").Cells(3, i)
Range("B" & L) = Worksheets("Récap2").Cells(4, i)
Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value
L = L + 1
Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes
Range(... qui concernent les cellules A à H de la ligne L
pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ????
Peut être une collection ?
Mon problème est que je ne maitrise pas du tout,
même après avoir lu l'Aide, différents sites (peut-être pas les bons),
et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer.
Merci d'avance.
Merci, Ce n'est pas possible, car, pour simplifier, je n'avais pas indiqué q'il y a dans la boucle une condition qui fait sauter des lignes L. Merci qd même de me donner un exemple auquel je n'aurais pas pensé, et qui m'intéresse pour d'autres applications. Papyjac a été très clairvoyant, il a reniflé la cause de la lenteur de la boucle (voir ma réponse). Mais c'est vrai que toi comme LSteph ne pouviez pas imaginer que je sois assez étourdi pour ne pas y penser ! Merci à vous
michdenis a écrit :
Juste pour te donner une idée...
La feuille où tu copies tes données doit être la feuille active à l'écran sinon tu dois l'identifier devant Range("A3:A70") par worksheets("NomFeuille").Range("A3:A70") =.....
L = 3 For i = 2 To 70 With Worksheets("Récap1") Range("A3:A70") = Application.Transpose(.Range(.Cells(3, 2), .Cells(3, 70))) End With
Je te laisse pratiquer pour les autres lignes de code !
"LANIMAL" a écrit dans le message de news: uRmxBz$ Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.
Jacquouille
Bonsoir Question purement humoristique, que vas-tu faire de ces 10 secondes gagnées ?
-- Bien amicalmement, "Le vin est au repas ce que le parfum est à la femme."
Jacquouille.
"LANIMAL" a écrit dans le message de news:
Merci, Ce n'est pas possible, car, pour simplifier, je n'avais pas indiqué q'il y a dans la boucle une condition qui fait sauter des lignes L. Merci qd même de me donner un exemple auquel je n'aurais pas pensé, et qui m'intéresse pour d'autres applications. Papyjac a été très clairvoyant, il a reniflé la cause de la lenteur de la boucle (voir ma réponse). Mais c'est vrai que toi comme LSteph ne pouviez pas imaginer que je sois assez étourdi pour ne pas y penser ! Merci à vous
michdenis a écrit :
Juste pour te donner une idée...
La feuille où tu copies tes données doit être la feuille active à l'écran sinon tu dois l'identifier devant Range("A3:A70") par worksheets("NomFeuille").Range("A3:A70") =.....
L = 3 For i = 2 To 70 With Worksheets("Récap1") Range("A3:A70") = Application.Transpose(.Range(.Cells(3, 2), .Cells(3, 70))) End With
Je te laisse pratiquer pour les autres lignes de code !
"LANIMAL" a écrit dans le message de news: uRmxBz$ Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.
Bonsoir
Question purement humoristique, que vas-tu faire de ces 10 secondes gagnées
?
--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."
Jacquouille.
"LANIMAL" <noreply@xxx.yy> a écrit dans le message de news:
OjewErAUJHA.5284@TK2MSFTNGP06.phx.gbl...
Merci,
Ce n'est pas possible, car, pour simplifier, je n'avais pas indiqué q'il y
a dans la boucle une condition qui fait sauter des lignes L.
Merci qd même de me donner un exemple auquel je n'aurais pas pensé, et qui
m'intéresse pour d'autres applications.
Papyjac a été très clairvoyant, il a reniflé la cause de la lenteur de la
boucle (voir ma réponse). Mais c'est vrai que toi comme LSteph ne pouviez
pas imaginer que je sois assez étourdi pour ne pas y penser !
Merci à vous
michdenis a écrit :
Juste pour te donner une idée...
La feuille où tu copies tes données doit être la feuille active à l'écran
sinon tu dois l'identifier devant Range("A3:A70") par
worksheets("NomFeuille").Range("A3:A70") =.....
L = 3
For i = 2 To 70
With Worksheets("Récap1")
Range("A3:A70") = Application.Transpose(.Range(.Cells(3, 2),
.Cells(3, 70)))
End With
Je te laisse pratiquer pour les autres lignes de code !
"LANIMAL" <noreply@xxx.yy> a écrit dans le message de news:
uRmxBz$TJHA.5860@TK2MSFTNGP02.phx.gbl...
Bonjour,
Je voudrais accélérer la boucle ci-dessous :
L = 3
For i = 2 To 70
Range("A" & L) = Worksheets("Récap1").Cells(3, i)
Range("B" & L) = Worksheets("Récap2").Cells(4, i)
Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value
L = L + 1
Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes
Range(... qui concernent les cellules A à H de la ligne L
pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ????
Peut être une collection ?
Mon problème est que je ne maitrise pas du tout,
même après avoir lu l'Aide, différents sites (peut-être pas les bons),
et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer.
Merci d'avance.
Bonsoir Question purement humoristique, que vas-tu faire de ces 10 secondes gagnées ?
-- Bien amicalmement, "Le vin est au repas ce que le parfum est à la femme."
Jacquouille.
"LANIMAL" a écrit dans le message de news:
Merci, Ce n'est pas possible, car, pour simplifier, je n'avais pas indiqué q'il y a dans la boucle une condition qui fait sauter des lignes L. Merci qd même de me donner un exemple auquel je n'aurais pas pensé, et qui m'intéresse pour d'autres applications. Papyjac a été très clairvoyant, il a reniflé la cause de la lenteur de la boucle (voir ma réponse). Mais c'est vrai que toi comme LSteph ne pouviez pas imaginer que je sois assez étourdi pour ne pas y penser ! Merci à vous
michdenis a écrit :
Juste pour te donner une idée...
La feuille où tu copies tes données doit être la feuille active à l'écran sinon tu dois l'identifier devant Range("A3:A70") par worksheets("NomFeuille").Range("A3:A70") =.....
L = 3 For i = 2 To 70 With Worksheets("Récap1") Range("A3:A70") = Application.Transpose(.Range(.Cells(3, 2), .Cells(3, 70))) End With
Je te laisse pratiquer pour les autres lignes de code !
"LANIMAL" a écrit dans le message de news: uRmxBz$ Bonjour, Je voudrais accélérer la boucle ci-dessous :
L = 3 For i = 2 To 70 Range("A" & L) = Worksheets("Récap1").Cells(3, i) Range("B" & L) = Worksheets("Récap2").Cells(4, i) Range("C" & L & ":H" & L).Value = Worksheets("Toto").Range("B8:G8).Value L = L + 1 Next i
J'ai l'intuition que la boucle tournerait plus rapidement si les codes Range(... qui concernent les cellules A à H de la ligne L pouvaient être remplacés par une seule ligne du genre :
Range("A" & L & ":H" & L).Value = ????
La question, c'est quoi mettre à la place de ???? Peut être une collection ? Mon problème est que je ne maitrise pas du tout, même après avoir lu l'Aide, différents sites (peut-être pas les bons), et même un bouquin Mirosoft-Press de 600 pages.
La solution de cet exemple m'aiderait probablement à démarrer. Merci d'avance.