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 :

VBA Excel Modification de la date en fonction du nom du classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 77
    Points
    77
    Par défaut VBA Excel Modification de la date en fonction du nom du classeur
    Salut,

    Je cherche a ce qu'a l'ouverture de mon classeur, si celui ci possede le nom "logiciel_offre.xls", on affecte aux cellules C12 et D13 la date d'aujourdhui:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      Private Sub Workbook_Open()
     
          Dim ToDay As Date
          If ActiveWorkbook.Name = "Logiciel_offres_v8.xls" Then
              Range("C12:E12").Select
              ActiveCell.FormulaR1C1 = "=TODAY()"
              Range("D13").Select
              ActiveCell.FormulaR1C1 = "=TODAY()"
          End If
      End Sub
    Et je voudrais qu'a l'ouverture d'une coipe de ce fichier, la date ne soit pas celle d'aujourd'hui mais celle de la création de ce fichier

  2. #2
    Expert éminent 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 : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    En utilisant l'instruction Instr qui cherchera si le nom du classeur contient le texte que tu cherches.
    Instr respectant la casse, met tout en majuscule avec Ucase (ou ne minusucule)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If InStr(1, UCase(ActiveWorkbook.Name), UCase("Logiciel_offres"), vbTextCompare) > 0 Then
        Range("C12:E12").Select
        ActiveCell.FormulaR1C1 = "=TODAY()"
        Range("D13").Select
        ActiveCell.FormulaR1C1 = "=TODAY()"
    End If

  3. #3
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Avec cette syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=TODAY()"
    la cellule contiendra toujours la date du jour quand on ouvrira le fichier.

  4. #4
    Membre régulier Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 77
    Points
    77
    Par défaut
    Bonjour a tous,


    Jérome ta solution ne marche pas
    Je pense procèdé autrement, je m'explique.

    En C12 et D13, la date d'aujourd'hui via la fonction =AUJOURDHUI()
    en M1, la date de l'ancienne ouverture via une copie de la date a la fermeture

    J'aimerai créer une boite de dialogue a l'ouverture du fichier, qui informerai l'utilisateur de la date de l'ancienne ouverture, et lui laisserai le choix de la date, soit la date de l'ancienne ouverture soit la date d'aujourd'hui.

  5. #5
    Expert éminent 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 : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    AlainTech a expliqué pourquoi ca ne fonctionne pas.
    Insere plutot la valeur de la date plutot que la formule inserat la date du jour

  6. #6
    Membre régulier Avatar de a.dequidt
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 77
    Points
    77
    Par défaut
    Ma solution marche

    Ce que je cherche a faire maintenant c'est

    J'aimerai créer une boite de dialogue a l'ouverture du fichier, qui informerai l'utilisateur de la date de l'ancienne ouverture, et lui laisserai le choix de la date, soit la date de l'ancienne ouverture soit la date d'aujourd'hui.

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    Voir du côté d'un userForm et quelques contrôles
    A+

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu as deux demandes contradictoires, l'une concerne la date d'aujourd'hui, et les solutions proposées fonctionnent si au lieu de mettre la formule dans la cellule, tu mets la date elle-même à l'ouverture du fichier, et si, au lieu de mettre une formule dans la cellule, tu mets la date d'aujourd'hui à la fermeture du fichier, en cas d'enregistrement.
    Tant que ton fichier n'aura pas été enregistré, il portera dans une cellule la date de dernier enregistrement, et dans l'autre la date d'ouverture, c à d celle d'aujourd'hui.
    Tu as les événements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_Open()
    pour coller la date d'aujourd'hui dans la cellule "La date d'aujourd'hui"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell = Format(Date(), "Le format que tu veux")
    et tu as l'événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Où, dans la Cellule "la date de dernier enregistrement", tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell = Format(Date(), "Le format que tu veux")
    Dans cette dernière cellule et tant que ton fichier n'est pas enregistré, tu as la date du dernier enregistrement.

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

    Informations forums :
    Inscription : Septembre 2007
    Messages : 144
    Points : 77
    Points
    77
    Par défaut
    ouskel'n'or>>
    J'ai déjà ça dans mon fichier, en C12 et D13 j'ai la date d'aujourd'hui et en M1 la date du dernier enregistrement.

    La solution avec un userform est ce qu'il me faut, savez vous ou je peux en savoir plus sur ce cas?

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Dans l'environemment VBA (Alt+F11) tu ajoute un UserForm (dans insertion)
    Dés qu'il est ouvert tu tape
    A+

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell = Format(Date(), "Le format que tu veux")
    Tss, tss...

    Ne jamais forcer le format pour une date dans une cellule.
    C'est le meilleur moyen d'avoir des problèmes d'interprétation par la suite.

    Il faut laisser Excel stocker la valeur dans son format interne et jouer sur l'affichage de la cellule.

    Autrement dit:

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    Tss, tss...

    Ne jamais forcer le format pour une date dans une cellule.
    C'est le meilleur moyen d'avoir des problèmes d'interprétation par la suite.

    Il faut laisser Excel stocker la valeur dans son format interne et jouer sur l'affichage de la cellule.

    Autrement dit:
    Je serais d'accord avec toi s'il s'agissait d'une colonne au format de date mais là, il ne dit pas quel est le format de la colonne et parle d'une plage de cellules sur une même ligne ( Range("C12:E12") ) et il m'étonnerait bien que les colonnes correspondantes contiennent également de dates... mais c'est pas sûr...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-Excel] modification automatique de la couleur des cellules
    Par ricachu dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/06/2008, 15h30
  2. {VBA Excel} demande d'explication sur la fonction ClearContents
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/06/2007, 15h24
  3. [VBA-Excel] Tri autoamtique de Date
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/01/2007, 10h55
  4. VBA Excel- Modification des datalabels d´un graphe
    Par doringen dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2006, 10h02
  5. [VBA-Excel] modification d'un champ de Listview
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/09/2006, 15h31

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