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

Feuille filtrant d'autres feuilles.

14 réponses
Avatar
Richard_35
Bonjour à tous,

J'ai un classeur Excel comportant plusieurs feuilles.
Je souhaiterais créer une feuille supplémentaire qui listerait des lignes
complètes de toutes les autres feuilles, ces lignes étant filtrées par une
colonne particulière (présente dans toutes les feuilles).

Je ne sais pas si je suis bien clair...

Merci de votre aide,
Richard.

10 réponses

1 2
Avatar
Richard_35
(re) bonjour à tous,

Avec un exemple, ce sera plus compréhensible, je pense.

Un classeur C, qui contient 3 feuilles : F1, F2 et F3. Toutes ces feuilles
comportent les mêmes colonnes.

F1:
1ère ligne : xx1 yy1 zz1
2ème ligne : xx2 yy2
3ème ligne : xx3 yy3 zz3

F2:
1ère ligne : aa1 bb1
2ème ligne : aa2 bb2 cc2
3ème ligne : aa3 bb3
4ème ligne : aa4 bb4 cc4

F3:
1ère ligne : mm1 nn1 oo1
2ème ligne : mm2 nn2

Je souhaiterais créer une feuille F4 qui listerait les lignes de F1, F2 et
F3 dont la 3ème colonne est vide. Donc, dans cet exemple, le résultat devrait
être :

F4:
1ère ligne : xx2 yy2
2ème ligne : aa1 bb1
3ème ligne : aa3 bb3
4ème ligne : mm2 nn2

J'espère que c'est plus clair...

Merci d'avance de vos conseils,
Richard.


"Richard_35" a écrit :

Bonjour à tous,

J'ai un classeur Excel comportant plusieurs feuilles.
Je souhaiterais créer une feuille supplémentaire qui listerait des lignes
complètes de toutes les autres feuilles, ces lignes étant filtrées par une
colonne particulière (présente dans toutes les feuilles).

Je ne sais pas si je suis bien clair...

Merci de votre aide,
Richard.


Avatar
Francois L
Richard_35 a écrit :

Bonjour,

L'ordre des lignes en F4 obéit-il à une règle ?

--
François L


(re) bonjour à tous,

Avec un exemple, ce sera plus compréhensible, je pense.

Un classeur C, qui contient 3 feuilles : F1, F2 et F3. Toutes ces feuilles
comportent les mêmes colonnes.

F1:
1ère ligne : xx1 yy1 zz1
2ème ligne : xx2 yy2
3ème ligne : xx3 yy3 zz3

F2:
1ère ligne : aa1 bb1
2ème ligne : aa2 bb2 cc2
3ème ligne : aa3 bb3
4ème ligne : aa4 bb4 cc4

F3:
1ère ligne : mm1 nn1 oo1
2ème ligne : mm2 nn2

Je souhaiterais créer une feuille F4 qui listerait les lignes de F1, F2 et
F3 dont la 3ème colonne est vide. Donc, dans cet exemple, le résultat devrait
être :

F4:
1ère ligne : xx2 yy2
2ème ligne : aa1 bb1
3ème ligne : aa3 bb3
4ème ligne : mm2 nn2

J'espère que c'est plus clair...

Merci d'avance de vos conseils,
Richard.


"Richard_35" a écrit :

Bonjour à tous,

J'ai un classeur Excel comportant plusieurs feuilles.
Je souhaiterais créer une feuille supplémentaire qui listerait des lignes
complètes de toutes les autres feuilles, ces lignes étant filtrées par une
colonne particulière (présente dans toutes les feuilles).

Je ne sais pas si je suis bien clair...

Merci de votre aide,
Richard.




Avatar
CAP2
Salut,

