Userform : Msgbox

bonjour à toutes et à tous

je travaille, actuellement, sur un fichier où la saisie s'effectue via des userforms

je voulais savoir, lors de la saisie, de faire apparaitre des Msgbox si certaines conditions sont remplies par exemple :

si textbox1 = 2.27 de l'userform1 alors affichage d'un msgbox : "Etes vous sûr ?"

merci de vos lumières

chb44

Bonjour chb44

Dans ton USF, dans le contrôle TextBox1, il suffit d'utiliser l'évènement AfterUpdate

Ce qui peut donner en VBA

Private Sub TextBox1_AfterUpdate()
  ' Vérifier la valeur après la saisie, au passage a un autre contrôle
  If Me.TextBox1.Value = 2.27 Then
    ' Si la valeur correspond à une valeur donnée, poser la question
    If MsgBox("Etes-vous sûr !?", vbQuestion + vbYesNo, "ATTENTION ...") = vbNo Then
      ' Si l'utilisateur répond non, on efface le contenu
      Me.TextBox1.Value = ""
    End If
  End If
End Sub

A+

Bonjour Chb44,

Quelque chose du genre devrais marcher, après à toi de voir sur quel évènement tu veux placer l'apparition de ces MsgBox, je garantie pas que le Change soit le meilleur, il aura ptet tendance à être chiant et t'afficher les messages dès que tu touches au clavier (essaye ptet le BeforeUpdate, ou le Enter, ...)

Private Sub TextBox1_Change()
    If Me.TextBox1.Value = "2.27" Then
        MsgBox "Etes vous sûr?"
    Else
        'Msgbox "Ahh ouais???"
    End If
End Sub

Et si t'as plusieurs tests, pour éviter de joueur aux poupées russes avec les IF, privilégie plutôt une structure Select!

En espérant avoir répondu à ta question!

bonsoir Reuk,

merci de tes réponses, je vais tester et je te redis !

bonsoir Reuk et Bruno M

tout d'abord, merci pour vos messages, j'ai essayé vos codes mais malheureusement, j'ai dû faire une erreur, cela ne fonctionne pas !

voici le premier code utilisé = Reuk

Private Sub ComboBox1_Change()

Sheets("Fiche descriptive").Range("c31") = ComboBox1

End Sub

Private Sub ComboBox2_Change()

Sheets("Fiche descriptive").Range("c32") = ComboBox2

End Sub

Private Sub ComboBox3_Change()

Sheets("Fiche descriptive").Range("C33") = ComboBox3

End Sub

Private Sub ComboBox4_Change()

Sheets("Fiche descriptive").Range("c34") = ComboBox4

End Sub

Private Sub ComboBox5_Change()

Sheets("Fiche descriptive").Range("c35") = ComboBox5

End Sub

Private Sub ComboBox6_Change()

Sheets("Fiche descriptive").Range("c36") = ComboBox6

End Sub

Private Sub ComboBox7_Change()

Sheets("Fiche descriptive").Range("c37") = ComboBox7

End Sub

Private Sub ComboBox8_Change()

Sheets("Fiche descriptive").Range("C38") = ComboBox8

End Sub

Private Sub ComboBox9_Change()

Sheets("Fiche descriptive").Range("C39") = ComboBox9

End Sub

Private Sub ComboBox10_Change()

Sheets("Fiche descriptive").Range("C40") = ComboBox10

End Sub

Private Sub TextBox5_enter()

If Me.TextBox5.Value = "2.27" Then

MsgBox "Etes vous sûr?"

Else

'MsgBox "Ahh ouais???"

End If

End Sub

Private Sub CommandButton1_Click()

Dim I As Integer, K As Integer, Col As Integer

' Utilité ?

With Sheets("Fiche descriptive")

For I = 0 To 9

Me.Controls("TextBox" & 7 + (I * 8)) = .Range("H" & 31 + I)

Me.Controls("TextBox" & 8 + (I * 8)) = .Range("I" & 31 + I)

Next I

Me.TextBox81 = .Range("H41")

Me.TextBox82 = .Range("I41")

End With

For I = 0 To 9

For K = 1 To 6

With Me.Controls("TextBox" & (I * 8) + K)

If .Value <> "" Then

Col = K

If K > 2 Then Col = K + 1

