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.

4 réponses

1 2
Avatar
Jacky
Re...
..feuille "Récap" : il me faudrait la ligne complète sélectionnée de la
feuille


traitée


Ok!
'------------
Sub jj()
Cells.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
sh.Rows(c.Row).Copy
Rows(x).PasteSpecial Paste:=xlPasteValues
x = x + 1
End If
Next
End If
Next
End Sub
---------
Voir ici
http://cjoint.com/?iur4rnfYvx

Salutations
JJ


"Richard_35" a écrit dans le message
de news:
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.







Avatar
Richard_35
Bonjour Jacky,

Merci beaucoup : c'est exactement ça !

Par contre, je croyais pouvoir m'en sortir seul en remplaçant, ici ou là,
des variables par d'autres, mais mes compétences sont vraiment limitées en
VB... je passe un temps fou avec des MsgBox partout pour comprendre le
principe...

J'essaie de dépanner un ami qui est embauché comptable. Puis-je abuser de
ton savoir VB pour me (lui) faire, carrément, le boulot ?... Nous t'en
serions reconnaissants.

Voici le fichier Excel à traiter :
http://cjoint.com/?ivmdc6Smed

Le but est de copier, dans la feuille Recap, toutes les lignes (complètes)
des feuilles commençant par "CESSION" dont le n° de facture est renseigné
(colonne N°fact<>"") et non payé (colonne Payé="")

Merci d'avance, si tu peux.
Richard.

"Jacky" a écrit :

Re...
>> ..feuille "Récap" : il me faudrait la ligne complète sélectionnée de la
>> feuille
> traitée
Ok!
'------------
Sub jj()
Cells.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
sh.Rows(c.Row).Copy
Rows(x).PasteSpecial Paste:=xlPasteValues
x = x + 1
End If
Next
End If
Next
End Sub
---------
Voir ici
http://cjoint.com/?iur4rnfYvx

Salutations
JJ


"Richard_35" a écrit dans le message
de news:
> 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.
>>
>>
>>





Avatar
Jacky
Re...
Puis-je abuser de
ton savoir VB pour me (lui) faire, carrément, le boulot ?... Nous t'en
serions reconnaissants.



Ma bonté me perdra....

A condition que la plage des données des feuilles "CESSION...." soit
toujours A15:G53
Sinon adapter ' For Each c In sh.Range("b15:b53")

'----------------
Sub jj()
[a2:g65536].ClearContents
Dim x As Long
Dim sh As Worksheet
Application.ScreenUpdating = False
x = 2
For Each sh In ActiveWorkbook.Worksheets
If UCase(Left(sh.Name, 7)) = "CESSION" Then
For Each c In sh.Range("b15:b53")
If c <> "" And c.Offset(0, 5) = "" Then
sh.Rows(c.Row).Copy Rows(x)
x = x + 1
End If
Next
End If
Next
Application.CutCopyMode = False
[a1].Select
End Sub
'----------------
Voir ici le fichier modifié
http://cjoint.com/?ivncnSozke

--
Salutations
JJ


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

Merci beaucoup : c'est exactement ça !

Par contre, je croyais pouvoir m'en sortir seul en remplaçant, ici ou là,
des variables par d'autres, mais mes compétences sont vraiment limitées en
VB... je passe un temps fou avec des MsgBox partout pour comprendre le
principe...

J'essaie de dépanner un ami qui est embauché comptable. Puis-je abuser de
ton savoir VB pour me (lui) faire, carrément, le boulot ?... Nous t'en
serions reconnaissants.

Voici le fichier Excel à traiter :
http://cjoint.com/?ivmdc6Smed

Le but est de copier, dans la feuille Recap, toutes les lignes (complètes)
des feuilles commençant par "CESSION" dont le n° de facture est renseigné
(colonne N°fact<>"") et non payé (colonne Payé="")

Merci d'avance, si tu peux.
Richard.

"Jacky" a écrit :

Re...
>> ..feuille "Récap" : il me faudrait la ligne complète sélectionnée de
>> la
>> feuille
> traitée
Ok!
'------------
Sub jj()
Cells.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
sh.Rows(c.Row).Copy
Rows(x).PasteSpecial Paste:=xlPasteValues
x = x + 1
End If
Next
End If
Next
End Sub
---------
Voir ici
http://cjoint.com/?iur4rnfYvx

Salutations
JJ


"Richard_35" a écrit dans le
message
de news:
> 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.
>>
>>
>>







Avatar
Richard_35
Bonjour Jacky,

Tout baigne.

Merci encore,
Richard.

"Jacky" a écrit :

Re...
> Puis-je abuser de
> ton savoir VB pour me (lui) faire, carrément, le boulot ?... Nous t'en
> serions reconnaissants.

Ma bonté me perdra....

A condition que la plage des données des feuilles "CESSION...." soit
toujours A15:G53
Sinon adapter ' For Each c In sh.Range("b15:b53")

'----------------
Sub jj()
[a2:g65536].ClearContents
Dim x As Long
Dim sh As Worksheet
Application.ScreenUpdating = False
x = 2
For Each sh In ActiveWorkbook.Worksheets
If UCase(Left(sh.Name, 7)) = "CESSION" Then
For Each c In sh.Range("b15:b53")
If c <> "" And c.Offset(0, 5) = "" Then
sh.Rows(c.Row).Copy Rows(x)
x = x + 1
End If
Next
End If
Next
Application.CutCopyMode = False
[a1].Select
End Sub
'----------------
Voir ici le fichier modifié
http://cjoint.com/?ivncnSozke

--
Salutations
JJ


"Richard_35" a écrit dans le message
de news:
> Bonjour Jacky,
>
> Merci beaucoup : c'est exactement ça !
>
> Par contre, je croyais pouvoir m'en sortir seul en remplaçant, ici ou là,
> des variables par d'autres, mais mes compétences sont vraiment limitées en
> VB... je passe un temps fou avec des MsgBox partout pour comprendre le
> principe...
>
> J'essaie de dépanner un ami qui est embauché comptable. Puis-je abuser de
> ton savoir VB pour me (lui) faire, carrément, le boulot ?... Nous t'en
> serions reconnaissants.
>
> Voici le fichier Excel à traiter :
> http://cjoint.com/?ivmdc6Smed
>
> Le but est de copier, dans la feuille Recap, toutes les lignes (complètes)
> des feuilles commençant par "CESSION" dont le n° de facture est renseigné
> (colonne N°fact<>"") et non payé (colonne Payé="")
>
> Merci d'avance, si tu peux.
> Richard.
>
> "Jacky" a écrit :
>
>> Re...
>> >> ..feuille "Récap" : il me faudrait la ligne complète sélectionnée de
>> >> la
>> >> feuille
>> > traitée
>> Ok!
>> '------------
>> Sub jj()
>> Cells.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
>> sh.Rows(c.Row).Copy
>> Rows(x).PasteSpecial Paste:=xlPasteValues
>> x = x + 1
>> End If
>> Next
>> End If
>> Next
>> End Sub
>> ---------
>> Voir ici
>> http://cjoint.com/?iur4rnfYvx
>>
>> Salutations
>> JJ
>>
>>
>> "Richard_35" a écrit dans le
>> message
>> de news:
>> > 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