Artisanal, mais a priori efficace (seules contraintes, tes feuilles doivent
se nommer F1, F2, F3 et F4, sinon, tu dois ajuster, et j'ai pris pour
principe que chaque feuille avait son contenu à partir de A1 avec une ligne
d'en-tête avec A, B et C comme libellés) :

Sub Filtre()
Dim i As Byte

Sheets("F4").Select
Cells.Select
Selection.ClearContents

For i = 1 To 3

Worksheets("F" & i).Activate

Range("A1").Select

Selection.AutoFilter Field:=3, Criteria1:="="
Selection.CurrentRegion.Select
Selection.Copy

Sheets("F4").Select

Range("A65536").End(xlUp).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Sheets("F" & i).Select
Selection.AutoFilter
Range("A1").Select

Next

Sheets("F4").Select
Range("A65536").End(xlUp).Select

Do

If Selection.Value = "A" Then
Selection.EntireRow.Delete
Else: Selection.Offset(-1, 0).Select
End If

Loop Until Selection.Row = 1

End Sub

Ca marche ?

CAP2

"Richard_35" a écrit dans le message
de news:
(re) bonjour à tous,

Avec un exemple, ce sera plus compréhensible, je pense.

Un classeur C, qui contient 3 feuilles : F1, F2 et F3. Toutes ces feuilles
comportent les mêmes colonnes.

F1:
1ère ligne : xx1 yy1 zz1
2ème ligne : xx2 yy2
3ème ligne : xx3 yy3 zz3

F2:
1ère ligne : aa1 bb1
2ème ligne : aa2 bb2 cc2
3ème ligne : aa3 bb3
4ème ligne : aa4 bb4 cc4

F3:
1ère ligne : mm1 nn1 oo1
2ème ligne : mm2 nn2

Je souhaiterais créer une feuille F4 qui listerait les lignes de F1, F2 et
F3 dont la 3ème colonne est vide. Donc, dans cet exemple, le résultat
devrait
être :

F4:
1ère ligne : xx2 yy2
2ème ligne : aa1 bb1
3ème ligne : aa3 bb3
4ème ligne : mm2 nn2

J'espère que c'est plus clair...

Merci d'avance de vos conseils,
Richard.


"Richard_35" a écrit :

Bonjour à tous,

J'ai un classeur Excel comportant plusieurs feuilles.
Je souhaiterais créer une feuille supplémentaire qui listerait des lignes
complètes de toutes les autres feuilles, ces lignes étant filtrées par
une
colonne particulière (présente dans toutes les feuilles).

Je ne sais pas si je suis bien clair...

Merci de votre aide,
Richard.




Avatar
Richard_35
Bonjour François,

Non, l'ordre des lignes de la feuille F4 a peu d'importance car je pourrai
re-trier après coup. Je pense que, en final, ce sera l'ordre de "scannage"
des lignes sélectionnées des feuilles F1 puis F2 puis F3.

Merci de tes conseils,
Richard.

"Francois L" a écrit :

Richard_35 a écrit :

Bonjour,

L'ordre des lignes en F4 obéit-il à une règle ?

--
François L


> (re) bonjour à tous,
>
> Avec un exemple, ce sera plus compréhensible, je pense.
>
> Un classeur C, qui contient 3 feuilles : F1, F2 et F3. Toutes ces feuilles
> comportent les mêmes colonnes.
>
> F1:
> 1ère ligne : xx1 yy1 zz1
> 2ème ligne : xx2 yy2
> 3ème ligne : xx3 yy3 zz3
>
> F2:
> 1ère ligne : aa1 bb1
> 2ème ligne : aa2 bb2 cc2
> 3ème ligne : aa3 bb3
> 4ème ligne : aa4 bb4 cc4
>
> F3:
> 1ère ligne : mm1 nn1 oo1
> 2ème ligne : mm2 nn2
>
> Je souhaiterais créer une feuille F4 qui listerait les lignes de F1, F2 et
> F3 dont la 3ème colonne est vide. Donc, dans cet exemple, le résultat devrait
> être :
>
> F4:
> 1ère ligne : xx2 yy2
> 2ème ligne : aa1 bb1
> 3ème ligne : aa3 bb3
> 4ème ligne : mm2 nn2
>
> J'espère que c'est plus clair...
>
> Merci d'avance de vos conseils,
> Richard.
>
>
> "Richard_35" a écrit :
>
>> Bonjour à tous,
>>
>> J'ai un classeur Excel comportant plusieurs feuilles.
>> Je souhaiterais créer une feuille supplémentaire qui listerait des lignes
>> complètes de toutes les autres feuilles, ces lignes étant filtrées par une
>> colonne particulière (présente dans toutes les feuilles).
>>
>> Je ne sais pas si je suis bien clair...
>>
>> Merci de votre aide,
>> Richard.



Avatar
Richard_35
Bonjour CAP2,

Il se plante à l'instruction :
Range("A1").Select
avec une fenêtre Windows qui indique "400" (je ne sais pas à quoi cela
correspond : l'aide renvoie sur une fenêtre vide).

Merci de tes conseils,
Richard.

"CAP2" a écrit :

Salut,

Artisanal, mais a priori efficace (seules contraintes, tes feuilles doivent
se nommer F1, F2, F3 et F4, sinon, tu dois ajuster, et j'ai pris pour
principe que chaque feuille avait son contenu à partir de A1 avec une ligne
d'en-tête avec A, B et C comme libellés) :

Sub Filtre()
Dim i As Byte

Sheets("F4").Select
Cells.Select
Selection.ClearContents

For i = 1 To 3

Worksheets("F" & i).Activate

Range("A1").Select

Selection.AutoFilter Field:=3, Criteria1:="="
Selection.CurrentRegion.Select
Selection.Copy

Sheets("F4").Select

Range("A65536").End(xlUp).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Sheets("F" & i).Select
Selection.AutoFilter
Range("A1").Select

Next

Sheets("F4").Select
Range("A65536").End(xlUp).Select

Do

If Selection.Value = "A" Then
Selection.EntireRow.Delete
Else: Selection.Offset(-1, 0).Select
End If

Loop Until Selection.Row = 1

End Sub

Ca marche ?

CAP2

"Richard_35" a écrit dans le message
de news:
> (re) bonjour à tous,
>
> Avec un exemple, ce sera plus compréhensible, je pense.
>
> Un classeur C, qui contient 3 feuilles : F1, F2 et F3. Toutes ces feuilles
> comportent les mêmes colonnes.
>
> F1:
> 1ère ligne : xx1 yy1 zz1
> 2ème ligne : xx2 yy2
> 3ème ligne : xx3 yy3 zz3
>
> F2:
> 1ère ligne : aa1 bb1
> 2ème ligne : aa2 bb2 cc2
> 3ème ligne : aa3 bb3
> 4ème ligne : aa4 bb4 cc4
>
> F3:
> 1ère ligne : mm1 nn1 oo1
> 2ème ligne : mm2 nn2
>
> Je souhaiterais créer une feuille F4 qui listerait les lignes de F1, F2 et
> F3 dont la 3ème colonne est vide. Donc, dans cet exemple, le résultat
> devrait
> être :
>
> F4:
> 1ère ligne : xx2 yy2
> 2ème ligne : aa1 bb1
> 3ème ligne : aa3 bb3
> 4ème ligne : mm2 nn2
>
> J'espère que c'est plus clair...
>
> Merci d'avance de vos conseils,
> Richard.
>
>
> "Richard_35" a écrit :
>
>> Bonjour à tous,
>>
>> J'ai un classeur Excel comportant plusieurs feuilles.
>> Je souhaiterais créer une feuille supplémentaire qui listerait des lignes
>> complètes de toutes les autres feuilles, ces lignes étant filtrées par
>> une
>> colonne particulière (présente dans toutes les feuilles).
>>
>> Je ne sais pas si je suis bien clair...
>>
>> Merci de votre aide,
>> Richard.





Avatar
Richard_35
Un fichier de test à cette adresse :
http://cjoint.com/?iupLDr78ED

"Richard_35" a écrit :

Bonjour CAP2,

Il se plante à l'instruction :
Range("A1").Select
avec une fenêtre Windows qui indique "400" (je ne sais pas à quoi cela
correspond : l'aide renvoie sur une fenêtre vide).

Merci de tes conseils,
Richard.

"CAP2" a écrit :

> Salut,
>
> Artisanal, mais a priori efficace (seules contraintes, tes feuilles doivent
> se nommer F1, F2, F3 et F4, sinon, tu dois ajuster, et j'ai pris pour
> principe que chaque feuille avait son contenu à partir de A1 avec une ligne
> d'en-tête avec A, B et C comme libellés) :
>
> Sub Filtre()
> Dim i As Byte
>
> Sheets("F4").Select
> Cells.Select
> Selection.ClearContents
>
> For i = 1 To 3
>
> Worksheets("F" & i).Activate
>
> Range("A1").Select
>
> Selection.AutoFilter Field:=3, Criteria1:="="
> Selection.CurrentRegion.Select
> Selection.Copy
>
> Sheets("F4").Select
>
> Range("A65536").End(xlUp).Select
> ActiveSheet.Paste
> Application.CutCopyMode = False
>
> Sheets("F" & i).Select
> Selection.AutoFilter
> Range("A1").Select
>
> Next
>
> Sheets("F4").Select
> Range("A65536").End(xlUp).Select
>
> Do
>
> If Selection.Value = "A" Then
> Selection.EntireRow.Delete
> Else: Selection.Offset(-1, 0).Select
> End If
>
> Loop Until Selection.Row = 1
>
> End Sub
>
> Ca marche ?
>
> CAP2
>
> "Richard_35" a écrit dans le message
> de news:
> > (re) bonjour à tous,
> >
> > Avec un exemple, ce sera plus compréhensible, je pense.
> >
> > Un classeur C, qui contient 3 feuilles : F1, F2 et F3. Toutes ces feuilles
> > comportent les mêmes colonnes.
> >
> > F1:
> > 1ère ligne : xx1 yy1 zz1
> > 2ème ligne : xx2 yy2
> > 3ème ligne : xx3 yy3 zz3
> >
> > F2:
> > 1ère ligne : aa1 bb1
> > 2ème ligne : aa2 bb2 cc2
> > 3ème ligne : aa3 bb3
> > 4ème ligne : aa4 bb4 cc4
> >
> > F3:
> > 1ère ligne : mm1 nn1 oo1
> > 2ème ligne : mm2 nn2
> >
> > Je souhaiterais créer une feuille F4 qui listerait les lignes de F1, F2 et
> > F3 dont la 3ème colonne est vide. Donc, dans cet exemple, le résultat
> > devrait
> > être :
> >
> > F4:
> > 1ère ligne : xx2 yy2
> > 2ème ligne : aa1 bb1
> > 3ème ligne : aa3 bb3
> > 4ème ligne : mm2 nn2
> >
> > J'espère que c'est plus clair...
> >
> > Merci d'avance de vos conseils,
> > Richard.
> >
> >
> > "Richard_35" a écrit :
> >
> >> Bonjour à tous,
> >>
> >> J'ai un classeur Excel comportant plusieurs feuilles.
> >> Je souhaiterais créer une feuille supplémentaire qui listerait des lignes
> >> complètes de toutes les autres feuilles, ces lignes étant filtrées par
> >> une
> >> colonne particulière (présente dans toutes les feuilles).
> >>
> >> Je ne sais pas si je suis bien clair...
> >>
> >> Merci de votre aide,
> >> Richard.
>
>
>


Avatar
Jacky
Bonjour,
Ceci peut-être
'---------------------
Sub jj()
[a:a].Clear
Dim x As Long
Dim sh As Worksheet
Application.ScreenUpdating = False
x = 1
For Each sh In ActiveWorkbook.Worksheets
If sh.Name <> "Recap" Then
For Each c In sh.Range("c1:c" & sh.[a65536].End(3).Row)
If c = "" Then
Cells(x, 1) = c.Offset(0, -2)
x = x + 1
End If
Next
End If
Next
End Sub
'----------------------
Voir ici
http://cjoint.com/?iupUjW84OP

--
Salutations
JJ


"Richard_35" a écrit dans le message
de news:
Bonjour à tous,

J'ai un classeur Excel comportant plusieurs feuilles.
Je souhaiterais créer une feuille supplémentaire qui listerait des lignes
complètes de toutes les autres feuilles, ces lignes étant filtrées par une
colonne particulière (présente dans toutes les feuilles).

Je ne sais pas si je suis bien clair...

Merci de votre aide,
Richard.


Avatar
CAP2
Salut,

bon, déjà remplace mon 1er code par celui-ci (y'avait un pb dans le 1er) :

Sub Filtre()
Dim i As Byte

Sheets("F4").Select
Cells.Select
Selection.ClearContents

For i = 1 To 3

Worksheets("F" & i).Activate

Range("A1").Select

Selection.AutoFilter Field:=3, Criteria1:="="
Selection.CurrentRegion.Select
Selection.Copy

Sheets("F4").Select

Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Sheets("F" & i).Select
Selection.AutoFilter
Range("A1").Select

Next

Sheets("F4").Select
Range("A1").EntireRow.Delete
Range("A65536").End(xlUp).Select

Do

If Selection.Value = "A" Then
Selection.EntireRow.Delete
Else: Selection.Offset(-1, 0).Select
End If

Loop Until Selection.Row = 1

End Sub

Concernant le plantage, ça plante sur quel Range("A1").Select (y'en a
plusieurs dans le code)

CAP2

"Richard_35" a écrit dans le message
de news:
Bonjour CAP2,

Il se plante à l'instruction :
Range("A1").Select
avec une fenêtre Windows qui indique "400" (je ne sais pas à quoi cela
correspond : l'aide renvoie sur une fenêtre vide).

Merci de tes conseils,
Richard.

"CAP2" a écrit :

Salut,

Artisanal, mais a priori efficace (seules contraintes, tes feuilles
doivent
se nommer F1, F2, F3 et F4, sinon, tu dois ajuster, et j'ai pris pour
principe que chaque feuille avait son contenu à partir de A1 avec une
ligne
d'en-tête avec A, B et C comme libellés) :

Sub Filtre()
Dim i As Byte

Sheets("F4").Select
Cells.Select
Selection.ClearContents

For i = 1 To 3

Worksheets("F" & i).Activate

Range("A1").Select

Selection.AutoFilter Field:=3, Criteria1:="="
Selection.CurrentRegion.Select
Selection.Copy

Sheets("F4").Select

Range("A65536").End(xlUp).Select
ActiveSheet.Paste
Application.CutCopyMode = False

Sheets("F" & i).Select
Selection.AutoFilter
Range("A1").Select

Next

Sheets("F4").Select
Range("A65536").End(xlUp).Select

Do

If Selection.Value = "A" Then
Selection.EntireRow.Delete
Else: Selection.Offset(-1, 0).Select
End If

Loop Until Selection.Row = 1

End Sub

Ca marche ?

CAP2

"Richard_35" a écrit dans le
message
de news:
> (re) bonjour à tous,
>
> Avec un exemple, ce sera plus compréhensible, je pense.
>
> Un classeur C, qui contient 3 feuilles : F1, F2 et F3. Toutes ces
> feuilles
> comportent les mêmes colonnes.
>
> F1:
> 1ère ligne : xx1 yy1 zz1
> 2ème ligne : xx2 yy2
> 3ème ligne : xx3 yy3 zz3
>
> F2:
> 1ère ligne : aa1 bb1
> 2ème ligne : aa2 bb2 cc2
> 3ème ligne : aa3 bb3
> 4ème ligne : aa4 bb4 cc4
>
> F3:
> 1ère ligne : mm1 nn1 oo1
> 2ème ligne : mm2 nn2
>
> Je souhaiterais créer une feuille F4 qui listerait les lignes de F1, F2
> et
> F3 dont la 3ème colonne est vide. Donc, dans cet exemple, le résultat
> devrait
> être :
>
> F4:
> 1ère ligne : xx2 yy2
> 2ème ligne : aa1 bb1
> 3ème ligne : aa3 bb3
> 4ème ligne : mm2 nn2
>
> J'espère que c'est plus clair...
>
> Merci d'avance de vos conseils,
> Richard.
>
>
> "Richard_35" a écrit :
>
>> Bonjour à tous,
>>
>> J'ai un classeur Excel comportant plusieurs feuilles.
>> Je souhaiterais créer une feuille supplémentaire qui listerait des
>> lignes
>> complètes de toutes les autres feuilles, ces lignes étant filtrées par
>> une
>> colonne particulière (présente dans toutes les feuilles).
>>
>> Je ne sais pas si je suis bien clair...
>>
>> Merci de votre aide,
>> Richard.







Avatar
CAP2
Et pense bien à mettre des en-têtes A, B et C à tes colonnes dans les 3
feuilles !

CAP2
Avatar
Richard_35
Bonjour Jacky,

Merci pour ta réponse.

Il y a de l'idée, mais, seule la première colonne est remplie dans la
feuille "Récap" : il me faudrait la ligne complète sélectionnée de la feuille
traitée.

A noter que je ne maîtrise pas VB.

Merci d'avance,
Richard.

"Jacky" a écrit :

Bonjour,
Ceci peut-être
'---------------------
Sub jj()
[a:a].Clear
Dim x As Long
Dim sh As Worksheet
Application.ScreenUpdating = False
x = 1
For Each sh In ActiveWorkbook.Worksheets
If sh.Name <> "Recap" Then
For Each c In sh.Range("c1:c" & sh.[a65536].End(3).Row)
If c = "" Then
Cells(x, 1) = c.Offset(0, -2)
x = x + 1
End If
Next
End If
Next
End Sub
'----------------------
Voir ici
http://cjoint.com/?iupUjW84OP

--
Salutations
JJ


"Richard_35" a écrit dans le message
de news:
> Bonjour à tous,
>
> J'ai un classeur Excel comportant plusieurs feuilles.
> Je souhaiterais créer une feuille supplémentaire qui listerait des lignes
> complètes de toutes les autres feuilles, ces lignes étant filtrées par une
> colonne particulière (présente dans toutes les feuilles).
>
> Je ne sais pas si je suis bien clair...
>
> Merci de votre aide,
> Richard.





1 2