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

Extraire sur une liste suivant un critere

5 réponses
Avatar
magic-dd
Bonsoir =E0 tous,

n'aarivant pas =E0 ce que je souhaite faire, je fais donc appel =E0 la
communaut=E9.

j'ai une liste avec des noms et des activites

j'aimerais extraire de la liste les noms suivant un critere ( le
chiffre 4)

donc tout ceux qui ont 4 seront inscrit dans une nouvelle plage de
cellule

je vous joins un fichier xls, qui sera plus simple =E0 comprendre

merci d'avance

http://cjoint.com/?ADoxbANieNC

5 réponses

Avatar
MichD
Bonjour,

Tu peux utiliser un filtre automatique.

Colles ceci dans un module du fichier que tu as publié et
observe le résultat :

'-------------------------------------------
Sub test()

Dim Rg As Range, A As Integer, Sh As Worksheet

Set Sh = Worksheets("Feuil2")

Application.ScreenUpdating = False
With Sh
With .Range("B2:I8")
A = 2
'Pour chacune des colonnes, tu appliques un filtre auto.
For Each c In Array(6, 7, 8)
With .Columns(c)
.AutoFilter field:=1, Criteria1:=4
.SpecialCells(xlCellTypeVisible).Copy Sh.Cells(20, A)
A = A + 3
.AutoFilter
End With
Next
End With
End With
Application.ScreenUpdating = True
End Sub
'-------------------------------------------



MichD
--------------------------------------------
"magic-dd" a écrit dans le message de groupe de discussion :


Bonsoir à tous,

n'aarivant pas à ce que je souhaite faire, je fais donc appel à la
communauté.

j'ai une liste avec des noms et des activites

j'aimerais extraire de la liste les noms suivant un critere ( le
chiffre 4)

donc tout ceux qui ont 4 seront inscrit dans une nouvelle plage de
cellule

je vous joins un fichier xls, qui sera plus simple à comprendre

merci d'avance

http://cjoint.com/?ADoxbANieNC
Avatar
MichD
Bonjour,

Utilise cette macro pour obtenir ce que tu désires dans le fichier publié.


Sub test()

Dim Rg As Range, A As Integer, Sh As Worksheet

Set Sh = Worksheets("Feuil2")

On Error Resume Next
Application.ScreenUpdating = False
With Sh
Set Rg = .Range("B2:I8")
A = 2
'Pour chacune des colonnes, tu appliques un filtre auto.
For Each c In Array(6, 7, 8)
With Rg
.AutoFilter field:=c, Criteria1:=4
.Columns(1).SpecialCells(xlCellTypeVisible).Copy Sh.Cells(20, A)
Sh.Cells(20, A) = .Item(1, c)
End With
A = A + 3
.ShowAllData
Next
Rg.AutoFilter
End With
Application.ScreenUpdating = True
End Sub


MichD
--------------------------------------------
Avatar
magic-dd
bonjour
merci pour cette reponse, quelle joie au reveil

maintennt je vais etre ch*** mais est il possible de mettre 2 ou 3
criteres

merci de m'expliquer la macro car je ne maitrise pas trop ces filtres

bonne journée

On 14 avr, 23:54, "MichD" wrote:
Bonjour,

Utilise cette macro pour obtenir ce que tu désires dans le fichier publ ié.

Sub test()

Dim Rg As Range, A As Integer, Sh As Worksheet

Set Sh = Worksheets("Feuil2")

On Error Resume Next
Application.ScreenUpdating = False
With Sh
    Set Rg = .Range("B2:I8")
        A = 2
        'Pour chacune des colonnes, tu appliques un filtre auto.
    For Each c In Array(6, 7, 8)
        With Rg
            .AutoFilter field:=c, Criteria1:=4
            .Columns(1).SpecialCells(xlCellTypeVisible).Copy Sh.Cells(20, A)
            Sh.Cells(20, A) = .Item(1, c)
        End With
        A = A + 3
        .ShowAllData
    Next
    Rg.AutoFilter
End With
Application.ScreenUpdating = True
End Sub

MichD
--------------------------------------------
Avatar
MichD
La macro fait simplement un filtre automatique à tour de rôle sur chaque
colonne des 3 sports utilisant un critère : = 4

Avec un filtre auto, tu es limité à 2 critères... sinon tu dois utiliser le filtre élaboré.
Regarde dans l'aide VBA, tu places le curseur sur autofilter et tu appuies sur F1.

Ceci "For Each c In Array(6, 7, 8)" détermine la colonne de la plage définie par la
variable Rg sur laquelle s'exécute le filtre.

MichD
--------------------------------------------
"magic-dd" a écrit dans le message de groupe de discussion :


bonjour
merci pour cette reponse, quelle joie au reveil

maintennt je vais etre ch*** mais est il possible de mettre 2 ou 3
criteres

merci de m'expliquer la macro car je ne maitrise pas trop ces filtres

bonne journée

On 14 avr, 23:54, "MichD" wrote:
Bonjour,

Utilise cette macro pour obtenir ce que tu désires dans le fichier publié.

Sub test()

Dim Rg As Range, A As Integer, Sh As Worksheet

Set Sh = Worksheets("Feuil2")

On Error Resume Next
Application.ScreenUpdating = False
With Sh
Set Rg = .Range("B2:I8")
A = 2
'Pour chacune des colonnes, tu appliques un filtre auto.
For Each c In Array(6, 7, 8)
With Rg
.AutoFilter field:=c, Criteria1:=4
.Columns(1).SpecialCells(xlCellTypeVisible).Copy Sh.Cells(20, A)
Sh.Cells(20, A) = .Item(1, c)
End With
A = A + 3
.ShowAllData
Next
Rg.AutoFilter
End With
Application.ScreenUpdating = True
End Sub

MichD
--------------------------------------------
Avatar
magic-dd
merci michD

je vais rester sur mon seul critere en faisant jouer par rapport à une
cellule

merci pour tout et bon week end