Bonjour à tous, je cherche à faire un projet de publipostage notamment à l'aide d'un userform. Un de mes boutons de l'userform ne fonctionne pas, je pense avoir un problème dans ma déclaration de variables mais je ne comprends pas pourquoi ; j'ai fait des recherches sur le forum, mais pas moyen de dépanner mon code.

Ma déclaration de variable(placée en haut d'un module) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
Option Explicit
Public Publipostage As Workbook
Public Dossiers, Syndics, Convention, ListeNego As Worksheet
Public i, j, k As Long
Public Code_IMB, No_IMB, No_Cplt_IMB, Voie_IMB, Adresse_IMB, CP_IMB, Localite_IMB, Etat_Nego, CodeRegroup, Nb_EL As String
Public Code_SYN, Nom_SYN, Civ_RESP, Nom_RESP, Prenom_RESP, No_SYN, No_Cplt_SYN, Voie_SYN, Adresse_SYN, CP_SYN, Localite_SYN, Tel_SYN, Mob_SYN, Fax_SYN, Mail_SYN, Type_SYN As String
Public Nego, Mail_Nego, Tel_Nego, Fct_Nego As String
Public TabNEGO() As String
Public A_Imprimer, Syndic_Trouve As Boolean
Le code qui se lance à l'appui du bouton :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
Private Sub GenererCOM_Click()
Call Init
Call RecupInfoUserForm
Call Generation_Conv(False)
End Sub
Mon sub Init() : (placé dans mon module)

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
 
Sub Init()
 
Set Publipostage = ActiveWorkbook
Set Dossiers = Publipostage.Sheets("Dossiers")
Set Syndics = Publipostage.Sheets("Syndics")
Set ListeNego = Publipostage.Sheets("Liste Nego")
Set Convention = Publipostage.Sheets("Convention")
Dim X, Y As Integer
 
'Remplissage de TabNEGO
ListeNego.Select
Range("A2").Select
i = Range("A1", Selection.End(xlDown)).Cells.Count 'Nombre de négo entrés
ReDim TabNEGO(1 To 4, 1 To i - 1)
For Y = 1 To i - 1
    For X = 1 To 4
        TabNEGO(X, Y) = Cells(Y + 1, X).Value 'TabNEGO --> tableau contenant les infos des négociateurs
    Next X
Next Y
 
End Sub
Mon Sub RecupInfoUserForm(placé dans le code de mon userform):

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 RecupInfoUserForm()
 
Code_IMB = TextBoxCodeIMB.Value
No_IMB = TextBoxNoIMB.Value
No_Cplt_IMB = TextBoxNoCpltIMB.Value
Voie_IMB = TextBoxVoieIMB.Value
Adresse_IMB = TextBoxAdresseIMB.Value
CP_IMB = TextBoxCPIMB.Value
Localite_IMB = TextBoxVilleIMB.Value
Civ_RESP = TextBoxCivRESP.Value
Nom_SYN = TextBoxNomSYN.Value
Nom_RESP = TextBoxRespSYN.Value
No_SYN = TextBoxNoSYN.Value
No_Cplt_SYN = TextBoxNoCpltSYN.Value
Voie_SYN = TextBoxVoieSYN.Value
Adresse_SYN = TextBoxAdresseSYN.Value
CP_SYN = TextBoxCPSYN.Value
Localite_SYN = TextBoxVilleSYN.Value
Mail_SYN = TextBoxMailSYN.Value
Nego = ComboBoxNomNEGO.Value
Mail_Nego = TextBoxMailNEGO.Value
Tel_Nego = TextBoxTelNEGO.Value
Fct_Nego = TextBoxPosteNEGO.Value
 
If Nom_RESP = "" Then
    Nom_RESP = Nom_SYN
End If
 
End Sub
Mon Sub Generation_Conv (placé dans mon module) ; il n'est pas complet (le reste est un peu confidentiel) mais peu importe : c'est ici que ma macro coince, ma macro ne récupère pas les valeurs de mes variables, pourtant déclarées en public au début de mon module. Grâce à des espions sur mes variables, je me suis rendu compte que lors de l'éxécution de ce sub, ma macro crée de nouvelles variables (par exemple Module7.Civ_RESP vaut bien la valeur que je veux mais Module7.Generation_Conv.Civ_RESP est vide, comme si ma macro n'arrivait pas à comprendre que ces deux variables sont censées être les mêmes) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
Sub Generation_Conv(Impression As Boolean) 'Génère la convention, si Impression vaut True, imprime la convention après l'avoir générée
 
Convention.Select
Range("D7") = Civ_RESP & " " & Prenom_RESP & " " & Nom_RESP
Range("D8") = No_SYN & " " & No_Cplt_SYN & " " & Voie_SYN & " " & Adresse_SYN
Range("D9") = CP_SYN & " " & Localite_SYN
Range("A11") = "   Réf : " & No_IMB & " " & No_Cplt_IMB & " " & Voie_IMB & " " & Adresse_IMB
Range("A12") = "           " & CP_IMB & " " & Localite_IMB
Range("G12") = "TOURS, le " & Date
End Sub
J'espère que mon problème est clair, je me suis peut-être un peu embourbé dans mes explications
Merci pour votre aide!