Microsoft 365 Macro lente copier-coller

  • Initiateur de la discussion Initiateur de la discussion BIGJOE12
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

BIGJOE12

Guest
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
 
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
 
Bonjour Sylvanu,
Merci pour votre réponse.
J’ai essayé avec vos suggestions je ne vois pas de différence avec avant. En effect, aucun calcul n’est réalisé sur la feuille Conso. Si jamais vous avez d’autres idées...
Merci !
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
1 K
Réponses
8
Affichages
615
Réponses
5
Affichages
832
Retour