Microsoft 365 message d'alerte

Lazz

XLDnaute Junior
Bonjour,
J'ai une demande fastidieuse,
j'aimerai que si mon budget est dépassé, alors une fenêtre s'ouvre pour me prévenir.
Je ne veux pas de mises en forme conditionnelle et comme ma cellule budget est une formule, la validation de donnée ne donne rien non plus.
Comme je ne suis pas trop caler en VBA il me faut de l'aide !!!
1637753882626.png

Pour illustrer ce que je veux :
dans la cellule L7 : si la facture est parvenu (E7=oui) alors G7 si la facture n'est pas parvenu (E7=non) alors C7.
J'aimerai que quand une de mes cellules dans la ligne 5 est négatif alors ça m'envoie un message d'alerte : "attention, budget dépassé"

Pouvez-vous m'aider ? Merci :)
 

Pièces jointes

  • 1637753803767.png
    1637753803767.png
    20 KB · Affichages: 26
Solution
Bonjour
essayez ce code :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 12 To 19
    If Cells(5, i) < 0 And Cells(1, i) = 0 Then MsgBox "La cellule " & Cells(5, i).Address & " est négative !": Cells(1, i) = 1
    If Cells(5, i) >= 0 And Cells(1, i) = 1 Then Cells(1, i) = 0
Next i
    
End Sub

Wayki

XLDnaute Impliqué
Sachez que sans fichier il est difficile pour nous de vous aider.
Essayez ce code dans votre module de feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellule As Range, der_col As Long
der_col = Cells(1, Columns.Count).End(xlToLeft).Column
For Each cellule In Range(Cells(5, 11), Cells(5, der_col))
    If Left(cellule) = "-" Then MsgBox "La cellule " & cellule.Address & "est négative !": cellule.Activate: Exit Sub
End Sub
A +
 

Lazz

XLDnaute Junior
Sachez que sans fichier il est difficile pour nous de vous aider.
Essayez ce code dans votre module de feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellule As Range, der_col As Long
der_col = Cells(1, Columns.Count).End(xlToLeft).Column
For Each cellule In Range(Cells(5, 11), Cells(5, der_col))
    If Left(cellule) = "-" Then MsgBox "La cellule " & cellule.Address & "est négative !": cellule.Activate: Exit Sub
End Sub
A +
ce code ne fonctionne pas :(
Je vous joins un fichier pour exemple
j'aimerai que peut- importe la cellule que je renseigne, si la ligne 5 (L5, M5,N5...) devient négative alors m'envoyer un message d'alerte "budget dépassé" et même si l5 est déjà dépasser et que P5 devient à son tour négatif alors envoyer un message etc
(Je suis peut-être pas très très claire)
 

Pièces jointes

  • Classeur1.xlsx
    11.7 KB · Affichages: 6

Wayki

XLDnaute Impliqué
Effectivement j'avais omis quelques bouts de code 😅
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellule As Range, der_col As Long
der_col = Cells(6, Columns.Count).End(xlToLeft).Column
For Each cellule In Range(Cells(5, 11), Cells(5, der_col))
    If Left(cellule, 1) = "-" Then MsgBox "La cellule " & cellule.Address & " est négative !": cellule.Activate: Exit Sub
Next cellule

End Sub
A +
 

Lazz

XLDnaute Junior
Merci beaucoup ça me met bien le message d'erreur
MAIS, maintenant à chaque fois que je rentre une facture même si c'est pas le même analytique j'ai ce message. De plus, quand N5 devient négatif j'ai toujours le message pour L5 qui s'affiche mais pas pour N.

j'aimerai que le message ne s'affiche qu'une fois que le résultat devient négatif et pour toute les colonne (pas que L)

Pouvez-vous m'aider ?
 

Lazz

XLDnaute Junior
Pareil pour ce programme, quand une des valeurs est négative je ne peux plus rien saisir sans que le message ne revienne tout le temps...

Private Sub Worksheet_Calculate()
Set myRange = Worksheets(ActiveSheet.Name).Range("L5:x5")
answer = Application.WorksheetFunction.Min(myRange)
If answer < 0 Then MsgBox "Attention valeur négative!"
End Sub
 

Wayki

XLDnaute Impliqué
Bonjour,
Ce code affichera le message à chaque fois que l'on active la feuille :
VB:
Private Sub Worksheet_Activate()

Dim cellule As Range, der_col As Long
der_col = Cells(6, Columns.Count).End(xlToLeft).Column
For Each cellule In Range(Cells(5, 11), Cells(5, der_col))
    If Left(cellule, 1) = "-" Then MsgBox "La cellule " & cellule.Address & " est négative !"
Next cellule

End Sub

Ce code affichera un message à chaque fois que l'on ouvre le classeur :
VB:
Private Sub Workbook_Open()
Dim cellule As Range, der_col As Long, ws As Worksheet
Set ws = Worksheets("feuil1")
der_col = ws.Cells(6, Columns.Count).End(xlToLeft).Column
For Each cellule In ws.Range(Cells(5, 11), Cells(5, der_col))
    If Left(cellule, 1) = "-" Then MsgBox "La cellule " & cellule.Address & " est négative !"
Next cellule
End Sub
A +
 

Lazz

XLDnaute Junior
Bonjour,
Ce code affichera le message à chaque fois que l'on active la feuille :
VB:
Private Sub Worksheet_Activate()

Dim cellule As Range, der_col As Long
der_col = Cells(6, Columns.Count).End(xlToLeft).Column
For Each cellule In Range(Cells(5, 11), Cells(5, der_col))
    If Left(cellule, 1) = "-" Then MsgBox "La cellule " & cellule.Address & " est négative !"
Next cellule

End Sub

Ce code affichera un message à chaque fois que l'on ouvre le classeur :
VB:
Private Sub Workbook_Open()
Dim cellule As Range, der_col As Long, ws As Worksheet
Set ws = Worksheets("feuil1")
der_col = ws.Cells(6, Columns.Count).End(xlToLeft).Column
For Each cellule In ws.Range(Cells(5, 11), Cells(5, der_col))
    If Left(cellule, 1) = "-" Then MsgBox "La cellule " & cellule.Address & " est négative !"
Next cellule
End Sub
A +
Merci pour votre temps, et votre réponse Wayki
Mais ce n'est pas cela que je recherche ....
Je veux juste recevoir un message quand ma cellule devient négative mais pas tout le temps à chaque fois que j'entre une valeur....
 

Wayki

XLDnaute Impliqué
Bonjour
essayez ce code :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
For i = 12 To 19
    If Cells(5, i) < 0 And Cells(1, i) = 0 Then MsgBox "La cellule " & Cells(5, i).Address & " est négative !": Cells(1, i) = 1
    If Cells(5, i) >= 0 And Cells(1, i) = 1 Then Cells(1, i) = 0
Next i
    
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 769
Membres
101 816
dernier inscrit
Jfrcs