Empêcher un Combobox change lors de l'initialisation d'un userform
Le
Denys
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
Cells(ActiveCell.Row, 1).Activate
DTPicker1.Value = ActiveCell.Value
ligne = [A65536].End(xlUp)(2).Row
Range("C1").Formula = "=SUMIF($A$3:$A$" & ligne & ",$D$1,$F
$3:$F$" & ligne & ")"
TextBox2.Value = [c1].Text
ComboBox1.Value = ActiveCell.Offset(0, 1).Value
ComboBox2.Value = ActiveCell.Offset(0, 2).Value
ComboBox3.Value = ActiveCell.Offset(0, 3).Value
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 un=
e
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:=xlValu=
es)
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
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
Cells(ActiveCell.Row, 1).Activate
DTPicker1.Value = ActiveCell.Value
ligne = [A65536].End(xlUp)(2).Row
Range("C1").Formula = "=SUMIF($A$3:$A$" & ligne & ",$D$1,$F
$3:$F$" & ligne & ")"
TextBox2.Value = [c1].Text
ComboBox1.Value = ActiveCell.Offset(0, 1).Value
ComboBox2.Value = ActiveCell.Offset(0, 2).Value
ComboBox3.Value = ActiveCell.Offset(0, 3).Value
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 un=
e
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:=xlValu=
es)
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

Poser une question


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
C'est parfait, ça fonctionne à merveille....
Merci beaucoup
Denys