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) :
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
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
Mon sub Init() : (placé dans mon module)
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 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 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 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
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
J'espère que mon problème est clair, je me suis peut-être un peu embourbé dans mes explications
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
Merci pour votre aide!
Partager