IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Confrontation variables module/userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut Confrontation variables module/userform
    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!

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Pour formater ton code, utilise le bouton # en haut du message.
    Quand tu déclares tes variables, mets le As Machin pour chacune d'elles¸
    Dans
    seul k est Long, les autres sont Variant

    Maintenant, si tu y vas en pas à pas (F8), regarde la valeur de tes variables.
    Je ne suis pas certain que leur initialisation se fasse bien dans ta Sub RecupInfoUserForm()

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Par défaut
    Bonjour et merci de ta réponse parmi!

    L'erreur venait de ma déclaration de variable! Il ne m'était pas venu à l'esprit que cela pouvait juste venir de là. En déclarant mes variables comme ça :

    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 As Worksheet, Syndics As Worksheet, Convention As Worksheet, ListeNego As Worksheet
    Public i As Long, j As Long, k As Long
    Public Code_IMB As String, No_IMB As String, No_Cplt_IMB As String, Voie_IMB As String, Adresse_IMB As String, CP_IMB As String, Localite_IMB As String, Etat_Nego As String, CodeRegroup As String, Nb_EL As String
    Public Code_SYN As String, Nom_SYN As String, Civ_RESP As String, Nom_RESP As String, Prenom_RESP As String, No_SYN As String, No_Cplt_SYN As String, Voie_SYN As String, Adresse_SYN As String, CP_SYN As String, Localite_SYN As String, Tel_SYN As String, Mob_SYN As String, Fax_SYN As String, Mail_SYN As String, Type_SYN As String
    Public Nego As String, Mail_Nego As String, Tel_Nego As String, Fct_Nego As String
    Public TabNEGO() As String
    Public A_Imprimer As Boolean, Syndic_Trouve As Boolean
    Ça fonctionne comme je veux!

    Encore merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment utiliser variable dans Userform et un module
    Par graniery dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 21/05/2016, 12h24
  2. Variable de Userform
    Par vinystic dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/11/2008, 21h41
  3. Variable modulable [Titre temporaire]
    Par llaffont dans le forum C#
    Réponses: 17
    Dernier message: 24/11/2007, 12h50
  4. Passage de variable procedure à userform
    Par spoyet dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/06/2007, 20h26
  5. [VBA-E]Pb de communica° entre module/UserForm[débutant]
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/03/2006, 09h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo