> Tous les forums > Forum Bureautique
 Accelerer une macroSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
noe2008
  Posté le 26/01/2019 @ 21:03 
Aller en bas de la page 
Petit astucien

Bonsoir à tous les astuciens

l'excecution de ma macro prend un temps insupportable meme lorsque je traite un nombre limité de fichiers excel pouver vous m'aider à l’accélérer merci

Sub data_synthese()

Sheets("Notescc").Activate

Range("D1:Z15000").ClearContents

Application.ScreenUpdating = False

Application.Calculation = xlCalculationManual

Dim Fich As String, Sh As Worksheet, i As Long, L As Long, CD As Range

Dim Wbk As Workbook, Coll, K As Long

Set Sh = ThisWorkbook.Sheets("Notescc")

Coll = Application.GetOpenFilename(, , , , True)

For K = 1 To UBound(Coll)

Fich = Coll(K)

Set Wbk = Workbooks.Open(Fich)

L = (K - 1) * 100 + 1

With Wbk.Sheets("Notescc")

Set CD = .Range("D1:Z100")

Sh.Cells(L, 4).Resize(100, 23).Value = CD.Value

Wbk.Close False

End With

Next K

Application.Calculation = xlCalculationAutomatic

Sheets("1").Select

Range("C3").Select

End Sub

Publicité
Debrief
 Posté le 27/01/2019 à 05:02 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Je l'ai exécuté avec 4 fichiers de test, certes avec des cellules vides mais je ne crois pas que ça change quoi que ce soit, et ça n'a pris que 2 ou 3 secondes.

Je ne sais pas si Sheets("1").Select est intentionnel ou si tu veux dire Sheets(1).Select.

Cordialement,
D.

Debrief
 Posté le 27/01/2019 à 05:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

A la lecture de ton code, je viens de découvrir quelque chose que j'ignorais totalement en VBA:

Dim i, j as Integer ne fait pas de i et de j des entiers, seulement j est un entier et i est un Variant. Ça m'en retourne l'estomac vu le nombre de Macros que j'ai développées en pensant le contraire

Debrief
 Posté le 27/01/2019 à 11:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

J'ai mis "aaaaaaaaaaaaaaaaaaaaaaaaaa" dans "D1:Z100" dans les 20 fichiers test et un calcul du temps elapse et ça donne 6 secondes, soit 0,3 seconde par fichier, je pense surtout dû au temps d'ouverture et fermeture.

C'est ça que tu trouves long ?

noe2008
 Posté le 27/01/2019 à 11:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Salut Debrief

Merci pour ton éclaircissement , je crois aussi que cela revient a mon classeur qui est un peu volumineux a cause des formules sur 15000 lignes

noe2008
 Posté le 27/01/2019 à 12:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je vais essayer d'effacer des lignes qui contiennent des formules de la plage A1:Z15000 pour diminuer le volume du classeur

les cellules sont "A63:C100" ; "A163:C200" ; "A263:C300" ;................. "A14963:C15000"

y a t-il une macro qui pourra faire ce travail au lieu de le faire manuellement et merci

noe2008
 Posté le 27/01/2019 à 13:30 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Je crois que j'ai trouvé voila pour toute fin utile merci et bon dimanche

Sub effacer()

Application.Calculation = xlCalculationManual

Dim i As Integer

For i = 1 To 150

Range(Cells(63 + (i - 1) * 100, 1), Cells(i * 100, 3)).ClearContents

Next i

Application.Calculation = xlCalculationAutomatic

End Sub

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Sujets relatifs
Accelerer une Macro
masquer colonne avec macro
word macro enregistrer sous
Macro excel
Macro - LibreOffice
Macro VBa copier /coller dans autre feuille a modifier ??
Lancer macro automatiquement à chaque modif cellule
fusionner des cellules par macro
modifie une macro
Petit macro qui ne fonctionne pas
Plus de sujets relatifs à Accelerer une macro
 > Tous les forums > Forum Bureautique