Sheets("Fiche descriptive").Cells(31 + I, Col) = Val(Replace(.Value, ",", "."))

End If

End With

Next K

Next I

Me.Hide

UserForm4.Show 0

End Sub

Private Sub CommandButton2_Click()

' Précédent

Me.Hide

UserForm2.Show 0

End Sub

Private Sub UserForm_Activate()

Call determine(2)

With Me

.StartUpPosition = 3

.Width = Application.Width

.Height = Application.Height

.Left = 0

.Top = 0

End With

End Sub

Private Sub UserForm_Resize()

Dim I As Integer

Dim Ctrl As Control

On Error Resume Next

For Each Ctrl In Controls

I = I + 1

Ctrl.Width = Me.Width / (Largeur_Usf / l(I))

Ctrl.Height = Me.Height / (Hauteur_Usf / h(I))

Ctrl.Left = Me.Width / (Largeur_Usf / LeftBouton(I))

Ctrl.Top = Me.Height / (Hauteur_Usf / TopBouton(I))

Ctrl.FontSize = ((Me.Height + Me.Width) / 8) / (FontBouton * 2)

Next Ctrl

End Sub

Private Sub UserForm_Initialize()

Dim Nb As Integer

Dim I As Integer, K As Integer

For I = 0 To 9

For K = 2 To 6

Me.Controls("TextBox" & (I * 8) + K).Tag = I

ReDim Preserve TBox(Nb)

Set TBox(Nb).Boite = Me.Controls("TextBox" & (I * 8) + K)

Nb = Nb + 1

Next K

Me.Controls("TextBox" & (I * 8) + 7).Locked = True ' On bloque les totaux tonnage par ligne

Me.Controls("TextBox" & (I * 8) + 8).Locked = True ' On bloque les totaux cubage par ligne

Next I

Me.TextBox81.Locked = True ' On bloque le total général tonnage

Me.TextBox82.Locked = True ' On bloque le total général cubage

End Sub

2ième code = Bruno M

Private Sub ComboBox1_Change()

Sheets("Fiche descriptive").Range("c31") = ComboBox1

End Sub

Private Sub ComboBox2_Change()

Sheets("Fiche descriptive").Range("c32") = ComboBox2

End Sub

Private Sub ComboBox3_Change()

Sheets("Fiche descriptive").Range("C33") = ComboBox3

End Sub

Private Sub ComboBox4_Change()

Sheets("Fiche descriptive").Range("c34") = ComboBox4

End Sub

Private Sub ComboBox5_Change()

Sheets("Fiche descriptive").Range("c35") = ComboBox5

End Sub

Private Sub ComboBox6_Change()

Sheets("Fiche descriptive").Range("c36") = ComboBox6

End Sub

Private Sub ComboBox7_Change()

Sheets("Fiche descriptive").Range("c37") = ComboBox7

End Sub

Private Sub ComboBox8_Change()

Sheets("Fiche descriptive").Range("C38") = ComboBox8

End Sub

Private Sub ComboBox9_Change()

Sheets("Fiche descriptive").Range("C39") = ComboBox9

End Sub

Private Sub ComboBox10_Change()

Sheets("Fiche descriptive").Range("C40") = ComboBox10

End Sub

Private Sub TextBox5_AfterUpdate()

' Vérifier la valeur après la saisie, au passage a un autre contrôle

If Me.TextBox5.Value = 2.27 Then

' Si la valeur correspond à une valeur donnée, poser la question

If MsgBox("Etes-vous sûr !?", vbQuestion + vbYesNo, "ATTENTION ...") = vbNo Then

' Si l'utilisateur répond non, on efface le contenu

Me.TextBox5.Value = ""

End If

End If

End Sub

Private Sub CommandButton1_Click()

Dim I As Integer, K As Integer, Col As Integer

' Utilité ?

With Sheets("Fiche descriptive")

For I = 0 To 9

Me.Controls("TextBox" & 7 + (I * 8)) = .Range("H" & 31 + I)

Me.Controls("TextBox" & 8 + (I * 8)) = .Range("I" & 31 + I)

Next I

Me.TextBox81 = .Range("H41")

Me.TextBox82 = .Range("I41")

End With

For I = 0 To 9

For K = 1 To 6

With Me.Controls("TextBox" & (I * 8) + K)

If .Value <> "" Then

