Microsoft 365 Macro lente copier-coller

BIGJOE12

XLDnaute Nouveau
Bonjour,
J’utilise une macro pour consolider des données se trouvant sur plusieurs feuilles Excel (nommées X, Y et Z dans mon code). Ma feuille de consolidation se nomme « Conso ».
La macro est très lente, surtout au moment de coller les données dans le tableau de la feuille Conso.
La principale raison est le fait que le collage sur un tableau Excel ralentit vraiment la macro...
Si quelqu’un peut me donner des conseils pour réduire le temps de ma macro ou l’améliorer...
Merci par avance !

VB:
Sub MAJ_Database()

Application.ScreenUpdating = False


On Error Resume Next

'Sélection de la feuille Conso pour supprimer les précédentes données

Sheets("Conso").Activate

Range("B2", Selection.End(xlDown)).EntireRow.Delete

On Error GoTo 0

'--- ONGLET X ---

'Sélection de la feuille X et copie des valeurs

Sheets("X").Activate

Range("A2:Z2", Selection.End(xlDown)).Copy

'Sélection de la feuille Conso pour coller les valeurs

Sheets("Conso").Activate

Range("B2").PasteSpecial xlPasteValues


'--- ONGLET Y ---

Sheets("Y").Activate

Range("A2:Z2", Selection.End(xlDown)).Copy

'Sélection de la feuille Conso pour coller les valeurs

Sheets("Conso").Activate

Range("B" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues


'--- ONGLET Z ---

Sheets("Z").Activate

Range("A2:Z2", Selection.End(xlDown)).Copy

'Sélection de la feuille Conso pour coller les valeurs

Sheets("Conso").Activate

Range("B" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues

Application.ScreenUpdating = True

MsgBox "Le contenu a été actualisé dans l'onglet 'Conso' !"

End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour BigJoe,
Peut être est ce due à des recalculs intermédiaires.
Vous pourriez essayer de tout bloquer en début de macro pour voir :
VB:
Application.ScreenUpdating = false
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
et revallider en fin de sub :
Code:
Application.ScreenUpdating = true
Application.Calculation = xlAutomatic
Application.EnableEvents = true
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Voici un exemple. Il s'agit d'une requête PowerQuery qui combine les données de plusieurs tableau réparties sur plusieurs feuilles en un seul.

Avec PowerQuery, vous pouvez également faire des consolidations au sens d'agréger des données (fonction statistiques) etc.

Cordialement
 

Pièces jointes

  • PQ-combine-tables.xlsx
    35.3 KB · Affichages: 11

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
699
Réponses
8
Affichages
369

Statistiques des forums

Discussions
314 485
Messages
2 110 101
Membres
110 663
dernier inscrit
ToussaintBug