Problème de tolérance dans cellule

Résolu
veve890 Messages postés 26 Date d'inscription mardi 18 novembre 2014 Statut Membre Dernière intervention 17 janvier 2015 - Modifié par ucfoutu le 13/02/2015 à 21:12
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 16 févr. 2015 à 22:03
Bonjour,
voici mon nouveau problème
je voudrais trouver un code vba ou par conditionnelle
je vous explique
dans la cellule A1 je rentre une cote avec une tolérance +- exemple
12.00+-01. dans A4 je rentre le résultat si il est dans la tolérance je veux que le résultat reste en noir et mettre une croix noir dans A2 si il est hors tolérance le résultat se mes en rouge et mes une croix rouge dans A3
j ais plusieurs cotes dans mon formulaire exemple en C1-C2-C3-C4 un autre F1-F2-F3-F4
merci a l avance de vos idées

12 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 janv. 2015 à 16:58
Bonjour,
dans la cellule A1 je rentre une cote avec une tolérance +- exemple
12.00+-01

Il est assez maladroit (cela va considérablement compliquer les choses) de procéder ainsi.
Donne plutôt la préférence à l'inscription de la seule côte dans la/les cellule(s) concernée(s). Et mets ta "tolérance" ailleurs où la retrouver facilement. A toi de voir où (feuille miroir, comments de la cellule, etc ... selon TON esprit imaginatif).
Repose ta question lorsque tu auras arrêté TON choix en exposant alors les nouveaux tenants et aboutissants en résultant.
0
donc je vous explique le projet
dans une feuil excel j ais un textbox ou je rentre une cote avec une tolérance exemple 12.00+-0.10 je rentre un résultat dans la cellule
F25 exemple 12.05 donc dans la tolérance alors dans la cellule D25 une croix noir mais si il est hors tolérance exemple 11.88 en E25 un croix rouge et le résultat dans F25 en rouge
je vous mes le code en dessous cela marche très bien


Private Sub Worksheet_Change(ByVal Target As Range) 'code pour mettre soit une croix rouge ou une croix noir selon si ont est dans la tolerence du textbox et la cote trouve en rouge si ont est hors tolerence et une croix noir si ont est dans la tolerence
Dim Valeur, Tolerance As Double


'code pour textbox7 diametre col finisseur
If (Target.Row = 25) And (Target.Column = 6) Then 'Valide qu'on est en F25
'Assigne la valeur et la tolérance à partir de Textbox7
Valeur = Val(Left(TextBox7.Text, InStr(TextBox7.Text, "-") - 1))
Tolerance = Val(Right(TextBox7.Text, Len(TextBox7.Text) - InStr(TextBox7.Text, "-")))

'Efface le format et le contenu (sinon on fini avec des X partout)

Range("D25:E25").ClearContents
Range("D25:F25").Font.Color = 0
'Compare le contenu de target (F25) avec la valeur et tolerance
If (Target.value > (Valeur + Tolerance)) Or (Target.value < (Valeur - Tolerance)) Then
'Si c'est à l'extérieur de l'intervale
Range("E25").value = "X"
Range("E25:F25").Font.Color = 255
Else
'sinon c'est à l'intérieur de l'intervale
Range("D25").value = "X"
Range("D25:F25").Font.Color = 0



End If
End If
End Sub

