fonction aujourd'hui en vba

fonction aujourd'hui en vba - VB/VBA/VBS - Programmation

Marsh Posté le 25-01-2006 à 14:10:43    

bonjour, je souhaiterai savoir comment programmer la fonction aujourd'hui se trouvant dans Insertion/fonction en vba  
j'ai voulu faire une macro préenregistré mais il me la fais comme si c'étais du texte (pas tres clair ce que je raconte ; je met le code c'est plus parlant)
 
[code]
Sub Macro4()
 
    ActiveCell.FormulaR1C1 = "=TODAY()"
     
End Sub
sauf que moi je souhaite récupérer la date actuelle pour la mettre dans une variable :
 
date =today() ne marche pas y a t'il une autre fonction ? ou que dois je faire ??

Reply

Marsh Posté le 25-01-2006 à 14:10:43   

Reply

Marsh Posté le 25-01-2006 à 14:18:58    

salut,
 
déjà évite les variables qui portent le nom de fonctions. Date est également un type de données. Bonjour la confusion dans tout ça.
 
Mais rassure toi, tu y était presque
 
dim today as date
today = date
 et voilà.
tu as aussi now, qui retourne la date et l'heure système et time si tu veux juste l'heure.
 
++

Reply

Marsh Posté le 25-01-2006 à 14:29:17    

ha ba d'accord!!  je connaissais pas la fonction "date" par contre le type je connaissais mais j'ai mis ca pour me faire comprendre. Dans mon programme je mettrais autre chose ne t'inquiete pas ;)

Reply

Marsh Posté le 26-08-2008 à 19:20:26    

Bonjour,
 
Dans une feuille excel, je cherche à trouver selctionner la cellule contenant la date d'aujourd'hui en cliquant sur une CommandBox:
 
Voici le code que j'ai mis:
 

Code :
  1. Private Sub cmd_today_Click()
  2. Dim today As Date
  3. Dim celluletrouvee As Range
  4. Dim ligne As Integer
  5. Dim colonne As Integer
  6. today = Date
  7. Set celluletrouvee = Range("D3:HE3" ).Find(today, lookat:=xlWhole)
  8. If celluletrouvee Is Nothing Then
  9. MsgBox ("pas trouvé " + Chr(13) + Str(Date))
  10. Else
  11. ligne = celluletrouvee.Row
  12. col = celluletrouvee.Column
  13. MsgBox ("trouvé : ligne = " & ligne & " , colonne = " & colonne)
  14. celluletrouvee.Select
  15. End If
  16. End Sub


 
Mais, la fonction utilisée ne me trouve aucune cellule (alors que bien sur, il y a une cellule qui contient la date du jour...)
Par contre, cette cellule est une formule (=case de gauche +1)
 
Merci pour vos contrib'
 
@+

Reply

Marsh Posté le 26-08-2008 à 19:34:50    

comme ca ca marche

Code :
  1. Sub test()
  2. For Each cel In Sheets("Feuil1" ).Cells
  3. If cel = Date Then
  4. MsgBox ("trouvée en " & Chr(cel.Column + 64) & cel.Row)
  5. GoTo fin
  6. End If
  7. Next cel
  8. fin:
  9. End Sub


Message édité par 86vomito33 le 26-08-2008 à 19:35:08
Reply

Marsh Posté le 26-08-2008 à 19:57:50    

Merci.
Il y a de ça, le problème, c'est qu'il me trouve la date du jour qui est indiquée en cellule B1 alors que je veux qu'il trouve la cellule sur la ligne 3...
On ne peut pas affecter une plage de donnée ???
 
@+
 

Reply

Marsh Posté le 26-08-2008 à 20:01:33    

dans ce cas là, la plage correspond à toute la feuille. si tu veux la plage A3:C5 tu remplace

Code :
  1. For Each cel In Sheets("Feuil1" ).Cells


par

Code :
  1. For Each cel In Sheets("Feuil1" ).range("a3:C5" )


par contre je vois pas trop ton pb
 
edit:
mets ton fichier sur cjoint


Message édité par 86vomito33 le 26-08-2008 à 20:03:58
Reply

Marsh Posté le 26-08-2008 à 21:09:26    

Tu as tout juste 86vomito33 !!!, j'ai fait:
 

Code :
  1. Sub today()
  2. Dim cel As Object
  3. For Each cel In ActiveSheet.Range("D3:HE3" )
  4. If cel = Date Then
  5. cel.Select
  6. GoTo fin
  7. End If
  8. Next cel
  9. fin:
  10. End Sub


 
 
Et une petite dernière requête, vu que rien ne te résiste !!!
 
Je cherche à sélectionner la même cellule mais sur une autre feuille appelée "toto" ou Feuil4, j'essaie ceci sans succès:
 
 
 

Code :
  1. For Each cel In Worksheets(4).Range("D3:HE3" )
  2. If cel = Date Then
  3. cel.Select
  4. GoTo fin
  5. End If
  6. Next cel
  7. fin:


 
si tu trouve je serai  :bounce:   :D

Reply

Marsh Posté le 26-08-2008 à 22:30:31    

bizarre
 
worksheets(4) correspond a la quatrieme feuille du workbook (classeur)
donc ca serait pt worksheets("toto" ).cel.select

Reply

Marsh Posté le 26-08-2008 à 22:43:19    

Je vais t'expliquer plus en détail ce que je souhaite faire:
 
Dans un classeur excel, j'ai 2 feuilles:
 
- plan de charge
- planning matériel
 
Chacune dipose des dates jour par jour en colonne et de nom de personnes/liste de matériel en ligne.
Les dates du jour sont sur la ligne 3 des 2 feuilles.
 
J'ai réussi à faire une CommandBox qui me trouve la cellule contenant la date du jour dans l'ActiveWorkSheet.
 
Par contre, je cherche à créer une seconde CommandBox qui me permettrait en un clic d'aller sur la cellule de la date de l'ActiveCell de ma feuille.
 
Exemple: ci je suis sur le 30/09/2008 sur ma feuille "Plan de Charge", je vous cliquer sur le bouton et qu'il m'affiche (me sélectionne) la cellule 30/09/2008 de ma feuille "planning matériel"
 
J'espère avoir été clair !!!
 
Voici le code que j'ai mis:
 

Code :
  1. Private Sub cmd_date_plan_charge_Click()
  2. Dim date_plan As Date
  3. Dim cel As Object
  4. date_plan = Cells(3, ActiveCell.Column).Value
  5. MsgBox (Str(date_plan) + Chr(13) + Str(Date))
  6. For Each cel In Worksheets(4).Range("D3:HE3" )
  7. If cel = Date Then
  8. cel.Select
  9. GoTo fin
  10. End If
  11. Next cel
  12. fin:
  13. End Sub


 
Il me met une erreur d'exécution sur la ligne cel.Select
 
Sinon, le fichier est ici:
 
http://www.cijoint.fr/cjlink.php?f [...] IdXWO3.xls
 
@+


Message édité par jokair le 26-08-2008 à 22:49:40
Reply

Marsh Posté le 26-08-2008 à 22:43:19   

Reply

Marsh Posté le 26-08-2008 à 23:28:09    

ahaha
:)
 
