OVH Cloud OVH Cloud

acces sur une feuille sur la date du jour

7 réponses
Avatar
bonsoir,

je cherche comment activer la cellule de la colonne C =E0 droite de celle=
=20
de la colonne B qui contient la date du jour, d=E8s l'acc=E8s =E0 ma feuill=
e.

ex :

=09A=09=09B=09=09C
1=09ven=09=0901/08/2003=09
2=09sam=09=0902/08/2003
3=09dim=09=0903/08/2003
4=09lun=09=0904/08/2003
5=09mar=09=0905/08/2003=09XXX

aujourd hui 05/08/03 je veux que la cellule qui contient XXX soit la=20
cellule active d=E8s que j'arrive sur ma feuille

merci de votre aide

7 réponses

Avatar
garnote
a écrit dans le message de news:

bonsoir,

je cherche comment activer la cellule de la colonne C à droite de celle
de la colonne B qui contient la date du jour, dès l'accès à ma feuille.

ex :

A B C
1 ven 01/08/2003
2 sam 02/08/2003
3 dim 03/08/2003
4 lun 04/08/2003
5 mar 05/08/2003 XXX

aujourd hui 05/08/03 je veux que la cellule qui contient XXX soit la
cellule active dès que j'arrive sur ma feuille

merci de votre aide
Avatar
garnote
Un milliard de fois plus rapide !!!

Private Sub Worksheet_Activate()
Dim Plage As Range
d = Date
Set Plage = Range("B:B").Find(d, LookIn:=xlFormulas)
Plage.Offset(0, 1).Select
End Sub

;-)))

Serge

"garnote" a écrit dans le message de news:
Z0UXa.16029$
Fais un clic droit sur ton onglet, clique sur
Visualiser le code et colle cette macro.

Private Sub Worksheet_Activate()
For Each d In Range("B:B")
If d.Value = Date Then
d.Offset(0, 1).Select
Exit Sub
End If
Next
End Sub

Serge

"garnote" a écrit dans le message de news:
xTTXa.16028$

a écrit dans le message de news:

bonsoir,

je cherche comment activer la cellule de la colonne C à droite de celle
de la colonne B qui contient la date du jour, dès l'accès à ma feuille.

ex :

A B C
1 ven 01/08/2003
2 sam 02/08/2003
3 dim 03/08/2003
4 lun 04/08/2003
5 mar 05/08/2003 XXX

aujourd hui 05/08/03 je veux que la cellule qui contient XXX soit la
cellule active dès que j'arrive sur ma feuille

merci de votre aide








Avatar
Daniel.M
Salut Serge,

Tu devrais mettre un On Error Resume Next au cas où la date n'est pas
trouvée.

Pour ton info, il y a déjà eu une ficelle sur MPFE avec les résultats des
tests réalisés (Denis Michon et moi).

Ma conclusion personnelle est que .Find ne fonctionne pas toujours. Par
exemple, aussi paradoxal que cela puisse paraître, essaie avec la date
d'aujourd'hui qui serait LE RÉSULTAT d'une FORMULE comme ÚTE(2003,8,5).
Chez moi, ça ne fonctionne pas. Il y a aussi des dépendances avec le système
de représentation des dates, la langue, le format de dates, etc).

Denis Michon a produit un classeur là-dessus et il est sûrement disponible
sur www.excelabo.net

Ne désespère pas : Application.Match avec un Long fonctionne toujours (peu
importe le format, la langue, le système de représentation des dates,
formule ou non, alouette).

Donc:

Private Sub Worksheet_Activate()
Dim res As Variant
res = Application.Match(CLng(Date), Range("B:B"), 0)
If Not IsError(res) Then Cells(res, 3).Select ' trouvé
End Sub

Salutations,

Daniel M.

"garnote" wrote in message
news:bAUXa.16032$
Un milliard de fois plus rapide !!!

Private Sub Worksheet_Activate()
Dim Plage As Range
d = Date
Set Plage = Range("B:B").Find(d, LookIn:=xlFormulas)
Plage.Offset(0, 1).Select
End Sub

;-)))

Serge

"garnote" a écrit dans le message de news:
Z0UXa.16029$
Fais un clic droit sur ton onglet, clique sur
Visualiser le code et colle cette macro.

Private Sub Worksheet_Activate()
For Each d In Range("B:B")
If d.Value = Date Then
d.Offset(0, 1).Select
Exit Sub
End If
Next
End Sub

Serge

"garnote" a écrit dans le message de news:
xTTXa.16028$

a écrit dans le message de news:

bonsoir,

je cherche comment activer la cellule de la colonne C à droite de
celle



de la colonne B qui contient la date du jour, dès l'accès à ma
feuille.




ex :

A B C
1 ven 01/08/2003
2 sam 02/08/2003
3 dim 03/08/2003
4 lun 04/08/2003
5 mar 05/08/2003 XXX

aujourd hui 05/08/03 je veux que la cellule qui contient XXX soit la
cellule active dès que j'arrive sur ma feuille

merci de votre aide












Avatar
garnote
J'allais justement dire la même chose !!!

Private Sub Worksheet_Activate()
Dim res As Variant
res = Application.Match(CLng(Date), Range("B:B"), 0)
If Not IsError(res) Then
Cells(res, 3).Select
Else
MsgBox "la date du jour n'apparaît pas dans la colonne B." _
, vbExclamation, "Désolé ,"
End If
End Sub

