Bonsoir,

Je cherche des solutions depuis 2 jours, mais tout ce que j'ai pu testé ne fonctionne pas...

Lorsque je choisie une société dans la liste d'un combobox : ComboBoxSté, cela modifie :
● la valeur d'un textbox : TextBoxEtage en indiquant l'étage correspondant
● et la valeur d'un autre combobox : (ComboBoxComp) en indiquant sa localisation (compartiment)

Certaines sociétés ont plusieurs localisations, je fais donc une boucle sur toutes ces localisations

Tout fonctionne bien, cependant la mise à jour de l'affichage du TextBoxEtage et du ComboBoxComp ne se fait que lorsque la procédure s'arrête

Avez-vous une solution pour que le TextBoxEtage et le ComboBoxComp affichent leur valeur successives pendant l'exécution de la macro ?


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub ComboBoxSté_LostFocus()
    Application.ScreenUpdating = True
    If Len(ComboBoxSté) > 2 Then
        With Worksheets("Sociétés").Range("B3:B300")
         Set F = .Find(ComboBoxSté, LookIn:=xlValues)
         If Not F Is Nothing Then
            'FirstAddress = F.Address                        ' pour ne boucler qu'une fois
            FirstName = ComboBoxSté
            Do
                ThisWorkbook.Adresse = F.Address
                TextBoxEtage = Worksheets("Sociétés").Range(F.Address).Offset(0, 2)
                ComboBoxComp = Worksheets("Sociétés").Range(F.Address).Offset(0, 3)
                ComboBoxSté = Worksheets("Sociétés").Range(F.Address)
                Set F = .FindNext(F)
                If F Is Nothing Then
                    GoTo Fini
                Else:  'If F.Address <> FirstAddress Then    ' pour ne boucler qu'une fois
                    Situation = MsgBox("Localisation suivante ?", vbYesNo)
                    If Situation = vbNo Then
                        GoTo Fini
                    Else: ComboBoxSté = FirstName
                        TextBoxEtage = ""
                        ComboBoxComp = ""
                    End If
                End If
            Loop        'While F.Address <> FirstAddress     ' pour ne boucler qu'une fois
          End If
Fini:    End With
    End If
End Sub