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 :

gestion affichage message


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut gestion affichage message
    Bonjour,


    je vous sollicite à nouveau pour ce nouveau pb.

    Dans mon programme, j'ai une colonne (M) avec des dates de fin de contrat et une colonne avec des durées de préavis (N).
    Pour alerter l'utilisateur des dates de préavis, je fais afficher un message.
    Pour cela, je compare la date de preavis à la date d'aujourd'hui et je fais afficher un message pour avertir.
    Or cela suppose d'ouvrir le fichier tous les jours.

    code utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Not IsNull(Range("M" & i).Value) Or Not IsNull(Range("N" & i).Value) Then
        delais = Range("M" & i).Value - (Range("N" & i).Value * 30) 'pour convertir le mois en jours
        Range("AA" & i).Value = delais
     
            If Date = delais Then
                MsgBox ("Attention préavis pour la chaîne " & Cells(i, 1).Value)
            End If
    End If
    Par conséquent, si le fichier est ouvert plusieurs jours après, il n'y aura pas de message.

    Donc est-ce qu'il y aurait qqch qui dit que tant qu'on n'a pas validé, le message continue a être affiché.
    Du coup quand on ouvrirait le fichier plusieurs jours après la date de préavis, le message nous le rappelerait.


    J'espère avoir été assez claire...

    Merci d'avance.

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Tu peux enregistrer l'info : 'l'avertissement a été donné' dans un colonne. Si tu choisis 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If (Date >= delais) and (Range("O" & i)<>"averti") Then
    MsgBox ("Attention préavis pour la chaîne " & Cells(i, 1).Value)
    Range("O" & i).Value = "averti"
    End If
    Bon courage,

    PGZ

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    bonjour,
    tu peux passer par un flag de type vrai/faux ou 1/0 dans une cellule, que tu ajoutes dans ta série de tests.
    Non ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut
    Merci PGZ
    ça marche bien mais comment faire pour gérer les cellules vides
    (à savoir s'il n'y a pas de date de fin de contrat ou pas de préavis ou aucun des deux) ?
    Parce que j'ai aussi le message qui s'affiche quand le programme rencontre des cellules vides..........


    Je n'ai pas compris ta réponse jpcheck : serait-il possible d'avoir un exemple ?

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    plop;
    un exemple, à adapter bien sûr hein

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    If (Not IsNull(Range("M" & i).Value) Or Not IsNull(Range("N" & i).Value)) and Range("AZ" &i).value <> "testé"  Then
    delais = Range("M" & i).Value - (Range("N" & i).Value * 30) 'pour convertir le mois en jours
    Range("AA" & i).Value = delais
    Range("AZ" &i).value = "testé" 
     
    If Date = delais Then
    MsgBox ("Attention préavis pour la chaîne " & Cells(i, 1).Value)
    End If
    End If
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    pour gérer ta date tu peux ajouter une propriété personnalisée à ton classeur

    en faisant fichier/propriétes/personnalisation

    là tu ajoutes la propriété dtrait de type date
    tu ajoutes cette fonction à ton classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Function datrait(Optional x As Variant) As Date
    If Not IsMissing(x) Then ActiveWorkbook.CustomDocumentProperties("dtrait") = x
    datrait = ActiveWorkbook.CustomDocumentProperties("dtrait")
    End Function
    quand tu fais ton traitement tu invoques madate=datrait()
    ceci te donnera la dernière date de traitement
    en fin de traitement tu fais madate=datrait(date()) qui va garder trace du dernier traitement

  7. #7
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Re,

    Tu peux essayer cela, si je ne me trompre pas sur les noms de colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If (Not IsEmpty(Range("M" & i).Value)) And (Not Isempty(Range("N" & i).Value)) Then
        delais = Range("M" & i).Value - (Range("N" & i).Value * 30) 'pour convertir le mois en jours
        Range("AA" & i).Value = delais
        If (Date >= delais) and (Range("O" & i)<>"averti") Then
            MsgBox ("Attention préavis pour la chaîne " & Cells(i, 1).Value)
            Range("O" & i).Value = "averti"
        End If
    End if
    PGZ

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    Personnellement, je me contenterais de modifier (en rouge) par exemple, la couleur du contenu de la cellule concernée, au 1er avertissement.

    Il me suffurait alors de n'avertir que si 2 conditions sont réunies : dépassement de la date et cellule non encore en rouge.

    Ce procédé présente 3 avantages :

    1) visualiation facilitée des "avertis"
    2) recensement facilité des "avertis", en vue d'une éventuelle relance ou autre traitement
    3) économie d'une variable ou d'une cellule supplémentaire.

    Bonne continuation

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 27
    Par défaut
    Bonsoir

    Merci pour toutes vos réponses.

    Mon pb est résolu pour le moment.

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

Discussions similaires

  1. gestion photo - message d'erreur
    Par xboulney dans le forum Access
    Réponses: 2
    Dernier message: 16/03/2006, 12h45
  2. [debutant]gestion des messages des exceptions
    Par maxvador dans le forum Langage
    Réponses: 4
    Dernier message: 03/02/2006, 14h55
  3. Vérification de condition avec affichage message
    Par spirou dans le forum Langage
    Réponses: 6
    Dernier message: 05/01/2006, 21h27
  4. Gestion du message WM_SYSCOLORCHANGE avec WndProc
    Par yousserr dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 29/07/2005, 08h59
  5. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25

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