Bonjour à tous,
je me tourne vers vous car n'étant pas un pro du VBA je "pédale" pas mal.
Après pas mal de tentatives, de recherches et de coups de mains (notamment de votre part, "membres de ce forum"),
je suis arrivé à créer mon fichier de calcul sur excel 2010.
Néanmoins, je me heurte à un temps de calcul important et à des "plantages fréquents".
Je voudrais donc simplifier mes lignes de codes pour optimiser mon fichier.
J'ai déjà fait pas mal de tentatives en m'inspirant des divers sujets du forum, mais pour un résultat nul.
Il y a selon moi deux codes qui peuvent être optimisés.
Le premier pour copier/coller avec filtre:
Selection.SpecialCells(xlCellTypeVisible).Select
Range("A1:G5000").Select
Selection.Copy
Sheets("Données Filtrées").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Le second pour réaliser un historique:
Sub historique()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name = "Données Semaine" Then
Application.ScreenUpdating = False
ws.Activate
Range("Tableau1").Select
Selection.Copy
Rem & [a1].SpecialCells(xlCellTypeLastCell).Address).Copy
Sheets("Historique Données").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
Rem ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("Tableau4").Select
Range("C11").Activate
Selection.RemoveDuplicates Columns:=Array(1, 2, 3, 4, _
5, 6, 7), Header:=xlYes
ActiveWorkbook.Worksheets("Historique Données").ListObjects("Tableau4").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Historique Données").ListObjects("Tableau4").Sort. _
SortFields.Add Key:=Range("Tableau4[[#All],[date]]"), SortOn:= _
xlSortOnValues, Order:=xlDescending, DataOption:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Historique Données").ListObjects("Tableau4"). _
Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A2").Select
End If
Next ws
End Sub
Merci d'avance pour vos réponses avisées qui me donneront une nouvelle fois un sacré coup de main !!!
Cordialement
Mezzo
je me tourne vers vous car n'étant pas un pro du VBA je "pédale" pas mal.
Après pas mal de tentatives, de recherches et de coups de mains (notamment de votre part, "membres de ce forum"),
je suis arrivé à créer mon fichier de calcul sur excel 2010.
Néanmoins, je me heurte à un temps de calcul important et à des "plantages fréquents".
Je voudrais donc simplifier mes lignes de codes pour optimiser mon fichier.
J'ai déjà fait pas mal de tentatives en m'inspirant des divers sujets du forum, mais pour un résultat nul.
Il y a selon moi deux codes qui peuvent être optimisés.
Le premier pour copier/coller avec filtre:
Selection.SpecialCells(xlCellTypeVisible).Select
Range("A1:G5000").Select
Selection.Copy
Sheets("Données Filtrées").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Le second pour réaliser un historique:
Sub historique()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name = "Données Semaine" Then
Application.ScreenUpdating = False
ws.Activate
Range("Tableau1").Select
Selection.Copy
Rem & [a1].SpecialCells(xlCellTypeLastCell).Address).Copy
Sheets("Historique Données").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
Rem ActiveSheet.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("Tableau4").Select
Range("C11").Activate
Selection.RemoveDuplicates Columns:=Array(1, 2, 3, 4, _
5, 6, 7), Header:=xlYes
ActiveWorkbook.Worksheets("Historique Données").ListObjects("Tableau4").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Historique Données").ListObjects("Tableau4").Sort. _
SortFields.Add Key:=Range("Tableau4[[#All],[date]]"), SortOn:= _
xlSortOnValues, Order:=xlDescending, DataOption:=xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Historique Données").ListObjects("Tableau4"). _
Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A2").Select
End If
Next ws
End Sub
Merci d'avance pour vos réponses avisées qui me donneront une nouvelle fois un sacré coup de main !!!
Cordialement
Mezzo