Col = K

If K > 2 Then Col = K + 1

Sheets("Fiche descriptive").Cells(31 + I, Col) = Val(Replace(.Value, ",", "."))

End If

End With

Next K

Next I

Me.Hide

UserForm4.Show 0

End Sub

Private Sub CommandButton2_Click()

' Précédent

Me.Hide

UserForm2.Show 0

End Sub

Private Sub UserForm_Activate()

Call determine(2)

With Me

.StartUpPosition = 3

.Width = Application.Width

.Height = Application.Height

.Left = 0

.Top = 0

End With

End Sub

Private Sub UserForm_Resize()

Dim I As Integer

Dim Ctrl As Control

On Error Resume Next

For Each Ctrl In Controls

I = I + 1

Ctrl.Width = Me.Width / (Largeur_Usf / l(I))

Ctrl.Height = Me.Height / (Hauteur_Usf / h(I))

Ctrl.Left = Me.Width / (Largeur_Usf / LeftBouton(I))

Ctrl.Top = Me.Height / (Hauteur_Usf / TopBouton(I))

Ctrl.FontSize = ((Me.Height + Me.Width) / 8) / (FontBouton * 2)

Next Ctrl

End Sub

Private Sub UserForm_Initialize()

Dim Nb As Integer

Dim I As Integer, K As Integer

For I = 0 To 9

For K = 2 To 6

Me.Controls("TextBox" & (I * 8) + K).Tag = I

ReDim Preserve TBox(Nb)

Set TBox(Nb).Boite = Me.Controls("TextBox" & (I * 8) + K)

Nb = Nb + 1

Next K

Me.Controls("TextBox" & (I * 8) + 7).Locked = True ' On bloque les totaux tonnage par ligne

Me.Controls("TextBox" & (I * 8) + 8).Locked = True ' On bloque les totaux cubage par ligne

Next I

Me.TextBox81.Locked = True ' On bloque le total général tonnage

Me.TextBox82.Locked = True ' On bloque le total général cubage

End Sub

merci de vos lumières

chb44

Pour aider nos pauvres yeux à ne pas vieillir trop vite, merci d'éditer ton post et d'utiliser les balises de code!

(tu trouveras le bouton au dessus de la zone dans laquelle tu saisis ton texte, le 5ème en partant de la gauche!)

Désolé, voici le code original, merci de me dire où je dois placer le code

merci de votre aide

Private Sub ComboBox1_Change()
Sheets("Fiche descriptive").Range("c31") = ComboBox1
End Sub
Private Sub ComboBox2_Change()
Sheets("Fiche descriptive").Range("c32") = ComboBox2
End Sub
Private Sub ComboBox3_Change()
Sheets("Fiche descriptive").Range("C33") = ComboBox3
End Sub
' Manque le numéro du ComboBox
Private Sub ComboBox4_Change()
Sheets("Fiche descriptive").Range("c34") = ComboBox4
End Sub
Private Sub ComboBox5_Change()
Sheets("Fiche descriptive").Range("c35") = ComboBox5
End Sub
Private Sub ComboBox6_Change()
Sheets("Fiche descriptive").Range("c36") = ComboBox6
End Sub
Private Sub ComboBox7_Change()
Sheets("Fiche descriptive").Range("c37") = ComboBox7
End Sub
Private Sub ComboBox8_Change()
Sheets("Fiche descriptive").Range("C38") = ComboBox8
End Sub
Private Sub ComboBox9_Change()
Sheets("Fiche descriptive").Range("C39") = ComboBox9
End Sub
Private Sub ComboBox10_Change()
Sheets("Fiche descriptive").Range("C40") = ComboBox10
End Sub
'' Pas utilisé
'Private Sub ComboBox12_Change()
'Sheets("Fiche descriptive").Range("c24") = ComboBox12
'End Sub

    Private Sub TextBox5_Change()
    If Me.TextBox5.Value = 2.27 Then
        MsgBox "Etes vous sûr?"
    Else
        'Msgbox "Ahh ouais???"
   End If