mais j ais un probleme quand je mais 12.00-0.10
quand je rentre dans F25 11.89 croix rouge dans E25 et le resultat dans F25 en rouge si je rentre dans F25 11.95 ou 12.00
croix noir dans D25 et resultat F25 en noir j usque la c 'est bon mais si je trouve 12.01 ou 12.20 toujours en noir dans F25 et la croix noir dans D25 l orsque il est hors de la tolerence il devrais se mettre en rouge dans F25 et croix rouge en E25
en attente de votre reponse c est asse urgent
merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 13/02/2015 à 18:33
On répond à qui ? A veve890 ou à atlantis890 ???
Car il est à noter que veve890 voulait traiter une tolérance +- et que atlantis parle, lui, de l'éventualité d'une totérance - seulement (qui nécessite alors l'utilisation d'une expression conditionnelle très simple supplémentaire).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
bonjour
a veve 890
merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 13/02/2015 à 19:03
Reviens alors sur veve890, car le seul à pouvoir fermer cette discussion (par un clic sur le tag RESOLU au niveau de son ouverture) sera LUI et non atlantis, hein ...
D'où la nécessité de faire les choses bien ...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 14/02/2015 à 08:55
Allez, va ==>>>
Analyse et comprends ce que fait ceci :
montruc = TextBox7.Text
valeur = Val(TextBox7.Text)
montruc1 = Replace(montruc, "+", "/")
montruc1 = Replace(montruc1, "-", "/")
montruc1 = Replace(montruc1, "//", "/")
pos = InStr(montruc1, "/")
If pos = 0 Then
valmax = valeur
valmin = valeur
Else
methode = Mid(montruc, pos)
If methode Like "+#*" Then
valmax = valeur + Val(Mid(methode, 2))
valmin = valeur
ElseIf methode Like "-#*" Then
valmax = valeur
valmin = valeur - Val(Mid(methode, 2))
ElseIf methode Like "+-#*" Or methode Like "-+*" Then
valmax = valeur + Val(Mid(methode, 3))
valmin = valeur - Val(Mid(methode, 3))
Else
valmax = valeur
valmin = valeur
End If
End If
MsgBox "il te faut donc vérifier que la valeur de ta cellule est comprise entre " & _
valmax & " et " & valmin & " ... simple, non ?"


Ou encore plus simple : ===>>

chaine = TextBox7.Text
valeur = Val(chaine)
valmax = valeur: valmin = valeur: tolerance = 0
posplus = InStr(chaine, "+"): posmoins = InStr(chaine, "-")
If posplus Then Mid(chaine, posplus, 1) = " "
If posmoins Then Mid(chaine, posmoins, 1) = " "
If posplus + posmoins Then
tolerance = Val(Mid(chaine, InStr(chaine, " ") + 1))
If posplus Then valmax = valeur + tolerance
If posmoins Then valmin = valeur - tolerance
End If
MsgBox "il te faut donc vérifier que la valeur de ta cellule est comprise entre " & _
valmax & " et " & valmin & " ... simple, non ?"



Tous les cas y sont traités (+-, -+, -, +, ou nombre pur)

Et (cerise sur le gâteau) le second code marche y compris si on sépare par des espaces le +, le - et la valeur et/ou la tolérance

PS : je vais maintenant surveiller le retour de veve890 et sa clôture de cette discussion.
S'il ne revient pas, LUI, je saurai me le rappeler.

