Microsoft 365 Excel vba

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 !

Boubie

XLDnaute Junior
Bonjour à tous,

Je m'initie tant bien que mal aux macros et je rencontre un problème de mémoire car mon code est trop simpliste!

Ma macro semble être très énergivore ce qui n'est pas étonnant car je lui demande de répéter la même action à de nombreuse reprise.

mais je ne connais le code pour comment alléger.

Je vous joins mon fichier Word avec le code; le fichier Excel étant trop long à ouvrir

L'idée est de reporter certaines colonnes issus de 2 feuilles différentes ("REALISE" et "BUDGET") et de reporter sur 2 autres feuilles à des endroits bien précis.

Quelqu'un peut il m'aider car mon fichier ne s'ouvre plus correctement et je sais plus quoi faire, svp

Merci d'avance
 

Pièces jointes

Bonjour à tous,
@Boubie,
D'abord évite le select

Ce bout de code :
Code:
' 'Exercice comptable

Sheets("Sheet1").Select

Range("A2").Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

Sheets("TabReal").Select

Range("A2").Select

Selection.PasteSpecialPaste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

à remplacer par celui là:

VB:
'---
Sheets("Sheet1").Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).Copy
Sheets("TabReal").Range("A2").PasteSpecial Paste:=xlPasteValues

à refaire avec la suite du code.
 
Re,
Code:
Sub MGExportPGI()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''DONNEES REALISE
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Exercice comptable
Sheets("Sheet1").Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).Copy
Sheets("TabReal").Range("A2").PasteSpecial Paste:=xlPasteValues
 'Domaine d'activité
Sheets("Sheet1").Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Copy
Sheets("TabReal").Range("C2").PasteSpecial Paste:=xlPasteValues
 'Définition Projet
Sheets("Sheet1").Range("C2:C" & Cells(Rows.Count, "C").End(xlUp).Row).Copy
Sheets("TabReal").Range("D2").PasteSpecial Paste:=xlPasteValues
'Elément d'OTP
Sheets("Sheet1").Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row).Copy
Sheets("TabReal").Range("G2").PasteSpecial Paste:=xlPasteValues
'Val/dev.état
Sheets("Sheet1").Range("E2:E" & Cells(Rows.Count, "E").End(xlUp).Row).Copy
Sheets("TabReal").Range("J2").PasteSpecial Paste:=xlPasteValues
'Nature comptable
Sheets("Sheet1").Range("F2:F" & Cells(Rows.Count, "F").End(xlUp).Row).Copy
Sheets("TabReal").Range("P2").PasteSpecial Paste:=xlPasteValues
'Document d'achat
Sheets("Sheet1").Range("G2:G" & Cells(Rows.Count, "G").End(xlUp).Row).Copy
Sheets("TabReal").Range("R2").PasteSpecial Paste:=xlPasteValues
'Poste de Cde
Sheets("Sheet1").Range("H2:H" & Cells(Rows.Count, "H").End(xlUp).Row).Copy
Sheets("TabReal").Range("W2").PasteSpecial Paste:=xlPasteValues
'Type de Pièce
Sheets("Sheet1").Range("I2:I" & Cells(Rows.Count, "I").End(xlUp).Row).Copy
Sheets("TabReal").Range("X2").PasteSpecial Paste:=xlPasteValues
'Date comptable
Sheets("Sheet1").Range("J2:J" & Cells(Rows.Count, "J").End(xlUp).Row).Copy
Sheets("TabReal").Range("Y2").PasteSpecial Paste:=xlPasteValues

''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'DONNEES BUDGET
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'   'Exercice comptable
Sheets("Sheet2").Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).Copy
Sheets("TabEng").Range("A2").PasteSpecial Paste:=xlPasteValues
'Domaine d'activité
Sheets("Sheet2").Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Copy
Sheets("TabEng").Range("C2").PasteSpecial Paste:=xlPasteValues
 'Dénition de projet
 Sheets("Sheet2").Range("C2:C" & Cells(Rows.Count, "C").End(xlUp).Row).Copy
Sheets("TabEng").Range("D2").PasteSpecial Paste:=xlPasteValues
'Elément d'OTP
Sheets("Sheet2").Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row).Copy
Sheets("TabEng").Range("G2").PasteSpecial Paste:=xlPasteValues
 'Val/dev.état
Sheets("Sheet2").Range("E2:E" & Cells(Rows.Count, "E").End(xlUp).Row).Copy
Sheets("TabEng").Range("J2").PasteSpecial Paste:=xlPasteValues
'Catégorie de la pièce de référence
Sheets("Sheet2").Range("F2:F" & Cells(Rows.Count, "F").End(xlUp).Row).Copy
Sheets("TabEng").Range("R2").PasteSpecial Paste:=xlPasteValues
'Nº pièce référence
Sheets("Sheet2").Range("G2:G" & Cells(Rows.Count, "G").End(xlUp).Row).Copy
Sheets("TabEng").Range("S2").PasteSpecial Paste:=xlPasteValues
'Poste de réf.
Sheets("Sheet2").Range("H2:H" & Cells(Rows.Count, "H").End(xlUp).Row).Copy
Sheets("TabEng").Range("T2").PasteSpecial Paste:=xlPasteValues
    'Désignation
