OVH Cloud OVH Cloud

Où est mon erreur?

2 réponses
Avatar
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:=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

Merci pour votre temps

Denys

2 réponses

Avatar
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






Avatar
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