PS : c'est ICI, que veve doit revenir ! (je viens de supprimer son doublon).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
bonjour je viens d essayer le deuxieme code mais pour changer la croix noir ou rouge et mettre le resultat en noir ou rouge rien ne se passe je doit partire pour le wek k je regarderais lundi pour annaliser plus longtemp votre code
merci pour votre aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 févr. 2015 à 10:14
Le code que je t'ai montré permet de définir les deux bornes des valeurs tolérées.
A partir de là, tout est vraiment trop simple pour justifier que j'aille plus loin dans mon aide.
0
bonjour je viens de regarder
les deux code avec le deuxième je n arrive pas a avoir ma croix rouge ou noir idem pour le texte
avec le premier code cela marche un peux mieux
mais si dans le textbox il y a 34.00-0.10 dans la cellule F25 je tape 34 pas de problème le texte se mes en noir et une croix noir dans D25
ensuite je tape 34.01 le texte se mes en rouge et une croix rouge dans E25 cela marche bien avant sa rester en noir et une croix noir
en 3 je tape 33.89 le résultat se mes en rouge et une croix rouge dans E25 c 'est bon mais le problème maintenant c est que si je tape 33.91 il reste en rouge et croix rouge mais il est dans la tolérance donc il devrait etre en noir et croix noir dans D25
et autre chose que veux dire montruc je ne connais pas et pas trouve d infos sur le net
merci de votre aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2015 à 13:43
On voit les symptômes que tu décris, mais on ne voit pas l'essentiel : le code que tu as écrit !
0
bonsoir je rentre du travail et je vien de voir votre reponse
voici le code
il n y a pas grand chose pour que cela marche
mais la je ne trouve pas
montruc = TextBox7.Text
Valeur = Val(TextBox7.Text)
montruc1 = Replace(montruc, "+", "/")
montruc1 = Replace(montruc1, "-", "/")
montruc1 = Replace(montruc1, "//", "/")
pos = InStr(montruc1, "/")
If pos = 0 Then
valmax = Valeur
valmin = Valeur
Else
methode = Mid(montruc, pos)
If methode Like "+#*" Then
valmax = Valeur + Val(Mid(methode, 2))
valmin = Valeur
ElseIf methode Like "-#*" Then
valmax = Valeur
valmin = Valeur - Val(Mid(methode, 2))
ElseIf methode Like "+-#*" Or methode Like "-+*" Then
valmax = Valeur + Val(Mid(methode, 3))
valmin = Valeur - Val(Mid(methode, 3))
Else
valmax = Valeur
valmin = Valeur
End If
End If
MsgBox "il te faut donc vérifier que la valeur de ta cellule est comprise entre " & _
valmax & " et " & valmin & " ... simple, non ?"

If (Target.Row = 25) And (Target.Column = 6) Then

Range("D25:E25").ClearContents
Range("D25:F25").Font.Color = 0

If (Target.value > (Valeur + Tolerance)) Or (Target.value < (Valeur - Tolerance)) T
'Si c'est à l'extérieur de l'intervale
Range("E25").value = "X"
Range("E25:F25").Font.Color = 255
Else
'sinon c'est à l'intérieur de l'intervale
Range("D25").value = "X"
Range("D25:F25").Font.Color = 0

End If
End If
end sub
merci de votre aide
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 16/02/2015 à 21:22
Déjà :
ceci :
If (Target.value > (Valeur + Tolerance)) Or (Target.value < (Valeur - Tolerance)) T

1) ne risque pas d'être un copié/collé de ton code. (c'est quoi, ce "T" final ???? Un "Then, qui n'est pas là, bien sûr)
2) est-il vraiment si difficile de comprendre que c'est en dehors si > valmax ou < valmin et que dedans sinon ????
3) est-il vraiment si difficile de comprendre que le msgbox du code que je t'ai montré n'est là que pour te faire comprendre (et rien de plus) et n'a rien à faire dans le code final ???
Et dire que par mon msgbox, j'avais en plus pris la peine de te dire entre quelle valeur maximale et quelle valeur minimale devait être la valeur de ta cellule pour être dans la fourchette permise !!!
Es-tu certain de vouloir être un développeur ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
oui c est then
ensuite pour vous qui être très a l aise dans le développement cela vous parait très simple
mais pour un débutent il y a tellement a apprendre que parfois ont veux aller trop vite et ont passe devant se qui est simple
et pour finir non je ne cherche pas a devenir un développeur
c est juste que j ais besoin de se petit programme pour moi au travail
qui me rendrera le travaille plus simple
merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 16/02/2015 à 22:05
Bref ...
Il suffisait de lire, pourtant... (et c'était vraiment enfantin)
Pour ton info : les DEUX codes que je t'ai donnés marchent bien tous les deux et calculent tous les deux convenablement les deux bornes (valmax et valmin). Le second est plus court et plus rapide.
J'attends maintenant que tu libères cette discussion en cliquant sur le tag RESOLU au niveau de ton premier message (respecte au moins cette règle, s'il te plait).
Attention : pour y parvenir, il te faudra nécessairement revenir en te "loggant" réellement comme pour ton 1er message (sous veve890 et avec le mot de passe de veve890).

PS : on vient ici en tant que développeur, sur ce forum de développeurs.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Rejoignez-nous