Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro copie de lignes sélective

2 réponses
Avatar
Françoise
Bonjour à tous,

je veux faire une macro qui
dans la feuille "TOUS", met des filtres automatiques
sélectionne la colonne "E"
trie les valeurs (numériques sur 3 positions "001" "002" etc
prend la PREMIERE LIGNE de cette valeur qui correspond au 1er prix des
articles de cette valeur
copie toute la ligne
dans la feuille "UNITAIRE" sur la ligne 2
et ainsi pour toutes les valeurs triées en colonne "E" sur les lignes
suivantes de la feuille "UNITAIRE"
voici ce que j'ai commencé, mais je sèche pour l'automatisation évidemment !
--------------------------------
Sub COPIE_LIGNE()

Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:="001"
Rows("2:2").Select
Selection.Copy
Sheets("UNITAIRE").Select
ActiveSheet.Paste
Sheets("TOUS").Select
Application.CutCopyMode = False
Selection.AutoFilter Field:=5, Criteria1:="002"
Rows("4:4").Select
Selection.Copy
Sheets("UNITAIRE").Select
Rows("3:3").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("TOUS").Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A2").Select
End Sub
------------------------------------------------
un petit coup de main serait le bienvenu !
d'avance merci
Françoise

2 réponses

Avatar
JB
Bonjour,


Solution Filtre élaboré:

Critère:â<>E3 en G2

[A1].Sort Key1:=Range("E2"), Order1:=xlAscending,
Key2:=Range("D2"), _
Order2:=xlDescending, Header:=xlGuess
[A1:E1000].AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=[G1:G2], _
CopyToRange:=Sheets("unitaire").[A1:E1]

Solution tradi:

[A1].CurrentRegion.Sort Key1:=[E2], Order1:=xlAscending, Key2:=[D2],
Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:úlse
Set sh = Sheets("unitaire")
[A1].CurrentRegion.Copy sh.[A1]
i = 2
Do While sh.Cells(i, 5) <> ""
m = sh.Cells(i, 5)
i = i + 1
Do While sh.Cells(i, 5) = m
sh.Rows(i).Delete
Loop
Loop

http://cjoint.com/?ijrot3NgCS

JB


On 9 août, 16:18, Françoise
wrote:
Bonjour à tous,

je veux faire une macro qui
dans la feuille "TOUS", met des filtres automatiques
sélectionne la colonne "E"
trie les valeurs (numériques sur 3 positions "001" "002" etc
prend la PREMIERE LIGNE de cette valeur qui correspond au 1er prix des
articles de cette valeur
copie toute la ligne
dans la feuille "UNITAIRE" sur la ligne 2
et ainsi pour toutes les valeurs triées en colonne "E" sur les lignes
suivantes de la feuille "UNITAIRE"
voici ce que j'ai commencé, mais je sèche pour l'automatisation évi demment !
--------------------------------
Sub COPIE_LIGNE()

Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:="001"
Rows("2:2").Select
Selection.Copy
Sheets("UNITAIRE").Select
ActiveSheet.Paste
Sheets("TOUS").Select
Application.CutCopyMode = False
Selection.AutoFilter Field:=5, Criteria1:="002"
Rows("4:4").Select
Selection.Copy
Sheets("UNITAIRE").Select
Rows("3:3").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("TOUS").Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A2").Select
End Sub
------------------------------------------------
un petit coup de main serait le bienvenu !
d'avance merci
Françoise


Avatar
Françoise
ça marche parfaitement, je suis stupéfaite de tes connaissances et éblouie
par les possiblités d'excel !
encore merci pour ton aide précieuse
Françoise


Bonjour,


Solution Filtre élaboré:

Critère:â<>E3 en G2

[A1].Sort Key1:=Range("E2"), Order1:=xlAscending,
Key2:=Range("D2"), _
Order2:=xlDescending, Header:=xlGuess
[A1:E1000].AdvancedFilter Action:=xlFilterCopy,
CriteriaRange:=[G1:G2], _
CopyToRange:=Sheets("unitaire").[A1:E1]

Solution tradi:

[A1].CurrentRegion.Sort Key1:=[E2], Order1:=xlAscending, Key2:=[D2],
Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _
:úlse
Set sh = Sheets("unitaire")
[A1].CurrentRegion.Copy sh.[A1]
i = 2
Do While sh.Cells(i, 5) <> ""
m = sh.Cells(i, 5)
i = i + 1
Do While sh.Cells(i, 5) = m
sh.Rows(i).Delete
Loop
Loop

http://cjoint.com/?ijrot3NgCS

JB


On 9 août, 16:18, Françoise
wrote:
Bonjour à tous,

je veux faire une macro qui
dans la feuille "TOUS", met des filtres automatiques
sélectionne la colonne "E"
trie les valeurs (numériques sur 3 positions "001" "002" etc
prend la PREMIERE LIGNE de cette valeur qui correspond au 1er prix des
articles de cette valeur
copie toute la ligne
dans la feuille "UNITAIRE" sur la ligne 2
et ainsi pour toutes les valeurs triées en colonne "E" sur les lignes
suivantes de la feuille "UNITAIRE"
voici ce que j'ai commencé, mais je sèche pour l'automatisation évidemment !
--------------------------------
Sub COPIE_LIGNE()

Cells.Select
Selection.AutoFilter
Selection.AutoFilter Field:=5, Criteria1:="001"
Rows("2:2").Select
Selection.Copy
Sheets("UNITAIRE").Select
ActiveSheet.Paste
Sheets("TOUS").Select
Application.CutCopyMode = False
Selection.AutoFilter Field:=5, Criteria1:="002"
Rows("4:4").Select
Selection.Copy
Sheets("UNITAIRE").Select
Rows("3:3").Select
ActiveSheet.Paste
Range("A1").Select
Sheets("TOUS").Select
Application.CutCopyMode = False
Selection.AutoFilter
Range("A2").Select
End Sub
------------------------------------------------
un petit coup de main serait le bienvenu !
d'avance merci
Françoise