Message d'alerte avec VBA

Résolu
Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   -  
Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention   -

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. 

2 réponses

  1. Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention  
     

    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
    1. Hamster18 Messages postés 176 Date d'inscription   Statut Membre Dernière intervention  
       

      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