VBA : Recherche et selection d'une cellule selon 2 critères variables

Le
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:¬tiveCell, LookIn:=xlFormulas,
LookAt:=xlWhole, SearchOrder _
:=xlByRows, SearchDirection:=xlNext, MatchCase:úlse).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

Merci pour votre aide
Domi
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
perso
Le #5392361
Bsr Domi,

Et voilà,

Chez moi c'est Ok

Sub PourDomi()
Dim An As String, NSem As String

An = Format(Now, "YYYY")
NSem = ISOWeekNum(Date)


Cells.Find(What:=(An & "/" & NSem), After:¬tiveCell, _
LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder _
:=xlByRows, SearchDirection:=xlNext, MatchCase:úlse).Activate
ActiveCell.Offset(0, 1).Select


End Sub

Bonne soirée

Pat REDNEF
perso
Le #5392351
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


Sub PourDomi()
Dim An As String, NSem As String

An = Format(Now, "YYYY")
NSem = ISOWeekNum(Date)


Cells.Find(What:=(An & "/" & NSem), After:¬tiveCell, _
LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder _
:=xlByRows, SearchDirection:=xlNext, MatchCase:úlse).Activate
ActiveCell.Offset(0, 1).Select


End Sub

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
Le #5391771
Testé et approuvé, merci ;o)
Domi


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


Sub PourDomi()
Dim An As String, NSem As String

An = Format(Now, "YYYY")
NSem = ISOWeekNum(Date)


Cells.Find(What:=(An & "/" & NSem), After:¬tiveCell, _
LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder _
:=xlByRows, SearchDirection:=xlNext, MatchCase:úlse).Activate
ActiveCell.Offset(0, 1).Select


End Sub

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 .....
Publicité
Poster une réponse
Anonyme