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.
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
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
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" <laogarno@globetrotter.net> wrote in message
news:bAUXa.16032$Yz.3266@charlie.risq.qc.ca...
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" <laogarno@globetrotter.net> a écrit dans le message de news:
Z0UXa.16029$Yz.2237@charlie.risq.qc.ca...
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" <laogarno@globetrotter.net> a écrit dans le message de news:
xTTXa.16028$Yz.14344@charlie.risq.qc.ca...
<jcb2@wanadoo.fr> a écrit dans le message de news:
MPG.199a2493a7a68e41989680@news.wanadoo.fr...
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
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
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
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" <prenom.maher@bigfoot.inutil.com> a écrit dans le message de
news: #91kNc5WDHA.3404@tk2msftngp13.phx.gbl...
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" <laogarno@globetrotter.net> wrote in message
news:bAUXa.16032$Yz.3266@charlie.risq.qc.ca...
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" <laogarno@globetrotter.net> a écrit dans le message de news:
Z0UXa.16029$Yz.2237@charlie.risq.qc.ca...
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" <laogarno@globetrotter.net> a écrit dans le message de news:
xTTXa.16028$Yz.14344@charlie.risq.qc.ca...
<jcb2@wanadoo.fr> a écrit dans le message de news:
MPG.199a2493a7a68e41989680@news.wanadoo.fr...
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
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
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
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" <alain.vallon@wanadoo.fr> wrote in message
news:OwP%23jd8WDHA.1384@TK2MSFTNGP10.phx.gbl...
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
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
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
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 !
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
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.
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