End Sub
Private Sub CommandButton1_Click()
Dim I As Integer, K As Integer, Col As Integer

  ' Utilité ?

  With Sheets("Fiche descriptive")
    For I = 0 To 9
      Me.Controls("TextBox" & 7 + (I * 8)) = .Range("H" & 31 + I)
      Me.Controls("TextBox" & 8 + (I * 8)) = .Range("I" & 31 + I)
    Next I
    Me.TextBox81 = .Range("H41")
    Me.TextBox82 = .Range("I41")
  End With

'TextBox5 = .Range("H31")
'TextBox9 = .Range("I31")
'TextBox10 = .Range("I32")
'TextBox15 = .Range("H32")
'TextBox19 = .Range("I33")
'TextBox24 = .Range("H33")
'TextBox28 = .Range("I34")
'TextBox33 = .Range("H34")
'TextBox37 = .Range("I35")
'TextBox42 = .Range("H35")
'TextBox46 = .Range("I36")
'TextBox51 = .Range("H36")
'TextBox60 = .Range("H37")
'TextBox64 = .Range("I37")
'TextBox65 = .Range("I38")
'TextBox70 = .Range("H38")
'TextBox74 = .Range("I39")
'TextBox79 = .Range("H39")
'TextBox83 = .Range("I40")
'TextBox88 = .Range("H40")
'TextBox109 = .Range("I41")
'TextBox110 = .Range("H41")
'End With

  For I = 0 To 9
    For K = 1 To 6
      With Me.Controls("TextBox" & (I * 8) + K)
        If .Value <> "" Then
          Col = K
          If K > 2 Then Col = K + 1
          Sheets("Fiche descriptive").Cells(31 + I, Col) = Val(Replace(.Value, ",", "."))
        End If
      End With
    Next K
  Next I

