Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
j'ouvre un nouveau fil car le sujet est différent de la validation.
j'ai 3 chiffres, en C1, C2, C3.
Je voudrais que lorsque je saisis un chiifre en C3 un libellé d'erreur apparaisse en D1 si le total de C1 à C3 est différent du montant en C4; voici un fichier joint en explication.
bon, j'arrive pas à joindre (11k seulement zippé, pourtant!), alors j'explique :
Je n'arrive pas à afficher un message d'erreur en D1 lorsque le total de C1 à C3 est différent du montant en C4.
MERCI à vous.
voici mon code (pas optimisé!!! ne riez pas!!!)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Range('D1') = ''
If Not Intersect(Target, Range('C3')) Is Nothing Then
If Range('C4') <> Range('C1') + Range('C2') + Range('C3') Then
MsgBox ('ERREUR SUR TOTAL DES 3 CELLULES')
With Worksheets('Feuil1').Range('D1')
.Font.ColorIndex = 3
.Font.Bold = True
.Font.Name = 'Arial'
.Font.Size = 14
.Font.ColorIndex = 3
End With
Range('D1').Value = 'ERREUR DE SAISIE'
End If
End If
End Sub
c'est normal, il faut saisir 3 chiffres, et ce n'est que lorsque le 3ème est saisi que je vérifie le total, sinon je vais avoir une erreur à chaque saisie du premier et 2ème, ce qui est enquiquinant.
Il n'affiche pas ERREUR DE SAISIE en D1, j'ai essayé avec
With Worksheets('Feuil1').Range('D1')
.Value = 'ERREUR DE SAISIE'
a marche pô non pu!!!, pourtant il formate bien la cellule en gras, couleur, police et taille.
J'y comprends rien!!!
Comme tu modifies la cellule D1 tu retournes dans l'evenementielle
donc au 2eme passage tu efface ton message.
2 solution:
Tu inhibes les evenements comme cela:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Range('D1') = ''
If Not Intersect(Target, Range('C3')) Is Nothing Then
If Range('C4') <> Range('C1') + Range('C2') + Range('C3') Then
MsgBox ('ERREUR SUR TOTAL DES 3 CELLULES')
With Worksheets('Feuil1').Range('D1')
.Font.ColorIndex = 3
.Font.Bold = True
.Font.Name = 'Arial'
.Font.Size = 14
.Font.ColorIndex = 3
End With
Range('D1').Value = 'ERREUR DE SAISIE'
End If
End If
Application.EnableEvents = True
End Sub
ou alors tu changes D1 comme cela:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range('C3')) Is Nothing Then
If Range('C4') <> Range('C1') + Range('C2') + Range('C3') Then
MsgBox ('ERREUR SUR TOTAL DES 3 CELLULES')
With Worksheets('Feuil1').Range('D1')
.Font.ColorIndex = 3
.Font.Bold = True
.Font.Name = 'Arial'
.Font.Size = 14
.Font.ColorIndex = 3
End With
Range('D1').Value = 'ERREUR DE SAISIE'
Else
Range('D1') = ''
End If
End If
End Sub
Juste et surtout pour faire un coucou à C@thy que je n'ai pas eu l'occasion de trop croiser depuis mes wouacances...
Et aussi pour confirmer à Minick
Et aussi Just For the Fun !
Code:
Sub BloodyAdditionThroughVBA()
Dim ThePlageTab As Variant
Dim TheSumTab As Double
Dim ThePlageFor As Range
Dim TheSumFor As Double
Dim i As Byte
ThePlageTab = Range('A1:A3').Value
Set ThePlageFor = Range('A1:A3')
For i = 1 To 3
TheSumTab = TheSumTab + ThePlageTab(i, 1)
Next
TheSumFor = WorksheetFunction.Sum(ThePlageFor)
MsgBox TheSumFor & ' = ' & TheSumTab, , 'Bingo !!! lol'
End Sub
Y'a qu'un fil macro événementielle, la validation c'est autre chose car c'est sans macro c'est pourquoi j'ai voulu séparer les 1 sujets bien qu'ils soient proches paeceque rendant le même service.
J'ai avancé sur ma procédure, grâce aux conseils avisés de mes bienfaiteurs ici présents,
j'ai pris en compte la saisie de 4 cellules cette-fois-ci, mais je dois avoir le même problème:
je retourne dedans donc j'efface, voici mon code car je n'arrive pas à joindre de fichiers.
Le problème c'est que quand je saisis un nombre correct, c'est à dire non décimal,
et qu'en plus cette saisie me donne bien l'égalité avec le montant en E21,
il me sort un msgbox d'erreur et affiche 'ERREUR DE SAISIE' quand même,
alors que j'ai mis un ELSE avec ce qu'il faut faire si c'est bon
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim maSomme As Integer
maSomme = Application.WorksheetFunction.Sum(Range('$E$17:$E$20'))
If Not Intersect(Target, Range('$E$17:$E$20')) Is Nothing Then
If maSomme <> Range('$E$21') Then
MsgBox ('ERREUR SUR TOTAL DES 4 CELLULES')
With Worksheets('Feuil1').Range('$J$17')
.Font.Bold = True
.Font.Size = 14
.Font.ColorIndex = 3
End With
Range('$J$17').Value = 'ERREUR DE SAISIE'
Else
Range('$J$17') = ''
With Worksheets('Feuil1').Range('$J$17')
.Font.Bold = False
.Font.Size = 10
.Font.ColorIndex = 0
End With
End If
End If
End Sub
MERCI BEAUCOUP pour votre aide, j'en ai vraiment besoin.
Pendant que j'y suis j'ai un souci à propos du forum, je n'arrive pas à être avertie par mail si j'ai des réponses à ce fil, je dois aller voir systématiquement. On fait comment pour être averti? Et pis j'arrive pas à joindre un fichier zippé de 11k alors que je clique sur parcourir, et j'indique bien le chemin dans la zone Selection du fichier à attacher... j'ai des misères!!!
Salut 'C@thy'
bonjour le 'FORUM'
C@thy pour moi lorsque la saisie est bonne je n'ai pas de message ou alors je n'ai pas compri le problème
je modifie les valeurs en E17 E20 et celon j'ai bien l'affichage ou l'éffacement du message en J17 et ou non le MSGBOX
bonne journée
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.