Texte variable en fonction de la date

Résolu
Mathieu -  
 Mathieu -
Bonjour,
Je voudrais mettre dans une présentation une zone de texte qui change en fonction de la date du jour, comme par exemple afficher un anniversaire en fonction du jour. J'avais pensé à une macro mais comment faire ? Ou sinon d'une autre manière.
Merci d'avance.

3 réponses

  1. m@rina Messages postés 27519 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    Bonjour,

    J'espère que tu n'as pas 365 dates à remplir !

    Voici un exemple de macro qui suppose :
    - que la zone de texte se trouve dans la première diapo. Si ce n'est pas le cas, change le numéro (CurrentShowPosition),
    - que cette zone de texte se nomme "zone".

    Tu mets la macro dans un module quelconque, il s'agit d'une macro automatique, et donc elle se lancera toute seule dès la première diapo affichée en diaporama.
    A toi de compléter ce que tu veux faire figure dans la zone de texte, en fonction de la date du jour. Tu dois donc ajouter autant de :
    Case "date"
    montexte = "XXXXXXXX"

    que de jours que tu souhaites compléter.

    Sub OnSlideShowPageChange(ByVal diaporama As SlideShowWindow)
    'macro écrite par m@rina
    Dim jour As Date, montexte As String
    jour = Date
    Select Case jour
    Case "24/12/2015"
    montexte = "Reveillon de Noël"
    Case "25/12/2015"
    montexte = "Noël"
    Case "31/12/2015"
    montexte="Saint Sylvestre"
    End Select

    If diaporama.View.CurrentShowPosition = 1 Then
    ActivePresentation.Slides(1).Shapes("zone").TextFrame.TextRange.Text = montexte
    End If
    End Sub


    m@rina

    Nous ne sommes pas devins : n'oubliez pas d'indiquer la version du logiciel utilisé, et comment vous avez procédé.
    1
    1. Mathieu
       
      Merci, mais quand je copie rien ne s'affiche.
      Quand tu dis une zone de texte, c'est bien une TextBox ?
      Est ce que tu peux m'envoyer une fichier powerpoint avec la macro dedans ?

      Merci d'avance, et bonne fêtes de fin d'année :)
      0
    2. m@rina Messages postés 27519 Date d'inscription   Statut Modérateur Dernière intervention   11 562
       
      Bonjour,

      Non, une zone de texte normale (depuis la galerie des formes), et il faut la nommer avec le nom utilisé dans la macro, à savoir "zone" dans mon exemple (ou le nom que tu souhaites).
      0
    3. Mathieu
       
      Super ça marche maintenant, merci vraiment.
      Est il possible en plus de faire apparaitre a diapo uniquement en fonction des dates que j'ai rentrées dans la macro ci dessous (j'ai environ une quarantaine de date) ?
      Et aussi est il possible aussi de programmer l'affichage d'une diapo uniquement le lundi et une autre uniquement le vendredi ?
      Merci
      0
    4. m@rina Messages postés 27519 Date d'inscription   Statut Modérateur Dernière intervention   11 562
       
      Bonjour,

      Oui tout ça est possible.
      Pour commencer, le mieux est de nommer les deux diapos spécifiques aux lundi et vendredi de façon à pouvoir les déplacer sans souci. Pour cela une première macro que tu lances une fois et que tu peux détruire ensuite. Bien sûr, tu mets les bons numéros de diapos à la place du 3 et du 4:

      Sub truc()
      ActivePresentation.Slides(3).Name = "lundi"
      ActivePresentation.Slides(4).Name = "vendredi"
      End Sub


      Pour la macro événementielle, il faudra maintenant qu'elle se lance dès la première diapo. Donc, dès le début on affiche la diapo lundi si on est un lundi et la diapo vendredi si on est un vendredi. SInon, elles sont masquées.

      Par défaut la diapo qui contient la zone de texte sera affichée au lancement du diaporama. Mais si le jour ne correspond pas à l'un de tes jours, elle sera masquée automatiquement.
      Dans la macro, j'ai mis le numéro 2 pour cette diapo. Mets bien le bon numéro. Et tu peux également utiliser un nom comme pour les deux autres.

      Sub OnSlideShowPageChange(ByVal diaporama As SlideShowWindow)
      'macro écrite par m@rina
      Dim jour As Date, montexte As String
      If diaporama.View.CurrentShowPosition = 1 Then
      ActivePresentation.Slides(2).SlideShowTransition.Hidden = msoFalse

      If Weekday(Date, 2) = 1 Then
      ActivePresentation.Slides("lundi").SlideShowTransition.Hidden = msoFalse
      Else
      ActivePresentation.Slides("lundi").SlideShowTransition.Hidden = msoCTrue
      End If

      If Weekday(Date, 2) = 5 Then
      ActivePresentation.Slides("vendredi").SlideShowTransition.Hidden = msoFalse
      Else
      ActivePresentation.Slides("vendredi").SlideShowTransition.Hidden = msoCTrue
      End If

      jour = Date
      Select Case jour
      Case "24/12/2015"
      montexte = "Reveillon de Noël"
      Case "25/12/2015"
      montexte = "Noël"
      Case "3/01/2016"
      montexte = "Sainte Geneviève"
      Case Else
      ActivePresentation.Slides(2).SlideShowTransition.Hidden = msoCTrue
      End Select

      ActivePresentation.Slides(2).Shapes("zone").TextFrame.TextRange.Text = montexte
      End If
      End Sub


      m@rina
      0
    5. Mathieu
       
      Merci mais en faite j'avais deux questions indépendantes.
      Pour le lundi et vendredi c'est bon , le code ne premier correspond.

      Mais pour celle qui affiche le message en fonction de la date du jour, je voudrais que cette diapo s'affiche uniquement en fonction des jours de l'année ou j'ai un anniversaire qui correspond (une des 40 dates rentrées dans le code)
      0
  2. m@rina Messages postés 27519 Date d'inscription   Statut Modérateur Dernière intervention   11 562
     
    Bonjour,

    Dans PowerPoint, il y a deux manières de lancer une macro :

    - soit elle se lance en cours de diaporama, soit automatiquement soit en cliquant sur un objet

    - soit on la lance en mode travail, et là c'est forcément manuel.

    Qu'est ce que tu souhaites exactement ?

    m@rina
    0
  3. Mathieu
     
    Bonjour, merci de votre réponse mais en faite je veux qu'elle se lance automatiquement quand je passe en mode diaporama et ma question était quel code faut écrire pour que ça marche.

    Mathieu
    0