Empêcher un Combobox change lors de l'initialisation d'un userform
2 réponses
Denys
Bonjour =E0 tous,
Lors de l'initialisation d'un userform que j'appelle Correction, je
souhaite que le calendrier choisisse la date en Colonne A, le Combobox
1 la valeur en colonne B, le combobox 2 la valeur en colonne C et le
combobox3 la valeur en colonne D.
Cependant, lorsque quelqu'un change la valeur du Combobox1, les
Combobox 2 et 3 en sont affect=E9s car le Rowsource change.
Mais =E0 l'initialisation du Userform, je voudrais simplement que les
combobox 1 2 et 3 prennent la valeur des cellules.
Voici le code:
Private Sub UserForm_Initialize()
Application.ScreenUpdating =3D False
Sheet1.Select
Dim increment As Date, i As Date
increment =3D 1 / 24 / 12
fin =3D (1 / 24) * 12 - increment
For i =3D 0 To fin Step increment
ComboBox7.AddItem Format(i, "h:mm")
Next
TextBox1.Value =3D ActiveCell.Offset(0, 4).Value
If ActiveCell.Offset(0, 4).Value =3D "" Then TextBox1.Value
=3D 0
TextBox3.Value =3D ActiveCell.Offset(0, 6).Value
Application.ScreenUpdating =3D True
End Sub
Sauf que j'ai des =E9v=E8nements Combobox Change que je voudrais =E9viter,
mais seulement =E0 l'initialisation du Userform:
Private Sub Combobox2_Change()
If ComboBox1 =3D "System Defect" Then Call TrouverSD (Je crois que
c'est ici le probl=E8me car cela r=E9f=E8re =E0 un rowsource situ=E9 sur un=
e
autre feuille...)
If ComboBox1 =3D "Support" Then Call TrouverSU
Sheet1.Select
End Sub
Sub TrouverSD()
On Error Resume Next
ComboBox3.Enabled =3D True
Nom =3D ComboBox2.Value
Dim C
With Sheet3.Range("proj")
Set C =3D .Find(What:=3DNom, After:=3DRange("B2"), LookIn:=3DxlValu=
es)
If Not C Is Nothing Then
fista =3D C.Address
Application.GoTo Reference:=3DRange(C.Address)
End If
ComboBox3.Value =3D Sheet3.Range(C.Address).Offset(0, 1).Value
End With
'ActiveCell.Offset(0, 1).Select
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
DanielCo
Bonsooir. En tête du mmodule, tu mets : Public Test2 as Boolean Dans : Private Sub UserForm_Initialize() mets : Test2 = False Après : Private Sub Combobox2_Change() mets : If Test2 = False Then Test2 = True Exit Sub End if et tu répètes l'opération pour tous les combobox dont tu veux empêcher le déclenchement de macro évènementielle. Cordialement. Daniel
Bonjour à tous,
Lors de l'initialisation d'un userform que j'appelle Correction, je souhaite que le calendrier choisisse la date en Colonne A, le Combobox 1 la valeur en colonne B, le combobox 2 la valeur en colonne C et le combobox3 la valeur en colonne D.
Cependant, lorsque quelqu'un change la valeur du Combobox1, les Combobox 2 et 3 en sont affectés car le Rowsource change.
Mais à l'initialisation du Userform, je voudrais simplement que les combobox 1 2 et 3 prennent la valeur des cellules.
Voici le code:
Private Sub UserForm_Initialize() Application.ScreenUpdating = False
Sheet1.Select
Dim increment As Date, i As Date increment = 1 / 24 / 12 fin = (1 / 24) * 12 - increment For i = 0 To fin Step increment ComboBox7.AddItem Format(i, "h:mm") Next
TextBox1.Value = ActiveCell.Offset(0, 4).Value If ActiveCell.Offset(0, 4).Value = "" Then TextBox1.Value = 0
TextBox3.Value = ActiveCell.Offset(0, 6).Value
Application.ScreenUpdating = True End Sub
Sauf que j'ai des évènements Combobox Change que je voudrais éviter, mais seulement à l'initialisation du Userform:
Private Sub Combobox2_Change()
If ComboBox1 = "System Defect" Then Call TrouverSD (Je crois que c'est ici le problème car cela réfère à un rowsource situé sur une autre feuille...)
If ComboBox1 = "Support" Then Call TrouverSU
Sheet1.Select End Sub
Sub TrouverSD() On Error Resume Next ComboBox3.Enabled = True Nom = ComboBox2.Value Dim C With Sheet3.Range("proj") Set C = .Find(What:=Nom, After:=Range("B2"), LookIn:=xlValues) If Not C Is Nothing Then fista = C.Address Application.GoTo Reference:=Range(C.Address) End If ComboBox3.Value = Sheet3.Range(C.Address).Offset(0, 1).Value End With 'ActiveCell.Offset(0, 1).Select End Sub
J'espère que c'est compréhensible...
Merci pour votre temps
Denys
Bonsooir.
En tête du mmodule, tu mets :
Public Test2 as Boolean
Dans :
Private Sub UserForm_Initialize()
mets :
Test2 = False
Après :
Private Sub Combobox2_Change()
mets :
If Test2 = False Then
Test2 = True
Exit Sub
End if
et tu répètes l'opération pour tous les combobox dont tu veux empêcher
le déclenchement de macro évènementielle.
Cordialement.
Daniel
Bonjour à tous,
Lors de l'initialisation d'un userform que j'appelle Correction, je
souhaite que le calendrier choisisse la date en Colonne A, le Combobox
1 la valeur en colonne B, le combobox 2 la valeur en colonne C et le
combobox3 la valeur en colonne D.
Cependant, lorsque quelqu'un change la valeur du Combobox1, les
Combobox 2 et 3 en sont affectés car le Rowsource change.
Mais à l'initialisation du Userform, je voudrais simplement que les
combobox 1 2 et 3 prennent la valeur des cellules.
Voici le code:
Private Sub UserForm_Initialize()
Application.ScreenUpdating = False
Sheet1.Select
Dim increment As Date, i As Date
increment = 1 / 24 / 12
fin = (1 / 24) * 12 - increment
For i = 0 To fin Step increment
ComboBox7.AddItem Format(i, "h:mm")
Next
TextBox1.Value = ActiveCell.Offset(0, 4).Value
If ActiveCell.Offset(0, 4).Value = "" Then TextBox1.Value
= 0
TextBox3.Value = ActiveCell.Offset(0, 6).Value
Application.ScreenUpdating = True
End Sub
Sauf que j'ai des évènements Combobox Change que je voudrais éviter,
mais seulement à l'initialisation du Userform:
Private Sub Combobox2_Change()
If ComboBox1 = "System Defect" Then Call TrouverSD (Je crois que
c'est ici le problème car cela réfère à un rowsource situé sur une
autre feuille...)
If ComboBox1 = "Support" Then Call TrouverSU
Sheet1.Select
End Sub
Sub TrouverSD()
On Error Resume Next
ComboBox3.Enabled = True
Nom = ComboBox2.Value
Dim C
With Sheet3.Range("proj")
Set C = .Find(What:=Nom, After:=Range("B2"), LookIn:=xlValues)
If Not C Is Nothing Then
fista = C.Address
Application.GoTo Reference:=Range(C.Address)
End If
ComboBox3.Value = Sheet3.Range(C.Address).Offset(0, 1).Value
End With
'ActiveCell.Offset(0, 1).Select
End Sub
Bonsooir. En tête du mmodule, tu mets : Public Test2 as Boolean Dans : Private Sub UserForm_Initialize() mets : Test2 = False Après : Private Sub Combobox2_Change() mets : If Test2 = False Then Test2 = True Exit Sub End if et tu répètes l'opération pour tous les combobox dont tu veux empêcher le déclenchement de macro évènementielle. Cordialement. Daniel
Bonjour à tous,
Lors de l'initialisation d'un userform que j'appelle Correction, je souhaite que le calendrier choisisse la date en Colonne A, le Combobox 1 la valeur en colonne B, le combobox 2 la valeur en colonne C et le combobox3 la valeur en colonne D.
Cependant, lorsque quelqu'un change la valeur du Combobox1, les Combobox 2 et 3 en sont affectés car le Rowsource change.
Mais à l'initialisation du Userform, je voudrais simplement que les combobox 1 2 et 3 prennent la valeur des cellules.
Voici le code:
Private Sub UserForm_Initialize() Application.ScreenUpdating = False
Sheet1.Select
Dim increment As Date, i As Date increment = 1 / 24 / 12 fin = (1 / 24) * 12 - increment For i = 0 To fin Step increment ComboBox7.AddItem Format(i, "h:mm") Next
TextBox1.Value = ActiveCell.Offset(0, 4).Value If ActiveCell.Offset(0, 4).Value = "" Then TextBox1.Value = 0
TextBox3.Value = ActiveCell.Offset(0, 6).Value
Application.ScreenUpdating = True End Sub
Sauf que j'ai des évènements Combobox Change que je voudrais éviter, mais seulement à l'initialisation du Userform:
Private Sub Combobox2_Change()
If ComboBox1 = "System Defect" Then Call TrouverSD (Je crois que c'est ici le problème car cela réfère à un rowsource situé sur une autre feuille...)
If ComboBox1 = "Support" Then Call TrouverSU
Sheet1.Select End Sub
Sub TrouverSD() On Error Resume Next ComboBox3.Enabled = True Nom = ComboBox2.Value Dim C With Sheet3.Range("proj") Set C = .Find(What:=Nom, After:=Range("B2"), LookIn:=xlValues) If Not C Is Nothing Then fista = C.Address Application.GoTo Reference:=Range(C.Address) End If ComboBox3.Value = Sheet3.Range(C.Address).Offset(0, 1).Value End With 'ActiveCell.Offset(0, 1).Select End Sub