;-)))

Serge


"Daniel.M" a écrit dans le message de
news: #
Salut Serge,

Tu devrais mettre un On Error Resume Next au cas où la date n'est pas
trouvée.

Pour ton info, il y a déjà eu une ficelle sur MPFE avec les résultats des
tests réalisés (Denis Michon et moi).

Ma conclusion personnelle est que .Find ne fonctionne pas toujours. Par
exemple, aussi paradoxal que cela puisse paraître, essaie avec la date
d'aujourd'hui qui serait LE RÉSULTAT d'une FORMULE comme ÚTE(2003,8,5).
Chez moi, ça ne fonctionne pas. Il y a aussi des dépendances avec le
système

de représentation des dates, la langue, le format de dates, etc).

Denis Michon a produit un classeur là-dessus et il est sûrement disponible
sur www.excelabo.net

Ne désespère pas : Application.Match avec un Long fonctionne toujours (peu
importe le format, la langue, le système de représentation des dates,
formule ou non, alouette).

Donc:

Private Sub Worksheet_Activate()
Dim res As Variant
res = Application.Match(CLng(Date), Range("B:B"), 0)
If Not IsError(res) Then Cells(res, 3).Select ' trouvé
End Sub

Salutations,

Daniel M.

"garnote" wrote in message
news:bAUXa.16032$
Un milliard de fois plus rapide !!!

Private Sub Worksheet_Activate()
Dim Plage As Range
d = Date
Set Plage = Range("B:B").Find(d, LookIn:=xlFormulas)
Plage.Offset(0, 1).Select
End Sub

;-)))

Serge

"garnote" a écrit dans le message de news:
Z0UXa.16029$
Fais un clic droit sur ton onglet, clique sur
Visualiser le code et colle cette macro.

Private Sub Worksheet_Activate()
For Each d In Range("B:B")
If d.Value = Date Then
d.Offset(0, 1).Select
Exit Sub
End If
Next
End Sub

Serge

"garnote" a écrit dans le message de news:
xTTXa.16028$

a écrit dans le message de news:

bonsoir,

je cherche comment activer la cellule de la colonne C à droite de
celle



de la colonne B qui contient la date du jour, dès l'accès à ma
feuille.




ex :

A B C
1 ven 01/08/2003
2 sam 02/08/2003
3 dim 03/08/2003
4 lun 04/08/2003
5 mar 05/08/2003 XXX

aujourd hui 05/08/03 je veux que la cellule qui contient XXX soit la
cellule active dès que j'arrive sur ma feuille

merci de votre aide















Avatar
Daniel.M
Salut Alain,

En effet, la formule dans ton classeur permet de faire abstraction des
format/systèmes de représentation/formules qui génèrent la date car elle
procède à une comparaison numérique ce qui est l'idéal.

Un bémol:

Ça fonctionne bien si on a une seule date concordante dans la plage. Mais ça
ne retourne pas toujours le bon résultat lorsqu'il y a plusieurs dates
concordantes (i.e. qui satisfont la condition).
Par exemple, avec =AUJOURDHUI() en D2, puis choisir de tester zz1.
Résultat: D4 (au lieu de C4 ou D2).

Il y a moyen de s'assurer de la correspondance correcte entre les lignes et
colonnes choisies, mais c'est un peu plus loin dans mes tiroirs et il est
tard (désolé).

Salutations,

Daniel M.

"AV" wrote in message
news:OwP%
Il y a même ce classeur là qui met en évidence une méthode qui fonctionne
quel

que soit le format des cellules dates et la façon dont celles-ci ont été
obtenues (constantes ou formules)
Problématique : trouver la date du jour (la dernière si celle-ci figure
plusieurs fois) dans une plage de x lignes et x colonnes
NB : pour la 1°, remplacer "max" par "min"
La méthode find va échouer (de mémoire car j'ai pas retesté) dans 3 des 6
cas de

figures présentés
http://disciplus.simplex.free.fr/classeursxl/av-trouvedatejour.zip

AV


Avatar
AV
Tout à fait Ok pour le bémol !
D'ailleurs dans le fichier y a pas de doublon de la date dans les différentes
zones
Bon...faut aussi que je vois dans les tiroirs ou dans mes neurones mais la
surchauffe est fortement déconseillé en ce moment et ici : Météo France hier :
43°.2 !

AV
Avatar
Daniel.M
Salut,

Il y a ça qui privilégie les lignes au dépend des colonnes dans la recherche
du MAXimum.
Comme dans la routine d'Alain, on peut remplacer MAX par MIN.

Sub Cherch_Date2()
Dim CeJour&, tmp As String, tmp2 As String
Dim RAD As String ' Range Adresse

CeJour = Date * 1 ' ou d'autre chose (mais tjrs à convertir en Long)
On Error Resume Next
RAD = Range([G3].Value).Address
Range(RAD).Select
tmp = "MAX(IF(" & RAD & "=" & CeJour & ",ROW(" & RAD & _
")+COLUMN(" & RAD & ")/512))"
tmp2 = "­DRESS(INT(" & tmp & "), ROUND(512 * MOD(" & tmp & ",1),0))"

Range(Evaluate(tmp2)).Activate

If Err.Number = 0 Then GoTo fin
MsgBox "Erreur N° : " & Err.Number
On Error GoTo 0
fin:
End Sub

Salutations,

Daniel M.