Bonsoir,
SVP
J'ai un fichier BDD "Partagé" et trop grand contiens des +2000 lignes en mini dans chacune de ces feuilles (+10 et chaque MAJ du fichier avec l'ajoute des nouvelle feuilles) (avec même format) , j'ai effectue des recherche et j'ai adapter la macro pour qu'elle marche bien , j'ai bien atteindre mon objectif mais ceci et très lente .
Code de la macro de megration et création de la BDD personnel.
aprés l’exécution de la macro du megration je fait une execution d'une autre macro (filtre avancé) que j'ai déjà eu dans le post suivant :
https://www.excel-downloads.com/threads/filtre-copier-les-donnees-aide-sur-macro.206309/
Merci de m'aider a minimisé le temps et la vitesse d'assemblage (car par fois ceci me bloque l'excel )
au bien si vous avez une solution plus pratique .
merci pour votre support
slt haytoch
SVP
J'ai un fichier BDD "Partagé" et trop grand contiens des +2000 lignes en mini dans chacune de ces feuilles (+10 et chaque MAJ du fichier avec l'ajoute des nouvelle feuilles) (avec même format) , j'ai effectue des recherche et j'ai adapter la macro pour qu'elle marche bien , j'ai bien atteindre mon objectif mais ceci et très lente .
Code de la macro de megration et création de la BDD personnel.
Code:
Sub MergeSheets()
Dim diswb As Worksheet, infwb As Workbook, swb As Worksheet
Dim N As Long
Dim file
Set shAct = Worksheets("BDD")
file= Application.GetOpenFilename("Excel (*.xlsx), *.xlsx", , "File Selection", , False)
If file= False Then Exit Sub
Application.ScreenUpdating = False
shAct.UsedRange.Offset(1).Clear
With Workbooks.Open(file)
wb = .Name
TWay = Environ("temp")
WbDest = "cg-temp.xlxs"
TDest = TWay & WbDest
Application.DisplayAlerts = False
Workbooks(wb).SaveCopyAs TDest
.Close savechanges:=False
End With
With Workbooks.Open(TDest)
' .ExclusiveAccess
For N = 1 To .Worksheets.Count
With Worksheets(N)
.UsedRange.Offset(1).Copy
End With
With shAct.Range("A65536").End(xlUp).Offset(1, 0)
.PasteSpecial Paste:=xlValues
'.PasteSpecial Paste:=xlFormats
End With
Next N
.Close savechanges:=False
End With
With shAct
.Range("H:I,K:N").Delete
.Range("H1").Value = "Index"
.Range("A1").Copy
.Range("H1").PasteSpecial Paste:=xlPasteFormats
.Range("A1:B1,G1:H1").Copy
.Range("J1").PasteSpecial Paste:=xlPasteValues
.Range("J1").PasteSpecial Paste:=xlPasteFormats
.Range("J1:M1").Copy
.Range("J14").PasteSpecial Paste:=xlPasteValues
.Range("J14").PasteSpecial Paste:=xlPasteFormats
End With
End Sub
aprés l’exécution de la macro du megration je fait une execution d'une autre macro (filtre avancé) que j'ai déjà eu dans le post suivant :
https://www.excel-downloads.com/threads/filtre-copier-les-donnees-aide-sur-macro.206309/
Code:
Sub Get_index_Morpho()
Dim tr As Integer
Dim i As Long, J As Long, DerL As Long
Dim Bwsh As Worksheet
Dim solsh As Worksheet
Dim CriteriaPl As Range, DesPl As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set Bwsh = Worksheets("Analyse")
Set solsh = Worksheets("Conf-BDD")
For J = 2 To Bwsh.Range("A" & Rows.Count).End(xlUp).Row
'Set solsh = Worksheets("SOL" & Bwsh.Cells(J, 8))
With solsh
DerL = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("A1:E" & DerL).Name = "Base" 'critères
.Range("J2") = Bwsh.Range("A" & J) 'produit
.Range("K2") = Bwsh.Range("D" & J) ' traitement
End With
Set CriteriaPl = solsh.Range("J1:L2")
Set DesPl = solsh.Range("J9:L9")
solsh.Range("J10") = ""
solsh.Range("K10") = ""
solsh.Range("K10") = ""
Range("Base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=CriteriaPl, CopyToRange:=DesPl
If solsh.Range("J10") <> "" Then
Bwsh.Range("E" & J) = solsh.Range("L10")
Bwsh.Range("F" & J) = solsh.Range("K10")
Else
tr = solsh.Range("K2")
For i = 1 To tr
solsh.Range("K2") = tr - i
Range("Base").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=CriteriaPl, CopyToRange:=DesPl
If Range("BDD!J10") <> "" Then
Bwsh.Range("E" & J) = solsh.Range("L10")
Bwsh.Range("F" & J) = solsh.Range("K10")
Exit For
End If
Next i
If solsh.Range("J10") = "" Then
With Bwsh
.Range("E" & J) = "None!"
.Range("F" & J) = "None !"
.Range("G" & J) = "Solution jamais livrée"
End With
End If
End If
Next J
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Merci de m'aider a minimisé le temps et la vitesse d'assemblage (car par fois ceci me bloque l'excel )
au bien si vous avez une solution plus pratique .
merci pour votre support
slt haytoch