'With Sheets("Fiche descriptive")
'If Trim(Me.TextBox10) <> "" Then .Range("c22") = Val(Replace(Me.TextBox10, ",", "."))
'If Trim(Me.TextBox1) <> "" Then .Range("A31") = Val(Replace(Me.TextBox1, ",", "."))
'If Trim(Me.TextBox2) <> "" Then .Range("B31") = Val(Replace(Me.TextBox2, ",", "."))
'If Trim(Me.TextBox3) <> "" Then .Range("D31") = Val(Replace(Me.TextBox3, ",", "."))
'If Trim(Me.TextBox6) <> "" Then .Range("E31") = Val(Replace(Me.TextBox6, ",", "."))
'If Trim(Me.TextBox7) <> "" Then .Range("F31") = Val(Replace(Me.TextBox7, ",", "."))
'If Trim(Me.TextBox8) <> "" Then .Range("G31") = Val(Replace(Me.TextBox8, ",", "."))
'If Trim(Me.TextBox11) <> "" Then .Range("A32") = Val(Replace(Me.TextBox11, ",", "."))
'If Trim(Me.TextBox12) <> "" Then .Range("B32") = Val(Replace(Me.TextBox12, ",", "."))
'If Trim(Me.TextBox13) <> "" Then .Range("D32") = Val(Replace(Me.TextBox13, ",", "."))
'If Trim(Me.TextBox16) <> "" Then .Range("E32") = Val(Replace(Me.TextBox16, ",", "."))
'If Trim(Me.TextBox17) <> "" Then .Range("F32") = Val(Replace(Me.TextBox17, ",", "."))
'If Trim(Me.TextBox18) <> "" Then .Range("G32") = Val(Replace(Me.TextBox18, ",", "."))
'If Trim(Me.TextBox20) <> "" Then .Range("A33") = Val(Replace(Me.TextBox20, ",", "."))
'If Trim(Me.TextBox21) <> "" Then .Range("B33") = Val(Replace(Me.TextBox21, ",", "."))
'If Trim(Me.TextBox22) <> "" Then .Range("D33") = Val(Replace(Me.TextBox22, ",", "."))
'If Trim(Me.TextBox25) <> "" Then .Range("E33") = Val(Replace(Me.TextBox25, ",", "."))
'If Trim(Me.TextBox26) <> "" Then .Range("F33") = Val(Replace(Me.TextBox26, ",", "."))
'If Trim(Me.TextBox27) <> "" Then .Range("G33") = Val(Replace(Me.TextBox27, ",", "."))
'If Trim(Me.TextBox29) <> "" Then .Range("A34") = Val(Replace(Me.TextBox29, ",", "."))
'If Trim(Me.TextBox30) <> "" Then .Range("B34") = Val(Replace(Me.TextBox30, ",", "."))
'If Trim(Me.TextBox31) <> "" Then .Range("D34") = Val(Replace(Me.TextBox31, ",", "."))
'If Trim(Me.TextBox34) <> "" Then .Range("E34") = Val(Replace(Me.TextBox34, ",", "."))
'If Trim(Me.TextBox35) <> "" Then .Range("F34") = Val(Replace(Me.TextBox35, ",", "."))
'If Trim(Me.TextBox36) <> "" Then .Range("G34") = Val(Replace(Me.TextBox36, ",", "."))
'If Trim(Me.TextBox38) <> "" Then .Range("A35") = Val(Replace(Me.TextBox38, ",", "."))
'If Trim(Me.TextBox39) <> "" Then .Range("B35") = Val(Replace(Me.TextBox39, ",", "."))
'If Trim(Me.TextBox40) <> "" Then .Range("D35") = Val(Replace(Me.TextBox40, ",", "."))
'If Trim(Me.TextBox43) <> "" Then .Range("E35") = Val(Replace(Me.TextBox43, ",", "."))
'If Trim(Me.TextBox44) <> "" Then .Range("F35") = Val(Replace(Me.TextBox44, ",", "."))
'If Trim(Me.TextBox45) <> "" Then .Range("G35") = Val(Replace(Me.TextBox45, ",", "."))
'If Trim(Me.TextBox47) <> "" Then .Range("A36") = Val(Replace(Me.TextBox47, ",", "."))
'If Trim(Me.TextBox48) <> "" Then .Range("B36") = Val(Replace(Me.TextBox48, ",", "."))
'If Trim(Me.TextBox49) <> "" Then .Range("D36") = Val(Replace(Me.TextBox49, ",", "."))
'If Trim(Me.TextBox52) <> "" Then .Range("E36") = Val(Replace(Me.TextBox52, ",", "."))
'If Trim(Me.TextBox53) <> "" Then .Range("F36") = Val(Replace(Me.TextBox53, ",", "."))
'If Trim(Me.TextBox54) <> "" Then .Range("G36") = Val(Replace(Me.TextBox54, ",", "."))
'If Trim(Me.TextBox56) <> "" Then .Range("A37") = Val(Replace(Me.TextBox56, ",", "."))
'If Trim(Me.TextBox57) <> "" Then .Range("B37") = Val(Replace(Me.TextBox57, ",", "."))
'If Trim(Me.TextBox58) <> "" Then .Range("D37") = Val(Replace(Me.TextBox58, ",", "."))
'If Trim(Me.TextBox61) <> "" Then .Range("E37") = Val(Replace(Me.TextBox61, ",", "."))
'If Trim(Me.TextBox62) <> "" Then .Range("F37") = Val(Replace(Me.TextBox62, ",", "."))
'If Trim(Me.TextBox63) <> "" Then .Range("G37") = Val(Replace(Me.TextBox63, ",", "."))
'If Trim(Me.TextBox66) <> "" Then .Range("A38") = Val(Replace(Me.TextBox66, ",", "."))
'If Trim(Me.TextBox67) <> "" Then .Range("B38") = Val(Replace(Me.TextBox67, ",", "."))
'If Trim(Me.TextBox68) <> "" Then .Range("D38") = Val(Replace(Me.TextBox68, ",", "."))
'If Trim(Me.TextBox71) <> "" Then .Range("E38") = Val(Replace(Me.TextBox71, ",", "."))
'If Trim(Me.TextBox72) <> "" Then .Range("F38") = Val(Replace(Me.TextBox72, ",", "."))
'If Trim(Me.TextBox73) <> "" Then .Range("G38") = Val(Replace(Me.TextBox73, ",", "."))
'If Trim(Me.TextBox75) <> "" Then .Range("A39") = Val(Replace(Me.TextBox75, ",", "."))
'If Trim(Me.TextBox76) <> "" Then .Range("B39") = Val(Replace(Me.TextBox76, ",", "."))
'If Trim(Me.TextBox77) <> "" Then .Range("D39") = Val(Replace(Me.TextBox77, ",", "."))
'If Trim(Me.TextBox80) <> "" Then .Range("E39") = Val(Replace(Me.TextBox80, ",", "."))
'If Trim(Me.TextBox81) <> "" Then .Range("F39") = Val(Replace(Me.TextBox81, ",", "."))
'If Trim(Me.TextBox82) <> "" Then .Range("G39") = Val(Replace(Me.TextBox82, ",", "."))
'If Trim(Me.TextBox84) <> "" Then .Range("A40") = Val(Replace(Me.TextBox84, ",", "."))
'If Trim(Me.TextBox85) <> "" Then .Range("B40") = Val(Replace(Me.TextBox85, ",", "."))
'If Trim(Me.TextBox86) <> "" Then .Range("D40") = Val(Replace(Me.TextBox86, ",", "."))
'If Trim(Me.TextBox89) <> "" Then .Range("E40") = Val(Replace(Me.TextBox89, ",", "."))
'If Trim(Me.TextBox90) <> "" Then .Range("F40") = Val(Replace(Me.TextBox90, ",", "."))
'If Trim(Me.TextBox91) <> "" Then .Range("G40") = Val(Replace(Me.TextBox91, ",", "."))
'End With
  Me.Hide
  UserForm4.Show 0
