IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

AUJOURDHUI() et TODAY()


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut AUJOURDHUI() et TODAY()
    Bonjour,

    Je viens tout juste de commencer un stage en programmation VBA sous excel mais malheureusement pour moi je galère un petit peu...
    Je viens donc pour poster mes différentes questions, j'espère que vous pourrez m'aider, car malheureusement pour vous je vais beaucoup vous solliciter.
    On ferra étape par étage, je vais commencer mais vous expliquer le sujet de mon stage:
    Dans un premier temps je dois faire des modifs sur 2 fichiers excel afin de les rendre plus maniables.
    Dans un deuxieme temps je dois faire une liaison entre mes 2 fichiers excel et un ficher word
    Mais pour le moment j'ai pas mal de modif a faire sur les fichers excel!

    Mes 2 fichiers excel
    Le premier est un "bon de commande", je dois pour y ajouter la date d'aujourd'hui si le fichier est un nouveau fichier. (Mon premier probleme :s)
    j'ai fait une fonction qui lors de l'ouverture de mon fichier, si celui ci est l'original ("offres.xls"), je mets la date dans plusieurs cellules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Workbook_Open()
        If ActiveWorkbook.Name = "offres.xls" Then
        Today = "=AUJOURDHUI()"
        Worksheets("offre").Range("C12,E12").Value = Today
        Worksheets("offre").Range("D13").Formula = Today
        End If
    End Sub
    Quand j'ouvre alors mon ficher la date ne s'affiche pourtant pas!

    C'est un de mes nombreux problemes, j'espere que vous pourrez m'aider, merci d'avance

    Aurore

  2. #2
    Membre éprouvé
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Par défaut
    Bonjour
    Ta Sub doit être placée dans ThisWorkbook que tu trouve dans l'éditeur VBA
    Ensuite, il faut mettre les formules en anglais !
    Donc:
    En cas de recherche, utilise l'enregistreur de macros qui te donnera les syntaxes exactes
    Slts

  3. #3
    Membre confirmé Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    Merci bcp mais la date se met sous la forme jj/mm/aaaa est possible de l'avoir sous la forme jj-mm-aa?

  4. #4
    Membre éprouvé
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 58

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Par défaut
    Re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("C12,E12").NumberFormat = "dd-mm-yy"
    Je vais me répéter mais on trouve facilement tous ces codes en faisant:
    Outils/Macros/Nouvelle Macros
    Tu fais sous Excel ce que tu voudrais faire sous VBA
    Puis arrêter l'enregistrement
    Et dans VBA dans modules, on retrouve le code
    Slts

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut a.dequidt et le forum

    Je viens tout juste de commencer un stage en programmation VBA sous excel mais malheureusement pour moi je galère un petit peu...
    ça me rassure, je suis pas le seul Bienvenue aau club

    Je viens donc pour poster mes différentes questions, j'espère que vous pourrez m'aider, car malheureusement pour vous je vais beaucoup vous solliciter.
    On ferra étape par étage, je vais commencer mais vous expliquer le sujet de mon stage:
    Dans un premier temps je dois faire des modifs sur 2 fichiers excel afin de les rendre plus maniables.
    Dans un deuxieme temps je dois faire une liaison entre mes 2 fichiers excel et un ficher word
    Mais pour le moment j'ai pas mal de modif a faire sur les fichers excel!
    Un forum est un lieu d'entraide. sans aucune obligation => donc, tu ne "sollicites" pas, tu demandes un coup de main, qu'on t'accorde ou pas.
    Excel ça va, Word.... on verra

    Mes 2 fichiers excel
    Le premier est un "bon de commande", je dois pour y ajouter la date d'aujourd'hui si le fichier est un nouveau fichier. (Mon premier probleme :s)
    va voir dans l'aide VBA "DocumentProperties"
    j'ai fait une fonction qui lors de l'ouverture de mon fichier, si celui ci est l'original ("offres.xls"), je mets la date dans plusieurs cellules
    Je crois comprendre
    Quand j'ouvre alors mon ficher la date ne s'affiche pourtant pas!
    C'est un de mes nombreux problemes, j'espere que vous pourrez m'aider, merci d'avance

    ta macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_Open()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If ActiveWorkbook.Name = "offres.xls" Then
    Today = "=AUJOURDHUI()"
    Worksheets("offre").Range("C12,E12").Value = Today
    Worksheets("offre").Range("D13").Formula = Today
    End If
    End Sub
    Quelques remarques en passant
    les balises code sont plus adaptées pour le code (bizarre, hein !)

    Si t'est en formation VBA, pense à filer un coup de pied au cul à ton formateur : la déclaration des variables obligatoire permet d'obliger à réflêchir au futur contenu de la variable, et permet d'éviter les fautes de frappe. Choses dont un débutant à besoin.

    si tu déclares ta variable en date :
    Dim ToDay is Date
    la ligne Today = "=AUJOURDHUI()" quand tu la valides devient ToDay = "=AUJOURDHUI()"
    Tu sais que c'est bien la variable que tu as définie
    et la ligne, à l'exécution te renvoie une erreur, par ce qu'elle essaie de mettre du texte(string) dans une variable qui doit recevoir du "numérique"(Date).
    Bien sur, ce n'est qu'une supposition, puisque tu peux vouloir entrer une formule(mais ce n'est pas ce que je comprends, ni logique).

    Ensuite, un "bon programmeur" est feignant : retaper 50 fois le même code fatigue les doigts, multiplie le risque d'erreur et réduit la lisibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Workbook_Open()
    Dim ToDay as Date
    If ActiveWorkbook.Name = "offres.xls" Then
    Today = Date
    'Date système
    With Sheets("offre")
    'Mise en préfixe de la feuille : tout caractère de liaison le colle avant
    .Range("C12,E12") = Today
    'la date en dur en C12 et E12
    .Range("D13").Formula= "=Today()"
    End With
    End If
    End Sub
    ça devrait être un peu mieux
    .Range("D13").Formula= "=Today()"
    peut avantageusement être remplacé par
    .Range("D13").FormulaLocal = "=AUJOURDHUI()"
    A+

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Si j'ai bien compris, il faut mettre la date dans D13 uniquement si la cellule est vide puisque nouveau classeur
    si on met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("D13").FormulaLocal = "=AUJOURDHUI()"
    la cellule aura toujours la date du jour, meme si on ouvre le fichier le lendemain

    Avec ce code la cellule aura la date du jour si la cellule est vide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If Range("D13").Value = "" Then
        Range("D13").Value = Now
        Range("D13").NumberFormat = "dd-mm-yy"
    End If

  7. #7
    Membre confirmé Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    Bonjour

    Hier hier j'aqi tester le code de plateforme3 (merci a toi d'ailleur) qui me mettait bien la date au format que je recherchais, j'ai enregistré le ficher sous un autre nom et ce matin j'ai réouvert le fichier et la! La date avait changé

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 95
    Par défaut
    Bonjour,

    c'est normal puisqu'aujourd'hui ce n'est pas hier...
    Essaie la solution de jfontaine, elle te donne la réponse....

  9. #9
    Membre confirmé Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Par défaut
    mais en utilisant la solution de jfontaine, a l'ouverture du fichier original, les cellules ou la date doit etre mise ne sera pas vierge, mon probleme est que meme avec un test de nom du fichier si celui ci n'est pas "offres.xls", la date change !
    je cherche juste a ce que si j'ai fait une sauvegarde de "offres.xls" sous le nom "offresdu4septembre2007.xls" ou la date est le 4/09/07 et que je le rouvre le 5/09/07, je ne veux pas que la date change mais reste au 4/09/07.

Discussions similaires

  1. Création d'un "Today" pour PDA
    Par ChPortos dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/04/2007, 11h53
  2. [VBA-E] Sélection des lignes en utilisant AUJOURDHUI()
    Par gabygaby dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 11/04/2007, 05h05
  3. Wamp serveur $today
    Par dunbar dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 09/08/2006, 23h03
  4. Fonction today() et problème de langue
    Par zia77 dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 22/05/2006, 14h43
  5. Limiter les résultats d'une requête à \today\' - n jours
    Par Eddy Duflos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/10/2005, 08h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo