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 SubA+
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 SubEt 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 SubBon 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