quand je disais worksheets(4) je voulais dire 4ieme onglet et non pas Feuil4.
bref
 
worksheets(4) n'existe pas tu n'as que 3 feuilles
remplace worksheets(4) par worksheets("Plan de charge" ) ou par worksheets("Planning Matériel" ) en fonction de ce que tu veux


Message édité par 86vomito33 le 26-08-2008 à 23:30:41
Reply

Marsh Posté le 26-08-2008 à 23:41:25    

Ok, j'ai compris le coup du Worksheet(4)
 
Par contre, le VBA n'aime pas qu'on "appelle" une autre feuille...  
Peut-être le ActiveCell qui est sur une feuille et la cellule selectionnée qui est sur une autre:
 

Code :
  1. Private Sub cmd_date_plan_charge_Click()
  2. Dim date_plan As Date
  3. Dim cel As Object
  4. date_plan = Cells(3, ActiveCell.Column).Value
  5. MsgBox (Str(date_plan) + Chr(13) + Str(Date))
  6. For Each cel In Worksheets("Plan de charge" ).Range("D3:HE3" )
  7. If cel = date_plan Then
  8. cel.Select
  9. GoTo fin
  10. End If
  11. Next cel
  12. fin:
  13. End Sub


 
Si je remplace Worksheets("Plan de charge" ) (ou WorkSheets(2)) par Worksheets("Planning matériel" ), ça fonctionne...
C'est pas loin, mais c'est toujours pas ça.
 
Merci en tout cas de te soucier de mon cas ! :hello:  

Reply

Marsh Posté le 26-08-2008 à 23:45:25    

dernière solution  de la soiree
 
worksheets ("planning materiel" ).select ou l'autre
cel.select
 
edit:  
chez moi ca a l'air de marcher


Message édité par 86vomito33 le 26-08-2008 à 23:50:01
Reply

Marsh Posté le 26-08-2008 à 23:59:11    

tu es un chef !!!
 
Merci encore et bonne nuit !!!
 
@ bientôt

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed