Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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.
 
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 ?
 
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 ?
 
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.
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
511
Réponses
3
Affichages
679
Retour