Test si la fonction sort ou non de l'intervalle

Bonjour ;

Je débute le VBA et j’aurais besoin d’un renseignement pour un projet que je mène dans mon entreprise.

L’objectif est de savoir si la valeur rentrée par l’opérateur est comprise entre 54 et 56 et si elle ne l’ait pas je dois mettre une cellule en rouge.

Mon mode opératoire actuel est de faire des lignes de tests (exemple ci-dessous), mais avez-vous une autre méthode qui pourrait me raccourcir ses lignes interminables de code car je dois faire le test pour 6 valeurs différentes.

If Sheets(base_de_données).Cells(8, 9) > 56 Or Sheets(base_de_données).Cells(8, 9) < 54 or Sheets(base_de_données).Cells(8, 10) >56 Or Sheets(base_de_données).Cells(8, 10) <54 Then ( je vous épargne les 10lignes de test)

    Sheets("Accueil").Cells(c, r).Interior.Color = RGB(255, 100, 100)
End If

Je dois tester toutes ses valeurs les fentes doivent faire 50+/- 1 et la rotation 90°+/-0.5° par exemple

image

Merci d'avance pour vos réponses

Bonjour,

J'aurais bien dis une petite procédure comme celle-ci:

Sub test(Plage As Range, min, max)
Dim Cel As Range

For Each Cel In Plage.Cells
    If Cel < min Or Cel > max Then
        Cel.Interior.Color = RGB(255, 100, 100)
    End If
Next Cel
End Sub

Vous lui donnez une plage de cellules à checker (peut-être une cellule ou plusieurs cellules, attention à ne pas faire plusieurs zones de plages de cellules, elle n'est pas prévue pour), un minimum et un maximum.

Chaque cellule de la plage va être testée, et si sa valeur n'est pas entre le min et le max, alors son fond deviendra rouge.

Bonjour,

C'est peut-être plus simple sans VBA, avec une mise en forme conditionnelle ?

Daniel

Salut à vous deux, merci pour vos réponses.

ausecour je vais me renseigner sur l'utilisation des commandes que tu proposes comme le "Plage As Range" ou "plage" ou "range".

D'autre questions le mini et le max je les définit après ou je note les valeurs (ici 54 et 56) dans la parenthèse ?

Pour plus d'info voilà mon "interface" :

image

La démarche c'est : je rentre toutes mes valeurs et j'appuie sur ok puis si une des dimensions rentrées n'est pas la bonne le rectangle "Carte SPC" deviendra rouge

Et toutes les valeurs sont renvoyé dans ce tableau peu importe les valeurs.

image

Bonjour,

Ah oui ce n'est pas tout à fait ce que j'avais en tête, ce à quoi j'avais pensé c'était d'utiliser la procédure comme ça:

test Range("AI11"), 54, 56

De cette façon on aurait pu donner à la procédure la cellule dont on veut vérifier la valeur, le minimum qui est 54, le maximum qui est 56, et la mettre en rouge si sa valeur n'est pas dans l'intervalle.

Ici visiblement ce qui est cherché est un peu différent,

je me pose quelques questions:

par exemple pour la rotation vous avez dit:

"rotation 90°+/-0.5°"

L'intervalle est constant ou il peut changer?

Ce n'est pas mieux de directement mettre en couleur la cellule qui n'est pas dans l'intervalle? (via une mise en forme conditionnelle comme le proposait DanielC)

pour vous répondre l'intervalle sera toujours le même pour l'angle oui j'ai une tolérance de 0.5° et pour les mesure j'ai une tolérance de 1 mm

actuellement j'ai fait comme cela c'est à tester

'test valeur carte spc
If Sheets(base_de_données).Cells(8, 9) > 56 Or Sheets(base_de_données).Cells(8, 9) < 54 Or Sheets(base_de_données).Cells(8, 10) > 51 Or Sheets(base_de_données).Cells(8, 10) < 49 Or Sheets(base_de_données).Cells(8, 11) > 51 Or Sheets(base_de_données).Cells(8, 11) < 49 Or Sheets(base_de_données).Cells(8, 12) > 7 Or Sheets(base_de_données).Cells(8, 12) < 5 Or Sheets(base_de_données).Cells(8, 13) > 90.5 Or Sheets(base_de_données).Cells(8, 13) < 89.5 Or Sheets(base_de_données).Cells(8, 14) > 56 Or Sheets(base_de_données).Cells(8, 14) < 54 Then

'mise en couleur des tests à faire si la carte est pas bonne
    Sheets("Accueil").Cells(7, 4).Interior.Color = RGB(255, 100, 100)
    Sheets("Accueil").Cells(10, 4).Interior.Color = RGB(255, 100, 100)
    Sheets("Accueil").Cells(13, 4).Interior.Color = RGB(255, 100, 100)
    'Sheets("Accueil").Cells(16, 4).Interior.Color = RGB(255, 100, 100)
    Sheets("Accueil").Cells(4, 35).Interior.Color = RGB(255, 40, 40)

'on prépare le tableau a recevoir des valeurs    
    For Z = 5 To 7
    Sheets(base_de_données).Cells(8, Z) = ""
    Next Z

End If
D'accord, donc en effet pas de VBA requis ici.

Pour AI8 par exemple, qui est l'angle de rotation de la tête, on peut utiliser une mise en forme conditionnelle avec cette formule:

=ET(AI8<>"";OU(AI8>90.5;AI8<89.5))

Si la cellule AI8 n'est pas vide, et qu'elle est soit supérieure à 90.5, soit inférieure à 89.5, alors on applique la mise en forme (rouge par exemple).

Il suffit de faire une formule comme ça pour chaque cellule en changeant les valeurs et en appliquant les mises en forme souhaitées. Il faudra également changer l'adresse de la cellule pour celle utilisée, par exemple AI11 à la place des AI8 pour la cellule AI11.

Merci beaucoup pour ta méthode que je vais essayer par la suite j'ai testé ce que j'ai écrit ET ça marche

mais ce que tu as écrit est quand même beaucoup plus court et moins compliqué.

Je clos donc ce forum merci

Rechercher des sujets similaires à "test fonction sort intervalle"