XL 2016 MsgBox

Harry Khauver

XLDnaute Nouveau
Bonjour,
J'ai bientôt 80 ans et la programmation en VBA est pour moi récente.
J'ai créé un fichier Excel destiné à réguler le nombre d'heures de travail prestées par des étudiants et de m'alerter lorsqu'ils dépassent leur quota, en l'occurrence 80h.
Ce quot est indiqué dans une cellule mais ce n'est pas obligatoire.
J'ai créé une macro mais le MsgBox ne s'affiche pas automatiquement
Où est l'erreur?
Voici le code que j'ai réalisé:
Sub dialogue()

If Range("B3") > Range("B5") Then
MsgBox ("Quota annuel dépassé")
End If

End Sub

Merci de votre aide
H.K.
 

Harry Khauver

XLDnaute Nouveau
Bonsoir,

Merci de ta réponse.
J'ai fait un copier/coller de ta réponse et plus rien ne fonctionne.
Vieillesse ennemie ou code à revoir:
Sub dialogue()

If Val(Sheets("Feuil1").Range("B3")) > Val(Sheets("Feuil1").Range("B5")) Then

MsgBox ("Quota annuel dépassé")
End If

End Sub

H.K.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Harry Khauver (chouette le pseudo ;))

Harry Khauver
Je confirme cela fonctionne
VB:
Sub dialogue()
With Sheets("Feuil1")
  If Application.CountA(.[B3:B5]) Then
  If .[B3] > .[B5] Then
  MsgBox "Quota annuel dépassé!", vbCritical, "Erreur"
  End If
  Else
  MsgBox "Les cellules sont vides!", vbCritical
  End If
End With
End Sub
Tu as bien une feuille nommée Feuil1 dans ton classeur ?
 

Harry Khauver

XLDnaute Nouveau
Bonsoir le fil, Harry Khauver (chouette le pseudo ;))

Harry Khauver
Je confirme cela fonctionne
VB:
Sub dialogue()
With Sheets("Feuil1")
  If Application.CountA(.[B3:B5]) Then
  If .[B3] > .[B5] Then
  MsgBox "Quota annuel dépassé!", vbCritical, "Erreur"
  End If
  Else
  MsgBox "Les cellules sont vides!", vbCritical
  End If
End With
End Sub
Tu as bien une feuille nommée Feuil1 dans ton classeur ?
 

Harry Khauver

XLDnaute Nouveau
re
bonsoir
pour etre sur

remplace "nom de la feuille" par le nom de ta feuille

VB:
Sub dialogue()

If val(sheets("nom de la feuille").Range("B3")) > val(sheets("nom de la feuille").Range("B5")) Then

MsgBox ("Quota annuel dépassé")

End If
Bonsoir le fil, Harry Khauver (chouette le pseudo ;))

Harry Khauver
Je confirme cela fonctionne
VB:
Sub dialogue()
With Sheets("Feuil1")
  If Application.CountA(.[B3:B5]) Then
  If .[B3] > .[B5] Then
  MsgBox "Quota annuel dépassé!", vbCritical, "Erreur"
  End If
  Else
  MsgBox "Les cellules sont vides!", vbCritical
  End If
End With
End Sub
Tu as bien une feuille nommée Feuil1 dans ton classeur ?


Cela fonctionne uniquement si je clique sur "Exécuter". J'aimerais une exécution automatique.
Merci de ton soutien
Cordialement
H.K.
 

Staple1600

XLDnaute Barbatruc
Re

Dans ce cas, il faut passer par une procédure événementielle
( à mettre dans le code de la feuille, et pas dans un module standard (comme Module1) )
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B3", "B5")) Is Nothing Then
If Application.CountA(Range("B3", "B5")) = 2 And [B3] > [B5] Then
MsgBox "Quota annuel dépassé!", vbCritical, "Erreur"
End If
Else
MsgBox "Les cellules sont vides!", vbCritical
End If
End Sub
 

Statistiques des forums

Discussions
312 687
Messages
2 090 951
Membres
104 705
dernier inscrit
Mike72