End Sub

Private Sub CommandButton2_Click()
' Précédent
  Me.Hide
  UserForm2.Show 0
End Sub

Private Sub UserForm_Activate()

  Call determine(2)

  With Me
    .StartUpPosition = 3
    .Width = Application.Width
    .Height = Application.Height
    .Left = 0
    .Top = 0
  End With
End Sub

Private Sub UserForm_Resize()
Dim I As Integer
Dim Ctrl As Control

  On Error Resume Next
  For Each Ctrl In Controls
    I = I + 1
    Ctrl.Width = Me.Width / (Largeur_Usf / l(I))
    Ctrl.Height = Me.Height / (Hauteur_Usf / h(I))
    Ctrl.Left = Me.Width / (Largeur_Usf / LeftBouton(I))
    Ctrl.Top = Me.Height / (Hauteur_Usf / TopBouton(I))
    Ctrl.FontSize = ((Me.Height + Me.Width) / 8) / (FontBouton * 2)
  Next Ctrl
End Sub

Private Sub UserForm_Initialize()
Dim Nb As Integer
Dim I As Integer, K As Integer

  For I = 0 To 9
    For K = 2 To 6
      Me.Controls("TextBox" & (I * 8) + K).Tag = I
      ReDim Preserve TBox(Nb)
      Set TBox(Nb).Boite = Me.Controls("TextBox" & (I * 8) + K)
      Nb = Nb + 1
    Next K
    Me.Controls("TextBox" & (I * 8) + 7).Locked = True      ' On bloque les totaux tonnage par ligne
    Me.Controls("TextBox" & (I * 8) + 8).Locked = True      ' On bloque les totaux cubage par ligne
  Next I

  Me.TextBox81.Locked = True      ' On bloque le total général tonnage
  Me.TextBox82.Locked = True      ' On bloque le total général cubage

End Sub

Bon y a un peu beaucoup de code en vrac là...

Qu'est ce qui ne marche pas, et qu'est ce que ça devrait faire?

Et ce code là, tu le met dans ton UserForm, mais j'imagine que c'est de la que tu l'as pris!

Bonsoir

J'ai inséré le code du msgbox dans le code de l'userform

Quand je lance le userform et que j'effectue un test avec un chiffre supérieur à 2.27, il n'y a rien qui se passe ! Le Msgbox ne s'affiche pas et là je ne comprends pas pourquoi ?

merci de vos lumières !

rebonjour

à priori, il faudrait saisir 2,27 sur l'USF et non 2.27 car VBA le considère comme texte et non comme chiffre

j'ai essayé et cela ne fonctionne tjs pas !

merci de vos lumières !!!!


ça y est ! j'ai trouvé !!

voici la solution :

Private Sub TextBox5_AfterUpdate()

' Vérifier la valeur après la saisie, au passage a un autre contrôle

If Me.TextBox5.Value = "2.27" Then

' Si la valeur correspond à une valeur donnée, poser la question

If MsgBox("Etes-vous sûr !?", vbQuestion + vbYesNo, "ATTENTION ...") = vbNo Then

' Si l'utilisateur répond non, on efface le contenu

Me.TextBox5.Value = ""

End If

End If

End Sub

Rechercher des sujets similaires à "userform msgbox"