XL 2007 Afficher un message d'erreur pour une macro

a26

XLDnaute Occasionnel
Bonsoir à tous,
Pouvez-vous m'aider à trouver la solution d'une macro qui m'avertirait d'un dépassement de chiffre (variable)
dans une cellule donnée.
Merci beaucoup,
a26
 

Fichiers joints

Hieu

XLDnaute Impliqué
Salut,
Quelque chose comme ca ?

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c6:c18", "g18:h18")) Is Nothing Then
    If Target > Range("i3") Then MsgBox ("erreur")
End If
End Sub
 

Fichiers joints

  • Like
Reactions: a26

a26

XLDnaute Occasionnel
Merci Hieu cela correspond à ce que je voulais, il me reste à tester avec mon classeur original.
Je reviens vers toi demain si j'ai d'autres modif à faire concernant ce message.
Bonne soirée,
a26
 

a26

XLDnaute Occasionnel
Merci à vous deux pour vos solutions. Cela fonctionne très bien pour mon fichier.
Bonne soirée,
a26
 

youky(BJ)

XLDnaute Barbatruc
Hello
MsgBox"Un doublon !", vbExclamation + vbRetryCancel, "ANNULATION"
ou si on veux choisir le bouton
If MsgBox("Un doublon !", vbExclamation + vbRetryCancel, "ANNULATION") = vbRetry Then Beep
Bruno
 
  • Like
Reactions: a26

a26

XLDnaute Occasionnel
Hello
MsgBox"Un doublon !", vbExclamation + vbRetryCancel, "ANNULATION"
ou si on veux choisir le bouton
If MsgBox("Un doublon !", vbExclamation + vbRetryCancel, "ANNULATION") = vbRetry Then Beep
Bruno
Bonjour youky,
J'ai essayé d'appliquer le code que tu m'a transmis mais cela ne fonctionne pas. Peux-être que j'ai oublié quelque chose dans l'appel de la msgbox.
a26
 

Fichiers joints

youky(BJ)

XLDnaute Barbatruc
Bonjour
Voici la macro qui fonctionne.
Bruno
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c6:c18", "g18:h18")) Is Nothing Then
    If Target > [I3] Then
    MsgBox "Attention valeur trop grande !" & vbCr & _
    "Vous ne devez pas d?passer " & [I3], vbExclamation + vbRetryCancel, "ANNULATION"
    Target.Value = "" 'on efface
    End If
End If
End Sub
 
  • Like
Reactions: a26

a26

XLDnaute Occasionnel
Merci , celle-ci fonctionne mais que rajouter au code pour que la cellule active ne soit pas celle de dessous mais la cellule d'effacement ?
merci pour ta réponse.
 

youky(BJ)

XLDnaute Barbatruc
Voici, j'ai ajouté Target.Select avant le MsgBox
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c6:c18", "g18:h18")) Is Nothing Then
    If Target > [I3] Then
    Target.Select
    MsgBox "Attention valeur trop grande !" & vbCr & _
    "Vous ne devez pas d?passer " & [I3], vbExclamation + vbRetryCancel, "ANNULATION"
    Target.Value = "" 'on efface
    End If
End If
End Sub
 
  • Like
Reactions: a26

a26

XLDnaute Occasionnel
Voici, j'ai ajouté Target.Select avant le MsgBox
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c6:c18", "g18:h18")) Is Nothing Then
    If Target > [I3] Then
    Target.Select
    MsgBox "Attention valeur trop grande !" & vbCr & _
    "Vous ne devez pas d?passer " & [I3], vbExclamation + vbRetryCancel, "ANNULATION"
    Target.Value = "" 'on efface
    End If
End If
End Sub
Merci, mais tu vas me trouver pénible car si je clique sur annuler cela ne conserve pas la valeur saisie si malgré tout je désire la conserver .
 

youky(BJ)

XLDnaute Barbatruc
Voici
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c6:c18", "g18:h18")) Is Nothing Then
    If Target > [I3] Then
    Target.Select
    If MsgBox("Attention valeur trop grande !" & vbCr & _
    "Vous ne devez pas d?passer " & [I3], vbExclamation + vbRetryCancel, "ANNULATION") = vbRetry Then Target.Value = "" 'on efface
    End If
End If
End Sub
 
  • Like
Reactions: a26

a26

XLDnaute Occasionnel
Voici
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("c6:c18", "g18:h18")) Is Nothing Then
    If Target > [I3] Then
    Target.Select
    If MsgBox("Attention valeur trop grande !" & vbCr & _
    "Vous ne devez pas d?passer " & [I3], vbExclamation + vbRetryCancel, "ANNULATION") = vbRetry Then Target.Value = "" 'on efface
    End If
End If
End Sub
Merci, le code fonctionne parfaitement sur la copie de mon fichier original, mais sur l'original au déclenchement d'une macro une erreur 13 se produit et le débobage me souligne la ligne target > I3
 

a26

XLDnaute Occasionnel
Voilà le problème : If Target > [I3] Then. J'essaie de joindre un classeur avec la macro en question dans une prochaine discussion.
Merci pour ta contribution youky, mais je pense que mes problèmes viennent de la construction de mon classeur.
J'utilise une douchette pour ce fichier et j'adopte le code 39 donc avec des * avant et après le chiffre comme ceci *45*
par exemple que je suis obligé d'enlever par formule c'est pour cela que j'ai 2 colonnes réf.
Je suis donc bloqué à la différence d'un classeur avec saisie normale.
A moins que tu aies une solution pour moi j'abandonne la discussion et te remercie encore pour ta contribution qui m'aura quand même appris l'utilisation de la msgbox.
a26
 

youky(BJ)

XLDnaute Barbatruc
Dommage de baisser les bras…...
Une macro trouvera facilement 45 dans *****45***
Si tu fais un bon fichier exemple avec quelque lignes je te garantie des satisfactions.
Fichier avec quelques codes exemple comme tu les reçois et même colonne et un exemple de ce que tu attends.

Bruno
 
  • Like
Reactions: a26

a26

XLDnaute Occasionnel
Dommage de baisser les bras…...
Une macro trouvera facilement 45 dans *****45***
Si tu fais un bon fichier exemple avec quelque lignes je te garantie des satisfactions.
Fichier avec quelques codes exemple comme tu les reçois et même colonne et un exemple de ce que tu attends.

Bruno
Bonjour youky,
Merci de relancer, je te joins un petit fichier exemple dans l'après-midi.
Bonne journée,
a26
 

Discussions similaires


Haut Bas