Pièce jointe 154744Bonjour à tous,
Je débute en VBA.
J'ai créé un UserForm dont le résultat est inséré dans une variable. J'ai déclaré la variable au début de la feuille avant les macros sous la forme Public. Cependant la valeur de la variable reste vide dans la macro, alors qu'elle évolue correctement dans l'UserForm.

Voici le code de l'UserForm :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Public Valeure_propriete_machine As String
 
Private Sub CommandButton1_Click()
 
    Valeure_propriete_machine = ComboBox1.Value
    Unload UserForm_Machine
 
End Sub
Et le code le macro récupérant la variable :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
Sub Insertion_propriete_Machine()
'Renseigne la propriete Machine : Menus déroulants soit une machine choisie par l'utilisateur
 
If MsgBox("Souhaitez-vous appliquer une seule machine à l'ensemble des pièces et assemblages non resneignés ?", vbYesNoCancel + vbDefaultButton2, "Insertion de la propriété Désignation") = vbNo Then
 
    Dim V3 As Integer
    V3 = 12
    While Cells(V3, 1) <> ""
    Cells(V3, 12).Select
        If Not ActiveCell <> "" Then
            With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=Listes_menus_deroulants!$A$2:$A$26" 'VOIR POUR INSERER VARIABLE
                .IgnoreBlank = True
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = ""
                .InputMessage = ""
                .ErrorMessage = ""
                .ShowInput = True
                .ShowError = True
            End With
        End If
        V3 = V3 + 1
    Wend
Else
    'Valeure_propriete_machine = InputBox("Indiqué la valeur appliqué", "Valeure de la propriété désignation")
    UserForm_Machine.Show
 
    Dim V4 As Integer
    V4 = 12
    While Cells(V4, 1) <> ""
    Cells(V4, 12).Select
        If Not ActiveCell <> "" Then
            ActiveCell = Valeure_propriete_machine
        End If
        V4 = V4 + 1
    Wend
 
End If
 
End Sub
Je joins également le classeur.
Je vous remercie par avance.
Salutations.