Voici une macro qui m'a généreusement été proposée par Denis Michon et qui
fonctionne à merveille:
J'y ai apporté quelques changements.... et ça fonctionne toujours... sauf
que je voudrais y apporter les suivants, et là j'ai besoin de votre aide...
Sub FiltreParDate()
Suite: If sheet1.Range ("B8").Value = "" Then Exit Sub
Dim Rg As Range, Rg1 As Range, DL As Long
With Worksheets("Sheet1")
'Plage sur laquelle s'effecture le filtre
Set Rg = .Range("B8:V" & .Range("B65536").End(xlUp).Row)
Application.ScreenUpdating = False
'le filtre automatique :
With Rg
.AutoFilter field:=2, Criteria1:=[b8].value (est-ce que c'est bon?)
'Définir la plage à copier
Set Rg1 = .SpecialCells(xlCellTypeVisible)
'Où copier le résultat du filtre
'Ici je veux entrer: ajouter une feuille ayant pour nom la date en cellule A8
'Identifier la dernière ligne +1 de la plage A:A
DL = .Range("A65536").End(xlUp).Row
'copier les données du filtre
Rg1.Copy .Range("A" & DL)
'Rg1.EntireRow.Delete
End With
.AutoFilter
End With
End With
'Libère la mémoire des objets
Set Rg = Nothing: Set Rg1 = Nothing
Goto Suite
End Sub
En résumé, il faudrait que le filtre se fasse en fonction de la date en
cellule A8 de la Sheet1, et que le filtre copie toutes les lignes aynat la
même date dans une nouvelle feuille ayant pour nom cette date jusqu'à ce
qu'il n'y ait plus rien en cellule B8...
J'ai essayé avec Sheets.Add, sauf qu"Excel n'y copie rien, et bloque sur
AutoFilter...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour Denys,
Le principe de base en anglais tel qu'un définit dans un bouquin d'un guru ...
Excel holds dates as numeric values equal to the number of days since January 1, 1900. For example, January 1, 2003, is held as 37622. When you ask for dates greater than or equal to January 1, 2003, Excel looks for date serial numbers greater than or equal to 37622. However, when you ask for dates equal to January 1, 2003, Excel does not look for the numeric value of the date; Excel checks for the string value '"Jan 1, 2003" as it appears formatted in the worksheet.
As-tu essayé ceci :
Utilise une variable pour contenir ton critère
Dim D As String D = [b8].text .AutoFilter field:=2, Criteria1:= D
Si tu travailles sur une version française... ceci ne fonctionnera pas... mais en anglais ceci devrait fonctionner selon les "top" guru d'excel. je n'ai jamais eu l'occasion de tester cela sur une version anglaise...!
Si tu veux savoir comment le faire en français... tu le dis !
Salutations!
"Denys" a écrit dans le message de news: Bonjour à tous,
Voici une macro qui m'a généreusement été proposée par Denis Michon et qui fonctionne à merveille:
J'y ai apporté quelques changements.... et ça fonctionne toujours... sauf que je voudrais y apporter les suivants, et là j'ai besoin de votre aide...
Sub FiltreParDate()
Suite: If sheet1.Range ("B8").Value = "" Then Exit Sub
Dim Rg As Range, Rg1 As Range, DL As Long
With Worksheets("Sheet1") 'Plage sur laquelle s'effecture le filtre Set Rg = .Range("B8:V" & .Range("B65536").End(xlUp).Row)
Application.ScreenUpdating = False 'le filtre automatique : With Rg .AutoFilter field:=2, Criteria1:=[b8].value (est-ce que c'est bon?) 'Définir la plage à copier Set Rg1 = .SpecialCells(xlCellTypeVisible)
'Où copier le résultat du filtre 'Ici je veux entrer: ajouter une feuille ayant pour nom la date en cellule A8
'Identifier la dernière ligne +1 de la plage A:A DL = .Range("A65536").End(xlUp).Row 'copier les données du filtre Rg1.Copy .Range("A" & DL) 'Rg1.EntireRow.Delete End With .AutoFilter End With End With 'Libère la mémoire des objets Set Rg = Nothing: Set Rg1 = Nothing Goto Suite
End Sub
En résumé, il faudrait que le filtre se fasse en fonction de la date en cellule A8 de la Sheet1, et que le filtre copie toutes les lignes aynat la même date dans une nouvelle feuille ayant pour nom cette date jusqu'à ce qu'il n'y ait plus rien en cellule B8...
J'ai essayé avec Sheets.Add, sauf qu"Excel n'y copie rien, et bloque sur AutoFilter...
Quelqu'un aurait une piste pour moi?
Merci pour votre temps
Denys
Bonjour Denys,
Le principe de base en anglais tel qu'un définit dans un bouquin d'un guru ...
Excel holds dates as numeric values equal to the number of days since January 1, 1900. For example, January 1, 2003, is held as
37622. When you ask for dates greater than or equal to January 1, 2003, Excel looks for date serial numbers greater than or equal to
37622. However, when you ask for dates equal to January 1, 2003, Excel does not look for the numeric value of the date; Excel checks
for the string value
'"Jan 1, 2003" as it appears formatted in the worksheet.
As-tu essayé ceci :
Utilise une variable pour contenir ton critère
Dim D As String
D = [b8].text
.AutoFilter field:=2, Criteria1:= D
Si tu travailles sur une version française... ceci ne fonctionnera pas... mais en anglais ceci devrait fonctionner selon les "top"
guru d'excel.
je n'ai jamais eu l'occasion de tester cela sur une version anglaise...!
Si tu veux savoir comment le faire en français... tu le dis !
Salutations!
"Denys" <Denys@discussions.microsoft.com> a écrit dans le message de news: 225C3B77-1695-4A0F-B615-F4F16D6C0F61@microsoft.com...
Bonjour à tous,
Voici une macro qui m'a généreusement été proposée par Denis Michon et qui
fonctionne à merveille:
J'y ai apporté quelques changements.... et ça fonctionne toujours... sauf
que je voudrais y apporter les suivants, et là j'ai besoin de votre aide...
Sub FiltreParDate()
Suite: If sheet1.Range ("B8").Value = "" Then Exit Sub
Dim Rg As Range, Rg1 As Range, DL As Long
With Worksheets("Sheet1")
'Plage sur laquelle s'effecture le filtre
Set Rg = .Range("B8:V" & .Range("B65536").End(xlUp).Row)
Application.ScreenUpdating = False
'le filtre automatique :
With Rg
.AutoFilter field:=2, Criteria1:=[b8].value (est-ce que c'est bon?)
'Définir la plage à copier
Set Rg1 = .SpecialCells(xlCellTypeVisible)
'Où copier le résultat du filtre
'Ici je veux entrer: ajouter une feuille ayant pour nom la date en cellule A8
'Identifier la dernière ligne +1 de la plage A:A
DL = .Range("A65536").End(xlUp).Row
'copier les données du filtre
Rg1.Copy .Range("A" & DL)
'Rg1.EntireRow.Delete
End With
.AutoFilter
End With
End With
'Libère la mémoire des objets
Set Rg = Nothing: Set Rg1 = Nothing
Goto Suite
End Sub
En résumé, il faudrait que le filtre se fasse en fonction de la date en
cellule A8 de la Sheet1, et que le filtre copie toutes les lignes aynat la
même date dans une nouvelle feuille ayant pour nom cette date jusqu'à ce
qu'il n'y ait plus rien en cellule B8...
J'ai essayé avec Sheets.Add, sauf qu"Excel n'y copie rien, et bloque sur
AutoFilter...
Le principe de base en anglais tel qu'un définit dans un bouquin d'un guru ...
Excel holds dates as numeric values equal to the number of days since January 1, 1900. For example, January 1, 2003, is held as 37622. When you ask for dates greater than or equal to January 1, 2003, Excel looks for date serial numbers greater than or equal to 37622. However, when you ask for dates equal to January 1, 2003, Excel does not look for the numeric value of the date; Excel checks for the string value '"Jan 1, 2003" as it appears formatted in the worksheet.
As-tu essayé ceci :
Utilise une variable pour contenir ton critère
Dim D As String D = [b8].text .AutoFilter field:=2, Criteria1:= D
Si tu travailles sur une version française... ceci ne fonctionnera pas... mais en anglais ceci devrait fonctionner selon les "top" guru d'excel. je n'ai jamais eu l'occasion de tester cela sur une version anglaise...!
Si tu veux savoir comment le faire en français... tu le dis !
Salutations!
"Denys" a écrit dans le message de news: Bonjour à tous,
Voici une macro qui m'a généreusement été proposée par Denis Michon et qui fonctionne à merveille:
J'y ai apporté quelques changements.... et ça fonctionne toujours... sauf que je voudrais y apporter les suivants, et là j'ai besoin de votre aide...
Sub FiltreParDate()
Suite: If sheet1.Range ("B8").Value = "" Then Exit Sub
Dim Rg As Range, Rg1 As Range, DL As Long
With Worksheets("Sheet1") 'Plage sur laquelle s'effecture le filtre Set Rg = .Range("B8:V" & .Range("B65536").End(xlUp).Row)
Application.ScreenUpdating = False 'le filtre automatique : With Rg .AutoFilter field:=2, Criteria1:=[b8].value (est-ce que c'est bon?) 'Définir la plage à copier Set Rg1 = .SpecialCells(xlCellTypeVisible)
'Où copier le résultat du filtre 'Ici je veux entrer: ajouter une feuille ayant pour nom la date en cellule A8
'Identifier la dernière ligne +1 de la plage A:A DL = .Range("A65536").End(xlUp).Row 'copier les données du filtre Rg1.Copy .Range("A" & DL) 'Rg1.EntireRow.Delete End With .AutoFilter End With End With 'Libère la mémoire des objets Set Rg = Nothing: Set Rg1 = Nothing Goto Suite
End Sub
En résumé, il faudrait que le filtre se fasse en fonction de la date en cellule A8 de la Sheet1, et que le filtre copie toutes les lignes aynat la même date dans une nouvelle feuille ayant pour nom cette date jusqu'à ce qu'il n'y ait plus rien en cellule B8...
J'ai essayé avec Sheets.Add, sauf qu"Excel n'y copie rien, et bloque sur AutoFilter...
Quelqu'un aurait une piste pour moi?
Merci pour votre temps
Denys
Denys
Bonjour Denis,
Merci, ta réponse m'a donné une autre idée. Comme les dates en colonne B proviennent d'un Notepad, Excel ne les reconnait pas comme date, mais bien comme texte. Donc, en colonne A j'applique la formule suivante: Úy(B8)
Cela me donne le jour correspondant, et ensuite j'applique ton filtre sur la colonne A au lieu de la colonne B !!!
Peut-être pas très orthodoxe..... mais ça marche....
Merci encore....
Denys
Bonjour Denys,
Le principe de base en anglais tel qu'un définit dans un bouquin d'un guru ...
Excel holds dates as numeric values equal to the number of days since January 1, 1900. For example, January 1, 2003, is held as 37622. When you ask for dates greater than or equal to January 1, 2003, Excel looks for date serial numbers greater than or equal to 37622. However, when you ask for dates equal to January 1, 2003, Excel does not look for the numeric value of the date; Excel checks for the string value '"Jan 1, 2003" as it appears formatted in the worksheet.
As-tu essayé ceci :
Utilise une variable pour contenir ton critère
Dim D As String D = [b8].text ..AutoFilter field:=2, Criteria1:= D
Si tu travailles sur une version française... ceci ne fonctionnera pas... mais en anglais ceci devrait fonctionner selon les "top" guru d'excel. je n'ai jamais eu l'occasion de tester cela sur une version anglaise...!
Si tu veux savoir comment le faire en français... tu le dis !
Salutations!
"Denys" a écrit dans le message de news: Bonjour à tous,
Voici une macro qui m'a généreusement été proposée par Denis Michon et qui fonctionne à merveille:
J'y ai apporté quelques changements.... et ça fonctionne toujours... sauf que je voudrais y apporter les suivants, et là j'ai besoin de votre aide...
Sub FiltreParDate()
Suite: If sheet1.Range ("B8").Value = "" Then Exit Sub
Dim Rg As Range, Rg1 As Range, DL As Long
With Worksheets("Sheet1") 'Plage sur laquelle s'effecture le filtre Set Rg = .Range("B8:V" & .Range("B65536").End(xlUp).Row)
Application.ScreenUpdating = False 'le filtre automatique : With Rg .AutoFilter field:=2, Criteria1:=[b8].value (est-ce que c'est bon?) 'Définir la plage à copier Set Rg1 = .SpecialCells(xlCellTypeVisible)
'Où copier le résultat du filtre 'Ici je veux entrer: ajouter une feuille ayant pour nom la date en cellule A8
'Identifier la dernière ligne +1 de la plage A:A DL = .Range("A65536").End(xlUp).Row 'copier les données du filtre Rg1.Copy .Range("A" & DL) 'Rg1.EntireRow.Delete End With .AutoFilter End With End With 'Libère la mémoire des objets Set Rg = Nothing: Set Rg1 = Nothing Goto Suite
End Sub
En résumé, il faudrait que le filtre se fasse en fonction de la date en cellule A8 de la Sheet1, et que le filtre copie toutes les lignes aynat la même date dans une nouvelle feuille ayant pour nom cette date jusqu'à ce qu'il n'y ait plus rien en cellule B8...
J'ai essayé avec Sheets.Add, sauf qu"Excel n'y copie rien, et bloque sur AutoFilter...
Quelqu'un aurait une piste pour moi?
Merci pour votre temps
Denys
Bonjour Denis,
Merci, ta réponse m'a donné une autre idée. Comme les dates en colonne B
proviennent d'un Notepad, Excel ne les reconnait pas comme date, mais bien
comme texte. Donc, en colonne A j'applique la formule suivante: Úy(B8)
Cela me donne le jour correspondant, et ensuite j'applique ton filtre sur la
colonne A au lieu de la colonne B !!!
Peut-être pas très orthodoxe..... mais ça marche....
Merci encore....
Denys
Bonjour Denys,
Le principe de base en anglais tel qu'un définit dans un bouquin d'un guru ...
Excel holds dates as numeric values equal to the number of days since January 1, 1900. For example, January 1, 2003, is held as
37622. When you ask for dates greater than or equal to January 1, 2003, Excel looks for date serial numbers greater than or equal to
37622. However, when you ask for dates equal to January 1, 2003, Excel does not look for the numeric value of the date; Excel checks
for the string value
'"Jan 1, 2003" as it appears formatted in the worksheet.
As-tu essayé ceci :
Utilise une variable pour contenir ton critère
Dim D As String
D = [b8].text
..AutoFilter field:=2, Criteria1:= D
Si tu travailles sur une version française... ceci ne fonctionnera pas... mais en anglais ceci devrait fonctionner selon les "top"
guru d'excel.
je n'ai jamais eu l'occasion de tester cela sur une version anglaise...!
Si tu veux savoir comment le faire en français... tu le dis !
Salutations!
"Denys" <Denys@discussions.microsoft.com> a écrit dans le message de news: 225C3B77-1695-4A0F-B615-F4F16D6C0F61@microsoft.com...
Bonjour à tous,
Voici une macro qui m'a généreusement été proposée par Denis Michon et qui
fonctionne à merveille:
J'y ai apporté quelques changements.... et ça fonctionne toujours... sauf
que je voudrais y apporter les suivants, et là j'ai besoin de votre aide...
Sub FiltreParDate()
Suite: If sheet1.Range ("B8").Value = "" Then Exit Sub
Dim Rg As Range, Rg1 As Range, DL As Long
With Worksheets("Sheet1")
'Plage sur laquelle s'effecture le filtre
Set Rg = .Range("B8:V" & .Range("B65536").End(xlUp).Row)
Application.ScreenUpdating = False
'le filtre automatique :
With Rg
.AutoFilter field:=2, Criteria1:=[b8].value (est-ce que c'est bon?)
'Définir la plage à copier
Set Rg1 = .SpecialCells(xlCellTypeVisible)
'Où copier le résultat du filtre
'Ici je veux entrer: ajouter une feuille ayant pour nom la date en cellule A8
'Identifier la dernière ligne +1 de la plage A:A
DL = .Range("A65536").End(xlUp).Row
'copier les données du filtre
Rg1.Copy .Range("A" & DL)
'Rg1.EntireRow.Delete
End With
.AutoFilter
End With
End With
'Libère la mémoire des objets
Set Rg = Nothing: Set Rg1 = Nothing
Goto Suite
End Sub
En résumé, il faudrait que le filtre se fasse en fonction de la date en
cellule A8 de la Sheet1, et que le filtre copie toutes les lignes aynat la
même date dans une nouvelle feuille ayant pour nom cette date jusqu'à ce
qu'il n'y ait plus rien en cellule B8...
J'ai essayé avec Sheets.Add, sauf qu"Excel n'y copie rien, et bloque sur
AutoFilter...
Merci, ta réponse m'a donné une autre idée. Comme les dates en colonne B proviennent d'un Notepad, Excel ne les reconnait pas comme date, mais bien comme texte. Donc, en colonne A j'applique la formule suivante: Úy(B8)
Cela me donne le jour correspondant, et ensuite j'applique ton filtre sur la colonne A au lieu de la colonne B !!!
Peut-être pas très orthodoxe..... mais ça marche....
Merci encore....
Denys
Bonjour Denys,
Le principe de base en anglais tel qu'un définit dans un bouquin d'un guru ...
Excel holds dates as numeric values equal to the number of days since January 1, 1900. For example, January 1, 2003, is held as 37622. When you ask for dates greater than or equal to January 1, 2003, Excel looks for date serial numbers greater than or equal to 37622. However, when you ask for dates equal to January 1, 2003, Excel does not look for the numeric value of the date; Excel checks for the string value '"Jan 1, 2003" as it appears formatted in the worksheet.
As-tu essayé ceci :
Utilise une variable pour contenir ton critère
Dim D As String D = [b8].text ..AutoFilter field:=2, Criteria1:= D
Si tu travailles sur une version française... ceci ne fonctionnera pas... mais en anglais ceci devrait fonctionner selon les "top" guru d'excel. je n'ai jamais eu l'occasion de tester cela sur une version anglaise...!
Si tu veux savoir comment le faire en français... tu le dis !
Salutations!
"Denys" a écrit dans le message de news: Bonjour à tous,
Voici une macro qui m'a généreusement été proposée par Denis Michon et qui fonctionne à merveille:
J'y ai apporté quelques changements.... et ça fonctionne toujours... sauf que je voudrais y apporter les suivants, et là j'ai besoin de votre aide...
Sub FiltreParDate()
Suite: If sheet1.Range ("B8").Value = "" Then Exit Sub
Dim Rg As Range, Rg1 As Range, DL As Long
With Worksheets("Sheet1") 'Plage sur laquelle s'effecture le filtre Set Rg = .Range("B8:V" & .Range("B65536").End(xlUp).Row)
Application.ScreenUpdating = False 'le filtre automatique : With Rg .AutoFilter field:=2, Criteria1:=[b8].value (est-ce que c'est bon?) 'Définir la plage à copier Set Rg1 = .SpecialCells(xlCellTypeVisible)
'Où copier le résultat du filtre 'Ici je veux entrer: ajouter une feuille ayant pour nom la date en cellule A8
'Identifier la dernière ligne +1 de la plage A:A DL = .Range("A65536").End(xlUp).Row 'copier les données du filtre Rg1.Copy .Range("A" & DL) 'Rg1.EntireRow.Delete End With .AutoFilter End With End With 'Libère la mémoire des objets Set Rg = Nothing: Set Rg1 = Nothing Goto Suite
End Sub
En résumé, il faudrait que le filtre se fasse en fonction de la date en cellule A8 de la Sheet1, et que le filtre copie toutes les lignes aynat la même date dans une nouvelle feuille ayant pour nom cette date jusqu'à ce qu'il n'y ait plus rien en cellule B8...
J'ai essayé avec Sheets.Add, sauf qu"Excel n'y copie rien, et bloque sur AutoFilter...