VBA : Recherche et selection d'une cellule selon 2 critères variables
3 réponses
Domi
Bonsoir,
J'ai une colonne qui contient des valeurs au format texte sous la forme
yyyy/s où yyyy représente un n° d'année et s un n° de semaine : exemple :
2006/45, 2007/2, 2007/49...
Je voudrais rechercher et selectionner la cellule qui contient le n° de
l'année en cours et le n° de semaine en cours.
J'ai touvé comment le faire en mettant dans le code la valeur en dur (ex ci
dessous 2007/49) mais je ne sais pas comment le faire en utilisant des
variables qui calculent l'année et le n° de semaine.
Mon codes qui marche
Cells.Find(What:=("2007 / 49"), After:=ActiveCell, LookIn:=xlFormulas,
LookAt:=xlWhole, SearchOrder _
:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Activate
ActiveCell.Offset(0, 1).Select
Les variables que je voudrais utiliser
Variables
an = Year(Date)
NSem = ISOWeekNum(Date)
avec la fonction :
Function ISOWeekNum(d1 As Date) As Integer
Dim d2 As Long
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
ISOWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function
Function ISOWeekNum(d1 As Date) As Integer Dim d2 As Long d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3) ISOWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7) End Function
Attention si la valeur cherchée n'existe pas = erreur ! Au fait les valeur au format text (2007 / 49) sont des formules ou des valeurs en dur ?
Bonne soirée
Pat REDNEF Cousin de Guy .....
Oups !
une question:
dans ton post tu parles de 2007/48 et dans ton code il y a un espace
entre l'année (2007) et le numéro de semaine (49)
mon code suppose qu'il n'y a PAS d'espaces...
Sinon remplacer la ligne An & "/" & NSem
par An & " / " & NSem
Function ISOWeekNum(d1 As Date) As Integer
Dim d2 As Long
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
ISOWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function
Attention si la valeur cherchée n'existe pas = erreur !
Au fait les valeur au format text (2007 / 49) sont des formules ou des
valeurs en dur ?
Function ISOWeekNum(d1 As Date) As Integer Dim d2 As Long d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3) ISOWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7) End Function
Attention si la valeur cherchée n'existe pas = erreur ! Au fait les valeur au format text (2007 / 49) sont des formules ou des valeurs en dur ?
Bonne soirée
Pat REDNEF Cousin de Guy .....
Domi
Testé et approuvé, merci ;o) Domi
a écrit dans le message de news:
Oups !
une question: dans ton post tu parles de 2007/48 et dans ton code il y a un espace entre l'année (2007) et le numéro de semaine (49)
mon code suppose qu'il n'y a PAS d'espaces... Sinon remplacer la ligne An & "/" & NSem par An & " / " & NSem
Function ISOWeekNum(d1 As Date) As Integer Dim d2 As Long d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3) ISOWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7) End Function
Attention si la valeur cherchée n'existe pas = erreur ! Au fait les valeur au format text (2007 / 49) sont des formules ou des valeurs en dur ?
Bonne soirée
Pat REDNEF Cousin de Guy .....
Testé et approuvé, merci ;o)
Domi
<perso@patrickjacquart.fr> a écrit dans le message de news:
98dd3e19-60b6-4f5e-89c8-988bf2e34d99@e25g2000prg.googlegroups.com...
Oups !
une question:
dans ton post tu parles de 2007/48 et dans ton code il y a un espace
entre l'année (2007) et le numéro de semaine (49)
mon code suppose qu'il n'y a PAS d'espaces...
Sinon remplacer la ligne An & "/" & NSem
par An & " / " & NSem
Function ISOWeekNum(d1 As Date) As Integer
Dim d2 As Long
d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3)
ISOWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7)
End Function
Attention si la valeur cherchée n'existe pas = erreur !
Au fait les valeur au format text (2007 / 49) sont des formules ou des
valeurs en dur ?
Function ISOWeekNum(d1 As Date) As Integer Dim d2 As Long d2 = DateSerial(Year(d1 - Weekday(d1 - 1) + 4), 1, 3) ISOWeekNum = Int((d1 - d2 + Weekday(d2) + 5) / 7) End Function
Attention si la valeur cherchée n'existe pas = erreur ! Au fait les valeur au format text (2007 / 49) sont des formules ou des valeurs en dur ?