Bonjour à toute la communauté,
Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour
traiter une grosse base de données. Pour exporter les données vers une autre
feuille, j'ai besoin de récupérer les valeurs des premières colonne de la
première ligne filtrée qui ne porte jamais le même n° de ligne évidemment
selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la
première du filtre ?
Merci d'avance
--
LucienMarcel
En vba, il existe une constante "xlTop10Items" qui te permet de récupérer les 10 premières lignes d'un filtre. C'est l'équivalent de faire un filtre automatique "personnalisé" en choisissant 10 premiers items.
Si tu as besoin d'un nombre de ligne mois que ça :
Voici une petite procédure que tu peux adapter à ton environnement :
'------------------------------------------ Sub Denis()
Dim Rg As Range Dim A As Long Dim Nb As Long
Nb = 8 'nombre de lignes du filtre à copier Application.ScreenUpdating = False With Worksheets("Feuil1") 'Nom feuille où sont les données With .Range("A1:F" & .Range("A65536").End(xlUp).Row) .AutoFilter Field:=1, Criteria1:="5" Set Rg = .Range("_FilterDataBase") Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible) 'Nb enregistrements trouvés x = Application.Subtotal(9, Rg(1)) End With End With If Nb > x Then Nb = x For A = 1 To Nb 'Adapter le nom de la feuille où les données seront copiées Rg.Rows(A).Copy Worksheets("Feuil2").Range("A" & A) Next Worksheets("Feuil1").Range("A1").AutoFilter Application.ScreenUpdating = True End Sub '------------------------------------------
"LucienMarcel" a écrit dans le message de groupe de discussion : Bonjour à toute la communauté, Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour traiter une grosse base de données. Pour exporter les données vers une autre feuille, j'ai besoin de récupérer les valeurs des premières colonne de la première ligne filtrée qui ne porte jamais le même n° de ligne évidemment selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la première du filtre ? Merci d'avance -- LucienMarcel
Bonjour Lucien,
En vba, il existe une constante "xlTop10Items" qui te permet
de récupérer les 10 premières lignes d'un filtre.
C'est l'équivalent de faire un filtre automatique "personnalisé"
en choisissant 10 premiers items.
Si tu as besoin d'un nombre de ligne mois que ça :
Voici une petite procédure que tu peux adapter à ton environnement :
'------------------------------------------
Sub Denis()
Dim Rg As Range
Dim A As Long
Dim Nb As Long
Nb = 8 'nombre de lignes du filtre à copier
Application.ScreenUpdating = False
With Worksheets("Feuil1") 'Nom feuille où sont les données
With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
.AutoFilter Field:=1, Criteria1:="5"
Set Rg = .Range("_FilterDataBase")
Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible)
'Nb enregistrements trouvés
x = Application.Subtotal(9, Rg(1))
End With
End With
If Nb > x Then Nb = x
For A = 1 To Nb
'Adapter le nom de la feuille où les données seront copiées
Rg.Rows(A).Copy Worksheets("Feuil2").Range("A" & A)
Next
Worksheets("Feuil1").Range("A1").AutoFilter
Application.ScreenUpdating = True
End Sub
'------------------------------------------
"LucienMarcel" <LucienMarcel@discussions.microsoft.com> a écrit dans le message de groupe
de discussion : 2E570F1F-5D7E-4480-97B2-2984CA4C4467@microsoft.com...
Bonjour à toute la communauté,
Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour
traiter une grosse base de données. Pour exporter les données vers une autre
feuille, j'ai besoin de récupérer les valeurs des premières colonne de la
première ligne filtrée qui ne porte jamais le même n° de ligne évidemment
selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la
première du filtre ?
Merci d'avance
--
LucienMarcel
En vba, il existe une constante "xlTop10Items" qui te permet de récupérer les 10 premières lignes d'un filtre. C'est l'équivalent de faire un filtre automatique "personnalisé" en choisissant 10 premiers items.
Si tu as besoin d'un nombre de ligne mois que ça :
Voici une petite procédure que tu peux adapter à ton environnement :
'------------------------------------------ Sub Denis()
Dim Rg As Range Dim A As Long Dim Nb As Long
Nb = 8 'nombre de lignes du filtre à copier Application.ScreenUpdating = False With Worksheets("Feuil1") 'Nom feuille où sont les données With .Range("A1:F" & .Range("A65536").End(xlUp).Row) .AutoFilter Field:=1, Criteria1:="5" Set Rg = .Range("_FilterDataBase") Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible) 'Nb enregistrements trouvés x = Application.Subtotal(9, Rg(1)) End With End With If Nb > x Then Nb = x For A = 1 To Nb 'Adapter le nom de la feuille où les données seront copiées Rg.Rows(A).Copy Worksheets("Feuil2").Range("A" & A) Next Worksheets("Feuil1").Range("A1").AutoFilter Application.ScreenUpdating = True End Sub '------------------------------------------
"LucienMarcel" a écrit dans le message de groupe de discussion : Bonjour à toute la communauté, Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour traiter une grosse base de données. Pour exporter les données vers une autre feuille, j'ai besoin de récupérer les valeurs des premières colonne de la première ligne filtrée qui ne porte jamais le même n° de ligne évidemment selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la première du filtre ? Merci d'avance -- LucienMarcel
Bonjour à toute la communauté, Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour traiter une grosse base de données. Pour exporter les données vers un e autre feuille, j'ai besoin de récupérer les valeurs des premières colonne de la première ligne filtrée qui ne porte jamais le même n° de ligne évidemment selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la première du filtre ? Merci d'avance -- LucienMarcel
On 20 mai, 14:49, LucienMarcel
<LucienMar...@discussions.microsoft.com> wrote:
Bonjour à toute la communauté,
Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour
traiter une grosse base de données. Pour exporter les données vers un e autre
feuille, j'ai besoin de récupérer les valeurs des premières colonne de la
première ligne filtrée qui ne porte jamais le même n° de ligne évidemment
selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la
première du filtre ?
Merci d'avance
--
LucienMarcel
Bonjour à toute la communauté, Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour traiter une grosse base de données. Pour exporter les données vers un e autre feuille, j'ai besoin de récupérer les valeurs des premières colonne de la première ligne filtrée qui ne porte jamais le même n° de ligne évidemment selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la première du filtre ? Merci d'avance -- LucienMarcel
FFO
Salut à toi
Soit Feuil2 en ligne 2 la recopie Cette ligne de code devrait convenir :
pour la recopie de la 1° ligne visible Range("A" & Range("A2", "A65535").SpecialCells(xlCellTypeVisible).Row).EntireRow.Copy Sheets("Feuil2").Range("A2")
Soit Feuil2 en ligne 2 la recopie
Cette ligne de code devrait convenir :
pour la recopie de la 1° ligne visible
Range("A" & Range("A2",
"A65535").SpecialCells(xlCellTypeVisible).Row).EntireRow.Copy
Sheets("Feuil2").Range("A2")
Soit Feuil2 en ligne 2 la recopie Cette ligne de code devrait convenir :
pour la recopie de la 1° ligne visible Range("A" & Range("A2", "A65535").SpecialCells(xlCellTypeVisible).Row).EntireRow.Copy Sheets("Feuil2").Range("A2")
Pour une ligne lambda la 10° par exemple ce code :
Ligne = Range("A2", "A65535").SpecialCells(xlCellTypeVisible).Row For i = 1 To Range("A2", "A65535").SpecialCells(xlCellTypeVisible).Count If i = 10 Then Range("A" & Ligne).EntireRow.Copy Sheets("Feuil2").Range("A3") Exit For End If Ligne = Range("A" & Ligne + 1, "A65535").SpecialCells(xlCellTypeVisible).Row Next
Un petit plus éventuellement !!!!
Rebonjour à toi
Pour une ligne lambda la 10° par exemple ce code :
Ligne = Range("A2", "A65535").SpecialCells(xlCellTypeVisible).Row
For i = 1 To Range("A2", "A65535").SpecialCells(xlCellTypeVisible).Count
If i = 10 Then
Range("A" & Ligne).EntireRow.Copy Sheets("Feuil2").Range("A3")
Exit For
End If
Ligne = Range("A" & Ligne + 1, "A65535").SpecialCells(xlCellTypeVisible).Row
Next
Pour une ligne lambda la 10° par exemple ce code :
Ligne = Range("A2", "A65535").SpecialCells(xlCellTypeVisible).Row For i = 1 To Range("A2", "A65535").SpecialCells(xlCellTypeVisible).Count If i = 10 Then Range("A" & Ligne).EntireRow.Copy Sheets("Feuil2").Range("A3") Exit For End If Ligne = Range("A" & Ligne + 1, "A65535").SpecialCells(xlCellTypeVisible).Row Next
Un petit plus éventuellement !!!!
MichDenis
Petite correction :
Dans la procédure du message initial, remplacer ceci : '---------------------------------- For A = 1 To Nb 'Adapter le nom de la feuille où les données seront copiées Rg.Rows(A).Copy Worksheets("Feuil2").Range("A" & A) Next '----------------------------------
PAR : '---------------------------------- For Each r In Rg.Rows A = A + 1 r.Copy Worksheets("Feuil2").Range("A" & A) If A = Nb Then Exit For Next '----------------------------------
"MichDenis" a écrit dans le message de groupe de discussion :
Bonjour Lucien,
En vba, il existe une constante "xlTop10Items" qui te permet de récupérer les 10 premières lignes d'un filtre. C'est l'équivalent de faire un filtre automatique "personnalisé" en choisissant 10 premiers items.
Si tu as besoin d'un nombre de ligne mois que ça :
Voici une petite procédure que tu peux adapter à ton environnement :
'------------------------------------------ Sub Denis()
Dim Rg As Range Dim A As Long Dim Nb As Long
Nb = 8 'nombre de lignes du filtre à copier Application.ScreenUpdating = False With Worksheets("Feuil1") 'Nom feuille où sont les données With .Range("A1:F" & .Range("A65536").End(xlUp).Row) .AutoFilter Field:=1, Criteria1:="5" Set Rg = .Range("_FilterDataBase") Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible) 'Nb enregistrements trouvés x = Application.Subtotal(9, Rg(1)) End With End With If Nb > x Then Nb = x For A = 1 To Nb 'Adapter le nom de la feuille où les données seront copiées Rg.Rows(A).Copy Worksheets("Feuil2").Range("A" & A) Next Worksheets("Feuil1").Range("A1").AutoFilter Application.ScreenUpdating = True End Sub '------------------------------------------
"LucienMarcel" a écrit dans le message de groupe de discussion : Bonjour à toute la communauté, Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour traiter une grosse base de données. Pour exporter les données vers une autre feuille, j'ai besoin de récupérer les valeurs des premières colonne de la première ligne filtrée qui ne porte jamais le même n° de ligne évidemment selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la première du filtre ? Merci d'avance -- LucienMarcel
Petite correction :
Dans la procédure du message initial,
remplacer ceci :
'----------------------------------
For A = 1 To Nb
'Adapter le nom de la feuille où les données seront copiées
Rg.Rows(A).Copy Worksheets("Feuil2").Range("A" & A)
Next
'----------------------------------
PAR :
'----------------------------------
For Each r In Rg.Rows
A = A + 1
r.Copy Worksheets("Feuil2").Range("A" & A)
If A = Nb Then Exit For
Next
'----------------------------------
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de groupe de discussion :
OAvMB7U2JHA.4744@TK2MSFTNGP04.phx.gbl...
Bonjour Lucien,
En vba, il existe une constante "xlTop10Items" qui te permet
de récupérer les 10 premières lignes d'un filtre.
C'est l'équivalent de faire un filtre automatique "personnalisé"
en choisissant 10 premiers items.
Si tu as besoin d'un nombre de ligne mois que ça :
Voici une petite procédure que tu peux adapter à ton environnement :
'------------------------------------------
Sub Denis()
Dim Rg As Range
Dim A As Long
Dim Nb As Long
Nb = 8 'nombre de lignes du filtre à copier
Application.ScreenUpdating = False
With Worksheets("Feuil1") 'Nom feuille où sont les données
With .Range("A1:F" & .Range("A65536").End(xlUp).Row)
.AutoFilter Field:=1, Criteria1:="5"
Set Rg = .Range("_FilterDataBase")
Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1). _
SpecialCells(xlCellTypeVisible)
'Nb enregistrements trouvés
x = Application.Subtotal(9, Rg(1))
End With
End With
If Nb > x Then Nb = x
For A = 1 To Nb
'Adapter le nom de la feuille où les données seront copiées
Rg.Rows(A).Copy Worksheets("Feuil2").Range("A" & A)
Next
Worksheets("Feuil1").Range("A1").AutoFilter
Application.ScreenUpdating = True
End Sub
'------------------------------------------
"LucienMarcel" <LucienMarcel@discussions.microsoft.com> a écrit dans le message de groupe
de discussion : 2E570F1F-5D7E-4480-97B2-2984CA4C4467@microsoft.com...
Bonjour à toute la communauté,
Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour
traiter une grosse base de données. Pour exporter les données vers une autre
feuille, j'ai besoin de récupérer les valeurs des premières colonne de la
première ligne filtrée qui ne porte jamais le même n° de ligne évidemment
selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la
première du filtre ?
Merci d'avance
--
LucienMarcel
Dans la procédure du message initial, remplacer ceci : '---------------------------------- For A = 1 To Nb 'Adapter le nom de la feuille où les données seront copiées Rg.Rows(A).Copy Worksheets("Feuil2").Range("A" & A) Next '----------------------------------
PAR : '---------------------------------- For Each r In Rg.Rows A = A + 1 r.Copy Worksheets("Feuil2").Range("A" & A) If A = Nb Then Exit For Next '----------------------------------
"MichDenis" a écrit dans le message de groupe de discussion :
Bonjour Lucien,
En vba, il existe une constante "xlTop10Items" qui te permet de récupérer les 10 premières lignes d'un filtre. C'est l'équivalent de faire un filtre automatique "personnalisé" en choisissant 10 premiers items.
Si tu as besoin d'un nombre de ligne mois que ça :
Voici une petite procédure que tu peux adapter à ton environnement :
'------------------------------------------ Sub Denis()
Dim Rg As Range Dim A As Long Dim Nb As Long
Nb = 8 'nombre de lignes du filtre à copier Application.ScreenUpdating = False With Worksheets("Feuil1") 'Nom feuille où sont les données With .Range("A1:F" & .Range("A65536").End(xlUp).Row) .AutoFilter Field:=1, Criteria1:="5" Set Rg = .Range("_FilterDataBase") Set Rg = Rg.Offset(1).Resize(Rg.Rows.Count - 1). _ SpecialCells(xlCellTypeVisible) 'Nb enregistrements trouvés x = Application.Subtotal(9, Rg(1)) End With End With If Nb > x Then Nb = x For A = 1 To Nb 'Adapter le nom de la feuille où les données seront copiées Rg.Rows(A).Copy Worksheets("Feuil2").Range("A" & A) Next Worksheets("Feuil1").Range("A1").AutoFilter Application.ScreenUpdating = True End Sub '------------------------------------------
"LucienMarcel" a écrit dans le message de groupe de discussion : Bonjour à toute la communauté, Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour traiter une grosse base de données. Pour exporter les données vers une autre feuille, j'ai besoin de récupérer les valeurs des premières colonne de la première ligne filtrée qui ne porte jamais le même n° de ligne évidemment selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la première du filtre ? Merci d'avance -- LucienMarcel
isabelle
salut LucienMarcel,
With Sheets("Feuil1").Range("A1") .CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Sheets("Feuil2").Range("A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1) End With
isabelle
LucienMarcel a écrit :
Bonjour à toute la communauté, Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour traiter une grosse base de données. Pour exporter les données vers une autre feuille, j'ai besoin de récupérer les valeurs des premières colonne de la première ligne filtrée qui ne porte jamais le même n° de ligne évidemment selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la première du filtre ? Merci d'avance
salut LucienMarcel,
With Sheets("Feuil1").Range("A1")
.CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Sheets("Feuil2").Range("A" &
Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1)
End With
isabelle
LucienMarcel a écrit :
Bonjour à toute la communauté,
Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour
traiter une grosse base de données. Pour exporter les données vers une autre
feuille, j'ai besoin de récupérer les valeurs des premières colonne de la
première ligne filtrée qui ne porte jamais le même n° de ligne évidemment
selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la
première du filtre ?
Merci d'avance
With Sheets("Feuil1").Range("A1") .CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Sheets("Feuil2").Range("A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1) End With
isabelle
LucienMarcel a écrit :
Bonjour à toute la communauté, Sous Excel 2003 et VBA, je voudrais utiliser le filtre automatique pour traiter une grosse base de données. Pour exporter les données vers une autre feuille, j'ai besoin de récupérer les valeurs des premières colonne de la première ligne filtrée qui ne porte jamais le même n° de ligne évidemment selon le filtre. Quel code VBA utiliser pour récupérer ces valeurs de la première du filtre ? Merci d'avance