Compréhension d'un code BVA

bonjour à tous,

ce code (que je ne maîtrise pas du tout) me permet de copier les 5 premières colonnes sur chaque feuille dont le nom correspondant est en colonne 2.

j'aimerai, au lieu de copie que les 5 premières, copier les 7 premières colonnes...???

Lol

Sub extraction()

Application.ScreenUpdating = False

Dim Ws1 As Worksheet

Dim Zone As Range

Set Ws1 = Sheets("données")

Set Zone = Ws1.Range("A1:E" & [A65000].End(xlUp).Row)

For i = 2 To Sheets.Count

With Sheets(i)

.[F2].FormulaR1C1 = "=données!RC[-4]=""" & Right(Sheets(i).Name, 3) & """"

Zone.AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=.Range("F1:F2"), CopyToRange:=.Range("A1:E1"), Unique:=False

.[F2].ClearContents

End With

Next i

Application.ScreenUpdating = True

End Sub

Salut,

Essaye de remplacer tes "E" par "G" :

Sub extraction()

Application.ScreenUpdating = False

Dim Ws1 As Worksheet

Dim Zone As Range

Set Ws1 = Sheets("données")

Set Zone = Ws1.Range("A1:G" & [A65000].End(xlUp).Row)

For i = 2 To Sheets.Count

With Sheets(i)

.[F2].FormulaR1C1 = "=données!RC[-4]=""" & Right(Sheets(i).Name, 3) & """"

Zone.AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=.Range("F1:F2"), CopyToRange:=.Range("A1:G1"), Unique:=False

.[F2].ClearContents

End With

Next i

Application.ScreenUpdating = True

End Sub

Cdt,

Bonjour,

A tester.

Cdlt.

Public Sub Extraction()
Dim ws As Worksheet
Dim Zone As Range
Dim I As Long

    Application.ScreenUpdating = False

    Set ws = ActiveWorkbook.Worksheets("données")
    Set Zone = ws.Range("A1:G" & [A65000].End(xlUp).Row)

    For I = 2 To ActiveWorkbook.Worksheets.Count
        With ActiveWorkbook.Worksheets(I)
            .[J2].FormulaR1C1 = "=données!RC[-4]=""" & Right(Sheets(I).Name, 3) & """"
            Zone.AdvancedFilter _
                    Action:=xlFilterCopy, _
                    CriteriaRange:=.Range("J1:J2"), _
                    CopyToRange:=.Range("A1:G1"), _
                    Unique:=False
            .[J2].ClearContents
        End With
    Next I

    Set Zone = Nothing
    Set ws = Nothing

End Sub

Merci pour vos réponses, mais elles ne fonctionnent pas, donc voici le fichier pour que ce soit plus compréhensible.

Dans la feuille "données" :

  • J'ai une liste de noms en colonne X.
  • Je leur ai attribué un code à 3 lettres. (en Y).

depuis un autre fichier Excel je copie les colonne A,C,D,E,F,G pour remplir ma feuille "données"

Automatiquement la colonne B est complétée en fonction du noms de la colonne D.

Lorsque je clic sur "Extraction" (actuellement les colonnes A,B,C.D,E sont copiées sur chaque feuille correspondante.

je souhaite copier aussi les colonnes F et G . (Age et Date op)

Bonjour,

Sub Extraction()
Application.ScreenUpdating = False
Dim Ws1 As Worksheet
Dim Zone As Range
Set Ws1 = Sheets("données")
Set Zone = Ws1.Range("A1:G" & [A65000].End(xlUp).Row)
For I = 2 To Sheets.Count
    With Sheets(I)
        .[H2].FormulaR1C1 = "=données!RC[-6]=""" & Right(Sheets(I).Name, 3) & """"
        Zone.AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=.Range("H1:H2"), CopyToRange:=.Range("A1:G1"), Unique:=False
        .[H2].ClearContents
    End With
Next I
Application.ScreenUpdating = True
End Sub

Les modifications sont surlignées. J'ai évité de toucher à la mise en forme pour ne pas provoquer d'erreur.

pour la conception. Je note l'idée...

Cordialement.

Merci beaucoup, c'est génial.

je vais pouvoir comparer les deux codes et ainsi mieux comprendre leur signification.

Encore merci.

lol.

Bonjour,

Bonjour MFerrand

Les 2 procédures sont identiques, sinon que j'ai omis de revoir la formule.

Cdlt.

Rechercher des sujets similaires à "comprehension code bva"