bonjour à tous,
je m'en remets à vous pour résoudre un problème :
dans le cadre de mon travail, je me suis créée un fichier excel avec un onglet pour chaque semaine dans lesquels il y a une table (identique) avec différentes données.
Ensuite sur un nouvel onglet je me suis créée une macro afin d'effectuer une rechercher d'une référence saisie, et qui vient me coller toutes les lignes trouvées dans chaque onglet, de cette ref.
jusque là tout va bien sauf que mon fichier atteint le 200mo et la macro devient lente.
Je me suis dis : je n'ai qu'à mettre mes données dans un fichier, et mon fichier+macro dans un autre
c'est là que ca coince, je ne sais pas aller chercher mes données dans un fichier externe
Déjà, est ce que mon idée va améliorer quelque chose, sinon pas la peine de se prendre la tete ?
merci d avance à quiconque pourra m'éclairer
PS : je débute en vba depuis quelque mois à peine alors soyez indulgents avec moi et bonne année
apercu du resulat :
je m'en remets à vous pour résoudre un problème :
dans le cadre de mon travail, je me suis créée un fichier excel avec un onglet pour chaque semaine dans lesquels il y a une table (identique) avec différentes données.
Ensuite sur un nouvel onglet je me suis créée une macro afin d'effectuer une rechercher d'une référence saisie, et qui vient me coller toutes les lignes trouvées dans chaque onglet, de cette ref.
jusque là tout va bien sauf que mon fichier atteint le 200mo et la macro devient lente.
Je me suis dis : je n'ai qu'à mettre mes données dans un fichier, et mon fichier+macro dans un autre
c'est là que ca coince, je ne sais pas aller chercher mes données dans un fichier externe
Déjà, est ce que mon idée va améliorer quelque chose, sinon pas la peine de se prendre la tete ?
merci d avance à quiconque pourra m'éclairer
PS : je débute en vba depuis quelque mois à peine alors soyez indulgents avec moi et bonne année
VB:
Sub FIND()
'
Dim ref As Variant
Dim i As Long, j As Long 'Déclare deux variables numériques
Dim plage As Range
ref = Sheets("recherche").Range("A1").Value 'reference a chercher en A1
Worksheets("recherche").Range("A3:ae1000").ClearContents 'efface anciens resultats de la recherche
Application.ScreenUpdating = False
' Passe chaque feuille en revue en partant de la 3eme
For i = 3 To Worksheets.Count 'WorkSheets.Count donne le nombre total de feuilles
Worksheets(i).Activate
If Worksheets(i).FilterMode Then Worksheets(i).ShowAllData 'retire filtres si il y a
Set plage = ActiveSheet.Range("A2").CurrentRegion 'selectionne plage tableau
plage.AutoFilter Field:=7, Criteria1:=ref ' filtre ref sur colonne G
On Error Resume Next
Worksheets(i).Range("A2:AZ" & Range("A100000").End(xlDown).Row).SpecialCells(xlVisible).Copy ' copie le filtre
Worksheets("recherche").Activate
If Range("A3") = "" Then
Range("A3").PasteSpecial Paste:=xlPasteValues ' colle
Else
Worksheets("recherche").Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues ' colle la selection
End If
Next 'Passe à la feuille suivante
Application.ScreenUpdating = True
End Sub
apercu du resulat :
Dernière édition: