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

VBA Discussion :

ré-affichage d'un msgbox dans x jours (selon choix utilisateur)


Sujet :

VBA

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Points : 16
    Points
    16
    Par défaut ré-affichage d'un msgbox dans x jours (selon choix utilisateur)
    Bonjour à toutes et à tous,

    Lors de l'affichage d'un msgbox (ex: "vous avez oubliez de controler les N° 1+2..."), qqn sait-il s'il est possible de réafficher ce dernier dans 1,7 ou 15 jours (selon chois utilisateur).


    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    C'est du VBA-Excel? Word? PPT?.... ??? Bon on va supposer que c'est du Excel...
    comment est lancée la MsgBox? A l'ouverture du classeur Excel? Il suffit de rajouter un contrôle avant de lancer cette MsgBox.

    Au préalable, le choix de l'utilisateur aura été sauvegardé qq part, comme dans une cellule d'une feuille masquée. Il faut donc 2 variables : dernier lancement, et intervalle choisit.
    Ensuite si le Now() ou Date() (suivant l'intervalle) est superieur au dernier lancement + l'intervalle, alors lancer la MsgBox... puis enregistrer le Now() ou Date() comme derniere date de lancement...

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Points : 16
    Points
    16
    Par défaut ré-affichage d'un msgbox dans x jours (selon choix utilisateur)
    je vois vaguement comment faire... aurais-tu un lien ou un exemple? Faut-il créer soit même l msgbox via une userform?

    Citation Envoyé par dadavyvy
    Au préalable, le choix de l'utilisateur aura été sauvegardé qq part, comme dans une cellule d'une feuille masquée. Il faut donc 2 variables : dernier lancement, et intervalle choisit.
    Ensuite si le Now() ou Date() (suivant l'intervalle) est superieur au dernier lancement + l'intervalle, alors lancer la MsgBox... puis enregistrer le Now() ou Date() comme derniere date de lancement...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    Non, pas d'exemple, juste des idées...
    Pour la MsgBox, il suffit d'utiliser celle de VBA, sauf si tu veux une MsgBox plus évoluée...
    1/ D'abord, il faut le code qui lance la msgbox à l'ouverture.
    2/ Il faut le code qui enregistre le choix de l'utilisateur (nb de jours), dans une cellule par exemple.
    Ensuite on pourra t'aider à modifier le 1er pour prendre en compte le 2e.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Points : 451
    Points
    451
    Par défaut
    OK pour t'aider a avancer...
    Que le lancement de la macro se fait a l'ouverture du classeur, et que la date de dernier lancement est enregistré dans la cellule [A1] de la feuille Feuil1 (dans VBA), et le nombre de jour est enregistré dans [A2] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub Workbook_Open()
        If (Not IsDate(Feuil1.Range("A1"))) Or Feuil1.Range("A2") = "" Or (Not IsNumeric(Feuil1.Range("A2"))) Then
            ' si dernier lancement non Date ou intervalle vide ou non numeric alors afficher
            Call LeMessage
        ElseIf Fix(Feuil1.Range("A2")) = -1 Then
            ' si intervalle = -1, ne rien faire
            Exit Sub
        Else
            ' si aujourd'hui - dernier lancement >= intervalle en jours alors afficher
            If DateDiff("d", CDate(Feuil1.Range("A1")), Date) >= Fix(Feuil1.Range("A2")) Then Call LeMessage
        End If
    End Sub
     
    Sub LeMessage()
        Dim texte As String, intervalle
        ' toute la partie qui définit le texte du message (les lignes non remplies, etc...)
        texte = "Faut bien travailler sinon..."
     
        MsgBox texte, vbInformation + vbOKOnly
        ' enregistre la date du dernier lancement
        Feuil1.Range("A1") = Date
     
        ' demande si utilisateur veut repeter ou non le message
        intervalle = Interaction.InputBox("Voulez-vous que le message se répète ?" & vbCrLf & _
                     "Si oui, entrer l'intervalle en jours pour le prochain lancement" & vbCrLf & _
                     "Si non, entrer 0 ou -1", "Prochaine vérification?")
        If Not IsNumeric(intervalle) Then   ' si non numeric, considerer que c'est non
            intervalle = -1
        ElseIf Fix(intervalle) < 1 Then     ' si inferieur a 1, considerer que c'est non
            intervalle = -1
        Else: intervalle = Fix(intervalle)  ' prendre la partie entiere
        End If
        ' enregistrer l'intervalle
        Feuil1.Range("A2") = intervalle
        ThisWorkbook.Save
    End Sub
    Désolé, je n'ai pas testé...

  6. #6
    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 543
    Points
    15 543
    Par défaut
    Une autre solution consiste à mettre à jour la date dans ton code. Le code suivant remplace la date de référence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub Workbook_Open()
        LaDate = "21/4/2007" 'Ligne 2 -> A adapter
        LeNom = Environ("Username")
        Select Case LeNom
            Case "marcel"
                Delai = 7
            Case "octave"
                Delai = 1
            Case "auguste"
                Delai = 10
            Case "moimoimoi"
                Delai = 0
            Case Else
        End Select
        If DateDiff("d", LaDate, Now()) > Delai Then
            If LeMessage() Then 'si oui, la date est mise à jour
                msg = "LaDate = Now()"
                'Remplace la troisième ligne si Message = true
                Application.VBE.ActiveCodePane.CodeModule.ReplaceLine 2, msg
            End If
        End If
    End Sub
     
    Function LeMessage() As Boolean
        LeMessage = MsgBox("Faut bien travailler..." & vbCr & _
        "Tu veux travailler plus de 35h ?", vbYesNo, "QUESTION") = vbYes
    End Function
    A adapter

    NB - Tu peux remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        LeNom = Environ("Username")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        LeNom = Application.Username
    selon que les utilisateurs sont sur le même poste de travail ou non.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Points : 16
    Points
    16
    Par défaut ré-affichage d'un msgbox dans x jours (selon choix utilisateur)
    Merci pour votre aide.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/07/2015, 11h36
  2. Réponses: 0
    Dernier message: 08/09/2014, 10h07
  3. Réponses: 4
    Dernier message: 29/04/2011, 22h34
  4. affichage d'une MsgBox en fonction d'un jour
    Par kuhnden dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/10/2007, 19h56
  5. Affichage d'une date dans x jours
    Par Paulux1 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/07/2006, 16h49

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