Message d'alerte avec VBA

Résolu/Fermé
Hamster18 Messages postés 176 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 26 janv. 2023 à 12:51
Hamster18 Messages postés 176 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024 - 28 janv. 2023 à 12:00

Bonjour à tous !

J'ai un tableau dans lequel nous pouvons rentrer des nombres comme ci-dessous :

J'aimerais que si la moyenne de ces nombres n'est pas comprise dans les valeurs minimale et maximale tolérées une boite de dialogue soit ouverte (quelques soient le nombre de valeurs saisie dans un premier temps) . 

Je penses m'orienté vers une solution VBA mais je ne voit pas comment créer une boite de dialogue en VBA, et comment l'ouvrir si la moyenne sort de l'intervalle définit. 

Pouvez m'orienter vers la solution à adopter ? 

Merci d'avance de vos retours. 

Cordialement. 

A voir également:

2 réponses

T3chN0g3n Messages postés 5206 Date d'inscription samedi 16 février 2019 Statut Membre Dernière intervention 18 avril 2025 1 166
26 janv. 2023 à 15:54
0
Hamster18 Messages postés 176 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
26 janv. 2023 à 19:26

Bonsoir,

Merci ça m'as bien aider !

Maintenant je créer une msgbox et j'ai utilise un trigger pour l’afficher lors de chaque calcul sur la feuille.

J'aimerais maintenant que la msgbox s'affiche seulement quand la moyenne n'est pas compris dans le bon intervalle ...

Voici ou j'en suis dans le code :

Private Sub Worksheet_Calculate()


        Dim Msg, Style, Title, Help, Ctxt, Response, MyString
        Msg = "Do you want to continue ?"    ' Define message.
        Style = vbYesNo Or vbCritical Or vbDefaultButton2    ' Define buttons.
        Title = "MsgBox Demonstration"    ' Define title.
        Help = "DEMO.HLP"    ' Define Help file.
        Ctxt = 1000    ' Define topic context.
                ' Display message.
        Response = MsgBox(Msg, Style, Title, Help, Ctxt)
        If Response = vbYes Then    ' User chose Yes.
            MyString = "Yes"    ' Perform some action.
        Else    ' User chose No.
            MyString = "No"    ' Perform some action.
        End If

End Sub

Merci d'avance pour votre aide.

Cordialement.

0
Hamster18 Messages postés 176 Date d'inscription mercredi 2 janvier 2019 Statut Membre Dernière intervention 22 janvier 2024
28 janv. 2023 à 12:00

Ma solution si ça peut aider quelqu'un un jour

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range
    Dim iRow As Single
    Dim nb, i As Integer

    nb = 0 'compteur du nombre de valeur remplie dans la colonne
    Set KeyCells = Range("E15:ZZ19") 'champs de saisie des valeurs
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then 'permet de connaitre la cellule qui vient d'être modifié dans le champs de saisie des valeurs
            If IsNumeric(Cells(20, Range(Target.Address).Column).Value) = True Then 'vérifie que la cellule moyenne n'est pas une erreur
                For i = 1 To 5 'Boucle pour connaitre le nombre de valeur saisie dans la colonne
                    If IsEmpty(Cells(14 + i, Range(Target.Address).Column)) = False Then
                        nb = nb + 1
                    End If
                Next
                If nb > 4 Then 'Si 5 valeurs ont été saisie dans la colonne
                    If Cells(20, Range(Target.Address).Column).Value < Range("G7").Value Or Cells(20, Range(Target.Address).Column).Value > Range("G6").Value Then 'Si la moyenne n'est pas dans le bon interval
                        message Range(Target.Address), "MOYENNE NON-CONFORME" 'message d'alerte
                    End If
                    If Cells(21, Range(Target.Address).Column).Value > Range("G4") Then 'si l'étendu n'est pas dans le bon interval
                        message Range(Target.Address), "ETENDU NON-CONFORME" 'message d'alerte
                    End If
                End If
            End If
        Exit Sub
    End If
End Sub


Sub message(adresse, titre)
    Msg = "1. Vérifier la saisie" & Chr(13) & Chr(10) & "2. Refaire une mesure" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & "Si votre valeur est toujours non-conforme suivre les instrustions du document " & Worksheets("Identité").Range("C21").Value & " (mode opératoire  de réaction face au défaut) " & Chr(13) & Chr(10) & Chr(13) & Chr(10) & " Voulez-vous continuer ? "  ' Define message.
    Style = vbYesNo Or vbExclamation Or vbDefaultButton2    ' Define buttons.
    title = titre    ' Define title.
    Help = "DEMO.HLP"    ' Define Help file.
    Ctxt = 1000    ' Define topic context.
    Response = MsgBox(Msg, Style, title, Help, Ctxt) ' Display message.
    If Response = vbYes Then    ' User chose Yes.
        Exit Sub
    Else    ' User chose No.
        adresse.Value = "" ' Perform some action.
        Exit Sub
     End If
End Sub

0