Meilleur auteur de réponses
Projet Excel 2016 action lorsque qu'une cellule est vide

Question
-
Bonjour, voici mon problème : dans une cellule Excel (qu'on appellera TGCJeu) je rentre manuellement des données chiffrées qui correspondent à des températures et doivent êtres inférieures à -15°C.
J'ai créer un code qui m'ouvre un MsgBox lorsque ce critère n'est pas respecté :
Dim Temp As Double = -15 Private Sub TGCJeu_Change(Target As Range) Handles TGCJeu.Change If TGCJeu.Value2 > Temp Then Dim result1 = MsgBox("Création d'une alerte T°C", vbOKCancel, "Alerte") If result1 = MsgBoxResult.Ok Then Globals.Feuil9.Visible = True Globals.Feuil9.Activate() Globals.Feuil9.TEMPAL.Value2 = TGCJeu.Value2 Globals.Feuil9.ProdAl.Value2 = GCProdJeu.Value2 Globals.Feuil9.LotAl.Value2 = GCLotJeu.Value2 End If If result1 = MsgBoxResult.Cancel Then Exit Sub End If If TGCJeu.Value2 < Temp Then Exit Sub End If End If End Sub
Jusque là, tout fonctionne bien. Mais quand j'ai besoin d'effacer le contenu de la cellule, le MsgBox apparaît aussi alors qu'il ne devrait rien se passer.
Que dois-je rajouter à mon code?
merci
JF Collombet ® CreateSpecificCulture
Réponses
-
L'evénement "Changed" est lancé sur tout changement.
Mettez un test sur ce que la cellule contient, par exemple si c'est une valeur numérique:
if IsNumeric(TGCJeu.Value2) then 'Ici faites le test et gestion sur Valeur>Temp..." endif
Cyrille Precetti
Bonne Année! Happy New Year!- Marqué comme réponse Jean-François Collombet samedi 16 janvier 2016 07:12
Toutes les réponses
-
La comparaison entre des entités aux formats différents peut être surprenante: String < Double....
Avez-vous essayé de faire un cast:
If TGCJeu.Value2 > Temp Then EndIf 'A transformer en qqchose comme cela:' Dim ValeurDbl as double Try ValeurDbl = Convert.ToDouble(TGCJeu.Value2) 'Ici le test' if ValeurDbl > Temp then 'Faire la messagebox' MessageBox.Show("Message...","Titre", messageboxicons.YesNo) EndIf Catch e As FormatException Console.WriteLine("Impossible de convertir '{0}'en Double.", TGCJeu.Value2) Catch e As OverflowException Console.WriteLine("'{0}' dépasse la capacité des Double.", TGCJeu.Value2) End Try
Cyrille Precetti
Bonne Année! Happy New Year! -
-
Bonsoir et désolé de ma réponse tardive, voici ma nouvelle sub avec votre code.
Lorsque les valeurs sont inférieures à "Temp" ou supérieures, tout fonctionne correctement.
Mais j'ai toujours le soucis de l'apparition de la MsgBox lorsque j'efface la cellule
JF Collombet ® CreateSpecificCulture
Private Sub TGCJeu_Change(Target As Range) Handles TGCJeu.Change Dim ValeurDBL As Double Try ValeurDBL = Convert.ToDouble(TGCJeu.Value2) If ValeurDBL > Temp Then Dim result1 = MsgBox("Création d'une alerte T°C", vbOKCancel, "Alerte") If result1 = MsgBoxResult.Ok Then Globals.Feuil9.Visible = True Globals.Feuil9.Activate() Globals.Feuil9.TEMPAL.Value2 = TGCJeu.Value2 Globals.Feuil9.ProdAl.Value2 = GCProdJeu.Value2 Globals.Feuil9.LotAl.Value2 = GCLotJeu.Value2 If result1 = MsgBoxResult.Cancel Then Exit Sub Else If ValeurDBL < Temp Then Exit Sub End If End If End If End If Catch e As FormatException Console.WriteLine("Impossible de convertir '{0}'en Double.", TGCJeu.Value2) Catch e As OverflowException Console.WriteLine("'{0}' dépasse la capacité des Double.", TGCJeu.Value2) End Try End Sub
- Modifié Jean-François Collombet mardi 12 janvier 2016 17:12
-
L'evénement "Changed" est lancé sur tout changement.
Mettez un test sur ce que la cellule contient, par exemple si c'est une valeur numérique:
if IsNumeric(TGCJeu.Value2) then 'Ici faites le test et gestion sur Valeur>Temp..." endif
Cyrille Precetti
Bonne Année! Happy New Year!- Marqué comme réponse Jean-François Collombet samedi 16 janvier 2016 07:12
-