Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Empêcher un Combobox change lors de l'initialisation d'un userform

2 réponses
Avatar
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

Cells(ActiveCell.Row, 1).Activate
DTPicker1.Value =3D ActiveCell.Value

ligne =3D [A65536].End(xlUp)(2).Row
Range("C1").Formula =3D "=3DSUMIF($A$3:$A$" & ligne & ",$D$1,$F
$3:$F$" & ligne & ")"
TextBox2.Value =3D [c1].Text


ComboBox1.Value =3D ActiveCell.Offset(0, 1).Value
ComboBox2.Value =3D ActiveCell.Offset(0, 2).Value
ComboBox3.Value =3D ActiveCell.Offset(0, 3).Value


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

J'esp=E8re que c'est compr=E9hensible...

Merci pour votre temps

Denys

2 réponses

Avatar
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

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 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
Avatar
Denys
Bonsoir Daniel,

C'est parfait, ça fonctionne à merveille....

Merci beaucoup

Denys