Microsoft 365 Msgbox + ref cellule

JBL07

XLDnaute Occasionnel
Bonjour le Forum !

Petite question qui j'en suis sûr sera simple.. pour vous :)

J'ai le petit code ci-dessous, et je souhaiterais que "(alertedebut.Row, 8)", qui fait référence à une cellule contenant un horaire ( sous la forme 00:00), se mette à jour dans le msgbox en fonction de la ligne ciblée par la macro
Et bien je n'y arrive pas ....

Private Sub Workbook_Open()

Dim alertedebut As Range
For Each alertedebut In ActiveSheet.Range("alerte_debut")
Valeur = Cells(alertedebut.Row, 2)
If alertedebut = Date Then
MsgBox "La tâche " & Valeur & " est à effectuer aujourd’hui avant (alertedebut.Row, 8)", vbCritical, "Début période de tâche"
Else
End If
Next

End Sub
 
Solution
Bonjour JBL,
Vous pouvez utiliser la fonction AND pour faire que deux conditions soient nécessaires, avec la syntaxe :
VB:
If Condition1 AND Condition2 Then
Donc tentez :
Code:
Private Sub Workbook_Open()
Dim alertefin As Range
For Each alertefin In ActiveSheet.Range("alerte_fin")
    Valeur = Cells(alertefin.Row, "B")
    Statut = Right(Cells(alertefin.Row, "M"), 8)
    If alertefin = Date And Statut <> "Terminée" Then
        MsgBox "Délai atteint, la tâche " & Valeur & " est à effectuer aujourd’hui avant " & Format(CDate(Cells(alertefin.Row, 9)), "hh:mm") & " ", vbExclamation, "Début période de tâche"
    End If
Next
End Sub
NB: Le Right sert à isoler "Terminée" sans avoir à gérer le caractère spécial qui est à gauche.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour JBL,
Tel qu'écrit " est à effectuer aujourd’hui avant (alertedebut.Row, 8)" est une chaine de caractères unique.
Peut être ceci :
VB:
MsgBox "La tâche " & Valeur & " est à effectuer aujourd’hui avant ( " & cells(alertedebut.Row, 8) & " )", vbCritical, "Début période de tâche"
 

JBL07

XLDnaute Occasionnel
Hello Sylvanu !

Ca fonctionne( comme quoi, une petite parenthèse bien placée !.. ), merci beaucoup.. sauf le format : 12:00 s'affiche comme ça dans le msgbox :

1640873085231.png
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Tout dépend de ce que vous avez en cells(alertedebut.Row, 8).
Si c'est une heure que vous voulez afficher alors essayez :
VB:
MsgBox "La tâche " & Valeur & " est à effectuer aujourd’hui avant ( " & CDate(cells(alertedebut.Row, 8)) & " )", vbCritical, "Début période de tâche"
Sinon jetez une oeil à : LIEN
 

JBL07

XLDnaute Occasionnel
Bah je l'ai écrit dans mon message de départ :) -> "(alertedebut.Row, 8)", qui fait référence à une cellule contenant un horaire ( sous la forme 00:00)"
Bon, on approche, mais le msgbox affiche 00:00 ( pour la ligne test, j'ai noté 22:00)
 

JBL07

XLDnaute Occasionnel
Bonjour le Forum,
Je relance cette demande car je voudrais modifier le msgbox :

Je souhaiterais ajouter une condition à son apparition, à savoir que le statut en colonne M soit différent de
"👍 - Terminée"
J'ai nommé cette plage de cellules "Liste_statuts", mais je ne sais pas comment inclure cette seconde condition dans le code

Merci de votre aide
 

Pièces jointes

  • Test TDL.xlsm
    44.7 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour JBL,
Vous pouvez utiliser la fonction AND pour faire que deux conditions soient nécessaires, avec la syntaxe :
VB:
If Condition1 AND Condition2 Then
Donc tentez :
Code:
Private Sub Workbook_Open()
Dim alertefin As Range
For Each alertefin In ActiveSheet.Range("alerte_fin")
    Valeur = Cells(alertefin.Row, "B")
    Statut = Right(Cells(alertefin.Row, "M"), 8)
    If alertefin = Date And Statut <> "Terminée" Then
        MsgBox "Délai atteint, la tâche " & Valeur & " est à effectuer aujourd’hui avant " & Format(CDate(Cells(alertefin.Row, 9)), "hh:mm") & " ", vbExclamation, "Début période de tâche"
    End If
Next
End Sub
NB: Le Right sert à isoler "Terminée" sans avoir à gérer le caractère spécial qui est à gauche.
 

Pièces jointes

  • Test TDL.xlsm
    42.1 KB · Affichages: 3
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 361
Membres
102 874
dernier inscrit
Petro2611