Sheets("Sheet2").Range("I2:I" & Cells(Rows.Count, "I").End(xlUp).Row).Copy
Sheets("TabEng").Range("U2").PasteSpecial Paste:=xlPasteValues
    'Date de livraison
Sheets("Sheet2").Range("J2:J" & Cells(Rows.Count, "J").End(xlUp).Row).Copy
Sheets("TabEng").Range("V2").PasteSpecial Paste:=xlPasteValues
End Sub

Test pour une base de données de 350 lignes : 1 seconde.
 
Re,
Code:
Sub MGExportPGI()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''DONNEES REALISE
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Exercice comptable
Sheets("Sheet1").Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).Copy
Sheets("TabReal").Range("A2").PasteSpecial Paste:=xlPasteValues
 'Domaine d'activité
Sheets("Sheet1").Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Copy
Sheets("TabReal").Range("C2").PasteSpecial Paste:=xlPasteValues
 'Définition Projet
Sheets("Sheet1").Range("C2:C" & Cells(Rows.Count, "C").End(xlUp).Row).Copy
Sheets("TabReal").Range("D2").PasteSpecial Paste:=xlPasteValues
'Elément d'OTP
Sheets("Sheet1").Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row).Copy
Sheets("TabReal").Range("G2").PasteSpecial Paste:=xlPasteValues
'Val/dev.état
Sheets("Sheet1").Range("E2:E" & Cells(Rows.Count, "E").End(xlUp).Row).Copy
Sheets("TabReal").Range("J2").PasteSpecial Paste:=xlPasteValues
'Nature comptable
Sheets("Sheet1").Range("F2:F" & Cells(Rows.Count, "F").End(xlUp).Row).Copy
Sheets("TabReal").Range("P2").PasteSpecial Paste:=xlPasteValues
'Document d'achat
Sheets("Sheet1").Range("G2:G" & Cells(Rows.Count, "G").End(xlUp).Row).Copy
Sheets("TabReal").Range("R2").PasteSpecial Paste:=xlPasteValues
'Poste de Cde
Sheets("Sheet1").Range("H2:H" & Cells(Rows.Count, "H").End(xlUp).Row).Copy
Sheets("TabReal").Range("W2").PasteSpecial Paste:=xlPasteValues
'Type de Pièce
Sheets("Sheet1").Range("I2:I" & Cells(Rows.Count, "I").End(xlUp).Row).Copy
Sheets("TabReal").Range("X2").PasteSpecial Paste:=xlPasteValues
'Date comptable
Sheets("Sheet1").Range("J2:J" & Cells(Rows.Count, "J").End(xlUp).Row).Copy
Sheets("TabReal").Range("Y2").PasteSpecial Paste:=xlPasteValues

''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'DONNEES BUDGET
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'   'Exercice comptable
Sheets("Sheet2").Range("A2:A" & Cells(Rows.Count, "A").End(xlUp).Row).Copy
Sheets("TabEng").Range("A2").PasteSpecial Paste:=xlPasteValues
'Domaine d'activité
Sheets("Sheet2").Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Copy
Sheets("TabEng").Range("C2").PasteSpecial Paste:=xlPasteValues
 'Dénition de projet
 Sheets("Sheet2").Range("C2:C" & Cells(Rows.Count, "C").End(xlUp).Row).Copy
Sheets("TabEng").Range("D2").PasteSpecial Paste:=xlPasteValues
'Elément d'OTP
Sheets("Sheet2").Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row).Copy
Sheets("TabEng").Range("G2").PasteSpecial Paste:=xlPasteValues
 'Val/dev.état
Sheets("Sheet2").Range("E2:E" & Cells(Rows.Count, "E").End(xlUp).Row).Copy
Sheets("TabEng").Range("J2").PasteSpecial Paste:=xlPasteValues
'Catégorie de la pièce de référence
Sheets("Sheet2").Range("F2:F" & Cells(Rows.Count, "F").End(xlUp).Row).Copy
Sheets("TabEng").Range("R2").PasteSpecial Paste:=xlPasteValues
'Nº pièce référence
Sheets("Sheet2").Range("G2:G" & Cells(Rows.Count, "G").End(xlUp).Row).Copy
Sheets("TabEng").Range("S2").PasteSpecial Paste:=xlPasteValues
'Poste de réf.
Sheets("Sheet2").Range("H2:H" & Cells(Rows.Count, "H").End(xlUp).Row).Copy
Sheets("TabEng").Range("T2").PasteSpecial Paste:=xlPasteValues
    'Désignation
Sheets("Sheet2").Range("I2:I" & Cells(Rows.Count, "I").End(xlUp).Row).Copy
Sheets("TabEng").Range("U2").PasteSpecial Paste:=xlPasteValues
    'Date de livraison
Sheets("Sheet2").Range("J2:J" & Cells(Rows.Count, "J").End(xlUp).Row).Copy
Sheets("TabEng").Range("V2").PasteSpecial Paste:=xlPasteValues
End Sub

Test pour une base de données de 350 lignes : 1 seconde.
Tu est trop top.... Merci 🙂
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
795
Réponses
10
Affichages
402
Réponses
8
Affichages
497
Réponses
12
Affichages
909
Retour