Message d'alerte date butoir
Résolu/Fermé
AC211984
Messages postés
30
Date d'inscription
mardi 2 décembre 2014
Statut
Membre
Dernière intervention
20 avril 2016
-
Modifié par crapoulou le 12/04/2016 à 21:26
AC211984 Messages postés 30 Date d'inscription mardi 2 décembre 2014 Statut Membre Dernière intervention 20 avril 2016 - 20 avril 2016 à 13:57
AC211984 Messages postés 30 Date d'inscription mardi 2 décembre 2014 Statut Membre Dernière intervention 20 avril 2016 - 20 avril 2016 à 13:57
A voir également:
- Message d'alerte date butoir
- Recuperer message whatsapp - Guide
- Message d'absence thunderbird - Guide
- Whatsapp date incorrecte ✓ - Forum Mobile
- Cette photo n’a pas été prise cette année. trouvez la date, l'heure et avec quel modèle d'appareil photo elle a été prise. - Forum Graphisme
- Message non envoyé appuyez pour réessayer - Forum Mobile
2 réponses
Utilisateur anonyme
12 avril 2016 à 22:58
12 avril 2016 à 22:58
Bonsoir AC211984,
La règle sur le forum est de se tutoyer, dans le respect et avec courtoisie. Tu peux donc me tutoyer toi aussi. Tu as écris :
Donc :
1) Pour 7 jours ou plus : aucune alerte
2) Pour moins de 7 jours : Alerte n° 1
3) Pour 1 jour : Alerte n° 2
Comme la condition "1 jour" fait partie de la condition "moins de
7 jours" (car 1 < 7), le plus simple pour dissocier cela est de commencer par tester d'abord le cas "1 jour" :
1) Pour 1 jour : Alerte n° 2 ; sinon :
2) Pour moins de 7 jours : Alerte n° 1
Cela suffit : inutile d'ajouter « sinon : » à la fin de la ligne 2
puisqu'il n'y a aucune alerte pour 7 jours ou plus.
=========================================
Pour la façon d'écrire un programme, tu verras qu'il est beaucoup plus facilement lisible si tu utilises l'indentation : c'est le fait de ne pas faire commencer toutes les lignes contre la marge gauche :
On ajoute une marge d'espaces à chaque fois qu'on descend d'un niveau logique dans le code, et on réduit cette marge d'espaces quand on revient au précédent niveau logique.
Même si ça n'est pas très clair pour le moment, tu comprendras vite juste en voyant l'indentation des autres programmes.
Et ça commence juste ci-après ! 😉
=========================================
Pour la façon d'écrire un test avec If, tu connais bien sûr :
If Condition Then
Partie1
Else
Partie2
End If
Mais il y a aussi :
If Condition1 Then
Partie1
ElseIf Condition2 Then
Partie2
ElseIf Condition3 Then
Partie3
Else
Partie4
End If
a) Le dernier groupe Else Partie4 est facultatif.
b) Tu peux tester plus de conditions (mettre d'autres ElseIf ...).
Remarque bien que ElseIf est un seul mot-clé, donc SANS espace entre Else et If).
Mais au besoin, sur une seule ligne, il faudra écrire :
If Condition1 Then Partie1 Else If Condition2 Then Partie2
Là, il faut 2 mots-clés Else et If ; si tu mets un seul mot-clé ElseIf, ça provoquera une erreur lors de la compilation !
=========================================
Voici ton code réécrit avec indentation et correction d'erreurs :
Bien sûr, les lignes 10 et 11 doivent être sur la même ligne.
De même pour les lignes 13 et 14. C'est la largeur étroite de la fenêtre de message qui empêche de mettre de longues lignes,
comme on peut le faire dans l'éditeur VBA.
C'est évident que ça nuit à l'indentation, mais le seul moyen de faire autrement serait de joindre un fichier (via Cjoint par exemple).
Par précaution, fais des essais sur une copie du fichier original ;
mais normalement, ça devrait marcher. 😊
La règle sur le forum est de se tutoyer, dans le respect et avec courtoisie. Tu peux donc me tutoyer toi aussi. Tu as écris :
Je souhaite avoir 2 types d'alertes, la 1ère arrivant à moins de 7 jours de la fin de la tâche et la deuxième arrivant à 1 jour de la fin.
Donc :
1) Pour 7 jours ou plus : aucune alerte
2) Pour moins de 7 jours : Alerte n° 1
3) Pour 1 jour : Alerte n° 2
Comme la condition "1 jour" fait partie de la condition "moins de
7 jours" (car 1 < 7), le plus simple pour dissocier cela est de commencer par tester d'abord le cas "1 jour" :
1) Pour 1 jour : Alerte n° 2 ; sinon :
2) Pour moins de 7 jours : Alerte n° 1
Cela suffit : inutile d'ajouter « sinon : » à la fin de la ligne 2
puisqu'il n'y a aucune alerte pour 7 jours ou plus.
=========================================
Pour la façon d'écrire un programme, tu verras qu'il est beaucoup plus facilement lisible si tu utilises l'indentation : c'est le fait de ne pas faire commencer toutes les lignes contre la marge gauche :
On ajoute une marge d'espaces à chaque fois qu'on descend d'un niveau logique dans le code, et on réduit cette marge d'espaces quand on revient au précédent niveau logique.
Même si ça n'est pas très clair pour le moment, tu comprendras vite juste en voyant l'indentation des autres programmes.
Et ça commence juste ci-après ! 😉
=========================================
Pour la façon d'écrire un test avec If, tu connais bien sûr :
If Condition Then
Partie1
Else
Partie2
End If
Mais il y a aussi :
If Condition1 Then
Partie1
ElseIf Condition2 Then
Partie2
ElseIf Condition3 Then
Partie3
Else
Partie4
End If
a) Le dernier groupe Else Partie4 est facultatif.
b) Tu peux tester plus de conditions (mettre d'autres ElseIf ...).
Remarque bien que ElseIf est un seul mot-clé, donc SANS espace entre Else et If).
Mais au besoin, sur une seule ligne, il faudra écrire :
If Condition1 Then Partie1 Else If Condition2 Then Partie2
Là, il faut 2 mots-clés Else et If ; si tu mets un seul mot-clé ElseIf, ça provoquera une erreur lors de la compilation !
=========================================
Voici ton code réécrit avec indentation et correction d'erreurs :
Private Sub Workbook_Open() 'Pour vérifier les délais Dim Verifiation As Range For Each Verification In ActiveSheet.Range("Verification") Valeur = Cells(Verification.Row, 3) If Verification = "1" Then MsgBox "La tâche" & Tâche & " arrive à sa date butoir. Vérifiez la bonne éxécution.", vbCritical, "Attention !" ElseIf Verification = "<7" Then MsgBox "La tâche" & Tâche & "se termine dans moins de 7 jours.",vbExclamation, "Vérifier l'avancement." End If Next End Sub
Bien sûr, les lignes 10 et 11 doivent être sur la même ligne.
De même pour les lignes 13 et 14. C'est la largeur étroite de la fenêtre de message qui empêche de mettre de longues lignes,
comme on peut le faire dans l'éditeur VBA.
C'est évident que ça nuit à l'indentation, mais le seul moyen de faire autrement serait de joindre un fichier (via Cjoint par exemple).
Par précaution, fais des essais sur une copie du fichier original ;
mais normalement, ça devrait marcher. 😊
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
13 avril 2016 à 06:49
13 avril 2016 à 06:49
Bonjour,
La variable tâche n'est pas définie.
Tu dois l'affecter en fonction du Verification.Row trouvé.
Cordialement
La variable tâche n'est pas définie.
Tu dois l'affecter en fonction du Verification.Row trouvé.
Cordialement
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
856
13 avril 2016 à 17:59
13 avril 2016 à 17:59
Bonjour,
je viens de voir qu'il y avait un fichier joint.....
effectivement, ça ne peut fonctionner :
1) ta zone nommée "Vérification" contient des nombres, pas du texte.
il faut donc faire des comparaisons
2) je te conseille d'ajouter une sélection de la ligne concernée juste avant l'affichage du message :
3) la variable tâche n'est pas définie :
tu peux récupérer quelque chose de plus complet comme :
4) lignes 93 et 98, il n'y a pas de contenu à afficher !
normal que ton message n'affiche pas de tâche.
cdlt
je viens de voir qu'il y avait un fichier joint.....
effectivement, ça ne peut fonctionner :
1) ta zone nommée "Vérification" contient des nombres, pas du texte.
il faut donc faire des comparaisons
If Verification <= 1 Thenet
ElseIf Verification <= 7 Then.
2) je te conseille d'ajouter une sélection de la ligne concernée juste avant l'affichage du message :
Verification.Offset(0, -8).Resize(1, 80).Select
3) la variable tâche n'est pas définie :
tu peux récupérer quelque chose de plus complet comme :
MsgBox "La tâche n° [" & Verification.Offset(0, -8).Value & " ] - " _ & Verification.Offset(0, -6).Value & ", (ligne " & _ Verification.Row & " ) arrive à sa date butoir. Vérifiez la" _ & " bonne éxécution.", vbCritical, "Attention !"à adapter pour <=7
4) lignes 93 et 98, il n'y a pas de contenu à afficher !
normal que ton message n'affiche pas de tâche.
cdlt
AC211984
Messages postés
30
Date d'inscription
mardi 2 décembre 2014
Statut
Membre
Dernière intervention
20 avril 2016
>
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
20 avril 2016 à 13:56
20 avril 2016 à 13:56
Bonjour JvDo,
Merci beaucoup pour cette correction, cela fonctionne bien. Mais, si tu as encore un peu de temps, pourrais-tu m'expliquer en quoi consiste ça :
[" & Verification.Offset(0, -8).Value & " ] - " _
& Verification.Offset(0, -6).Value & ", (ligne " & _
Verification.Row & " )
De plus, est-il possible qu'Excel se place sur la cellule concernée par le message affiché ?
Merci beaucoup et belle journée.
Merci beaucoup pour cette correction, cela fonctionne bien. Mais, si tu as encore un peu de temps, pourrais-tu m'expliquer en quoi consiste ça :
[" & Verification.Offset(0, -8).Value & " ] - " _
& Verification.Offset(0, -6).Value & ", (ligne " & _
Verification.Row & " )
De plus, est-il possible qu'Excel se place sur la cellule concernée par le message affiché ?
Merci beaucoup et belle journée.
13 avril 2016 à 15:21
Merci pour toutes ces précisions. J'ai compris que mon code était un peu long et compliqué pour une chose finalement simple. Je comprends aussi très bien tes corrections, mais le code que tu m'as corrigé ne fonctionne pas. Je l'ai copié collé et vérifié, enregistré et ensuite fermé mon classeur, en mettant des dates d'essai arrivant à expiration.
Rien ne se passe quand j'ouvre mon classeur, pas une seule alerte alors que de dates se trouvent effectivement dans mes conditions d'alertes.
Ai-je loupé quelque chose ?
Merci en tout cas pour le coup de main :)
13 avril 2016 à 18:56
Tout ce que j'ai écris dans mon précédent message reste valable,
mais il manque un complément car je n'ai pas chargé ton fichier.
Je préfère éviter de le faire car j'ai Excel 2003 sur mon PC de bureau.
Le lien n'indique pas la version d'Excel, et c'est peut-être la 2007.
J'ai bien Excel 2007 sur mon PC portable, mais comme il n'est pas connecté
à Internet, il faudrait que je fasse un transfert de fichier via clé USB, ce que
je préfère éviter (sauf si c'est vraiment nécessaire).
Je pense que le complément qui te manque est fourni par ces 2 messages de JvDo (que je remercie beaucoup pour son intervention) :
Message 2 de JvDo
Message 4 de JvDo
Désolé de ne pas t'avoir donné une réponse complète dès le départ,
et que tu aies été déçu(e) que ça ne marche pas.
J'espère que le complément apporté par JvDo résoudra ce problème.
Si oui, penses à le marquer comme Résolu : je saurais ainsi que
c'est réglé.
Dans le cas contraire, je téléchargerai quand même ton fichier
pour essayer de voir si je trouve une solution.
Cordialement. 😊
20 avril 2016 à 13:57
Merci pour tous ses conseils, je crois que je viens à bout de mon classeur :)
Les corrections de JvDo m'ont en effet apporté pas mal de solutions.
Merci encore et belle journée.