Macros sur certaines feuilles seulement

Bonjour à toutes et tous,

Tout d'abord, tous mes voeux et surtout la santé à l'équipe du forum !

J'ai un petit problème :

- Je souhaite récupérer des données provenant de 20 feuilles sur une feuille récapitulative à l'aide d'une macro.
- Mon classeur comprend plusieurs dizaines de feuilles.

Sub Récupération()

Dim i As Integer, Derlign As Integer

Application.ScreenUpdating = False

Derlign = 1

For i = ThisWorkbook.Worksheets.Count To 2 Step -1

    Worksheets(i).Range("u6:ab6").Copy
    Worksheets("Récupération").Range("b" & Derlign).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

    Worksheets(i).Range("dn6:dv6").Copy
    Worksheets("Récupération").Range("k" & Derlign).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False

'Saut de ligne'

    Derlign = Derlign + 1

'Changement de page'

Next i

    Range("A1:A55").Select
    ActiveWorkbook.Worksheets("Récupération").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Récupération").Sort.SortFields.Add Key:=Range("A1" _
        ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Récupération").Sort
        .SetRange Range("A1:A55")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("a1:S55").Select
    ActiveWorkbook.Worksheets("Récupération").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Récupération").Sort.SortFields.Add Key:=Range("A1" _
        ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Récupération").Sort
        .SetRange Range("A1:S55")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

Simplement, avec mon code, je récupère également des données de feuilles que je ne souhaite pas et qui rend le traitement... extrêmement long !

Merci par avance de vos lumières !

Cordialement,

Bonjour Lachatovsky, bonjour le forum,

Une piste avec le code ci-dessous. Commence par créer un tableau (ici TF) avec les index des onglets que tu veux utiliser puis :

Sub Récupération()
Dim i As Integer, Derlign As Integer, TF As Variant, OS As Worksheet, OD As Worksheet

Application.ScreenUpdating = False
Set OD = Worksheets("Récupération")
TF = Array(1, 3, 4, 5, 6, 9, 15, 18) 'par exemple
For i = 0 To UBound(TF)
    Derlign = 1
    Set OS = Worksheets(TF(i))
    OS.Range("u6:ab6").Copy
    OD.Range("b" & Derlign).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    OS.Range("dn6:dv6").Copy
    OD.Range("k" & Derlign).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Derlign = Derlign + 1
Next i
Range("A1:A55").Select 'de quel onglet et pourquoi cette sélection?
ActiveWorkbook.OD.Sort.SortFields.Clear
ActiveWorkbook.OD.Sort.SortFields.Add Key:=Range("A1" _
    ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.OD.Sort
    .SetRange Range("A1:A55")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Range("a1:S55").Select
ActiveWorkbook.OD.Sort.SortFields.Clear
ActiveWorkbook.OD.Sort.SortFields.Add Key:=Range("A1" _
    ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.OD.Sort
    .SetRange Range("A1:S55")
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub

La règle d'or en VBA c'est d'éviter autant que tu le peux les Select ou Activate qui ne font que ralentir l'exécution du code et sont source de nombreux bugs...

Rechercher des sujets similaires à "macros certaines feuilles seulement"