Sur une feuille Excel en cellule K1 se trouve une date (2006/06/19). En K2
se trouve une autre date (2006/06/23). Selon le code qui suit, Excel ne
devrait garder que les dates comprises entre le 19 et le 23 juin et éliminer
toutes les autre lignes, selon les dates inscrites en colonne E.
Cependant, il semble qu'Excel fasse exactement le contraire. Auriez-vous une
idée pourquoi? Voici le code:
Sub Garder()
On Error Resume Next
Dim Sh As Worksheet
Set Sh = ActiveSheet
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
With Sh
.Range("J1") = ""
.Range("J2").FormulaLocal = "=and(E2>=$K$1,E2<=$K$2)"
With .Range("E1:E" & .Range("E65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sh.Range("J1:J2"), Unique:=False
.Offset(1).Resize(.Rows.Count - 1) _
.SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp
End With
.Range("J1:K2") = ""
.ShowAllData
End With
Range("A1").Select
End Sub
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
Denys
Bon, j'ai trouvé,
Suffit de remplacer la formule comme suit:
"=or(E2<$K$1,E2>$K$2)"
Merci
Denys
Bonjour à tous,
Sur une feuille Excel en cellule K1 se trouve une date (2006/06/19). En K2 se trouve une autre date (2006/06/23). Selon le code qui suit, Excel ne devrait garder que les dates comprises entre le 19 et le 23 juin et éliminer toutes les autre lignes, selon les dates inscrites en colonne E.
Cependant, il semble qu'Excel fasse exactement le contraire. Auriez-vous une idée pourquoi? Voici le code:
Sub Garder() On Error Resume Next Dim Sh As Worksheet Set Sh = ActiveSheet Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True With Sh .Range("J1") = "" .Range("J2").FormulaLocal = "=and(E2>=$K$1,E2<=$K$2)" With .Range("E1:E" & .Range("E65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("J1:J2"), Unique:úlse .Offset(1).Resize(.Rows.Count - 1) _ .SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp End With .Range("J1:K2") = "" .ShowAllData End With Range("A1").Select End Sub
Merci pour votre temps
Denys
Bon, j'ai trouvé,
Suffit de remplacer la formule comme suit:
"=or(E2<$K$1,E2>$K$2)"
Merci
Denys
Bonjour à tous,
Sur une feuille Excel en cellule K1 se trouve une date (2006/06/19). En K2
se trouve une autre date (2006/06/23). Selon le code qui suit, Excel ne
devrait garder que les dates comprises entre le 19 et le 23 juin et éliminer
toutes les autre lignes, selon les dates inscrites en colonne E.
Cependant, il semble qu'Excel fasse exactement le contraire. Auriez-vous une
idée pourquoi? Voici le code:
Sub Garder()
On Error Resume Next
Dim Sh As Worksheet
Set Sh = ActiveSheet
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
With Sh
.Range("J1") = ""
.Range("J2").FormulaLocal = "=and(E2>=$K$1,E2<=$K$2)"
With .Range("E1:E" & .Range("E65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sh.Range("J1:J2"), Unique:úlse
.Offset(1).Resize(.Rows.Count - 1) _
.SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp
End With
.Range("J1:K2") = ""
.ShowAllData
End With
Range("A1").Select
End Sub
Sur une feuille Excel en cellule K1 se trouve une date (2006/06/19). En K2 se trouve une autre date (2006/06/23). Selon le code qui suit, Excel ne devrait garder que les dates comprises entre le 19 et le 23 juin et éliminer toutes les autre lignes, selon les dates inscrites en colonne E.
Cependant, il semble qu'Excel fasse exactement le contraire. Auriez-vous une idée pourquoi? Voici le code:
Sub Garder() On Error Resume Next Dim Sh As Worksheet Set Sh = ActiveSheet Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True With Sh .Range("J1") = "" .Range("J2").FormulaLocal = "=and(E2>=$K$1,E2<=$K$2)" With .Range("E1:E" & .Range("E65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("J1:J2"), Unique:úlse .Offset(1).Resize(.Rows.Count - 1) _ .SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp End With .Range("J1:K2") = "" .ShowAllData End With Range("A1").Select End Sub
Merci pour votre temps
Denys
isabelle
bonjour Denys,
il faut que le critère soit différent de :
Criteria1:="<>" & Sh.Range("J1:J2")
je ne sais pas si c'est possible avec CriteriaRange
isabelle
Bonjour à tous,
Sur une feuille Excel en cellule K1 se trouve une date (2006/06/19). En K2 se trouve une autre date (2006/06/23). Selon le code qui suit, Excel ne devrait garder que les dates comprises entre le 19 et le 23 juin et éliminer toutes les autre lignes, selon les dates inscrites en colonne E.
Cependant, il semble qu'Excel fasse exactement le contraire. Auriez-vous une idée pourquoi? Voici le code:
Sub Garder() On Error Resume Next Dim Sh As Worksheet Set Sh = ActiveSheet Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True With Sh .Range("J1") = "" .Range("J2").FormulaLocal = "=and(E2>=$K$1,E2<=$K$2)" With .Range("E1:E" & .Range("E65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("J1:J2"), Unique:úlse .Offset(1).Resize(.Rows.Count - 1) _ .SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp End With .Range("J1:K2") = "" .ShowAllData End With Range("A1").Select End Sub
Merci pour votre temps
Denys
bonjour Denys,
il faut que le critère soit différent de :
Criteria1:="<>" & Sh.Range("J1:J2")
je ne sais pas si c'est possible avec CriteriaRange
isabelle
Bonjour à tous,
Sur une feuille Excel en cellule K1 se trouve une date (2006/06/19). En K2
se trouve une autre date (2006/06/23). Selon le code qui suit, Excel ne
devrait garder que les dates comprises entre le 19 et le 23 juin et éliminer
toutes les autre lignes, selon les dates inscrites en colonne E.
Cependant, il semble qu'Excel fasse exactement le contraire. Auriez-vous une
idée pourquoi? Voici le code:
Sub Garder()
On Error Resume Next
Dim Sh As Worksheet
Set Sh = ActiveSheet
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
With Sh
.Range("J1") = ""
.Range("J2").FormulaLocal = "=and(E2>=$K$1,E2<=$K$2)"
With .Range("E1:E" & .Range("E65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sh.Range("J1:J2"), Unique:úlse
.Offset(1).Resize(.Rows.Count - 1) _
.SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp
End With
.Range("J1:K2") = ""
.ShowAllData
End With
Range("A1").Select
End Sub
je ne sais pas si c'est possible avec CriteriaRange
isabelle
Bonjour à tous,
Sur une feuille Excel en cellule K1 se trouve une date (2006/06/19). En K2 se trouve une autre date (2006/06/23). Selon le code qui suit, Excel ne devrait garder que les dates comprises entre le 19 et le 23 juin et éliminer toutes les autre lignes, selon les dates inscrites en colonne E.
Cependant, il semble qu'Excel fasse exactement le contraire. Auriez-vous une idée pourquoi? Voici le code:
Sub Garder() On Error Resume Next Dim Sh As Worksheet Set Sh = ActiveSheet Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True With Sh .Range("J1") = "" .Range("J2").FormulaLocal = "=and(E2>=$K$1,E2<=$K$2)" With .Range("E1:E" & .Range("E65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("J1:J2"), Unique:úlse .Offset(1).Resize(.Rows.Count - 1) _ .SpecialCells(xlCellTypeVisible).EntireRow.Delete xlUp End With .Range("J1:K2") = "" .ShowAllData End With Range("A1").Select End Sub