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 :

Impossible de récupérer une variable d'une procédure à l'autre [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut Impossible de récupérer une variable d'une procédure à l'autre
    Bonjour,
    Je vais commencer par dire que je suis débutant.
    Sur ces bonnes bases, je vous explique mon problème j'ai créée un UserForm avec à l'intérieur un ComboBox contenant tous les mois d'une année. Je voudrai pouvoir récupérer le résultat sélectionné par l'utilisateur du ComboBox dans une varible pour après l'utiliser dans la procédure Sub Workbook_Open() ainsi que dans un de mes modules. Mais je beau essayai dans tous les sens y a rien a faire je n'arrive pas porté ma variable... Je pense que je dois utiliser les notion de procédure public non? Mais je crois que je n'y arrive pas. S'il vous plait donner moi un coup de main.

    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
    Sub UserForm_Initialize()
    ComboBox1.Clear
    ComboBox1.AddItem "Janvier"
    ComboBox1.AddItem "Février"
    ComboBox1.AddItem "Mars"
    ComboBox1.AddItem "Avril"
    ComboBox1.AddItem "Mai"
    ComboBox1.AddItem "Juin"
    ComboBox1.AddItem "Juillet"
    ComboBox1.AddItem "Août"
    ComboBox1.AddItem "Septembre"
    ComboBox1.AddItem "Octobre"
    ComboBox1.AddItem "Novembre"
    ComboBox1.AddItem "Décembre"
     
    End Sub
     
    Sub CommandButton1_Click()
        mois = ComboBox1.Value
    Unload Me
    End Sub
     
    Sub CommandButton2_Click()
    Unload Me
    End Sub
    Ma procédure qui se lance au démarrage :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Public Sub Workbook_Open()
     
        'Execute le boîte de dialogue
        UserForm1.Show
     
        datejour = Date - 1
        Modele = "Modele.xls"
        mois2 = Month(Now) - 1
        année2 = Year(Now)
        NomRepertoire = ActiveWorkbook.Path & "\Logs"
        MsgBox mois
        MsgBox année
     
        'If mois = Month(Now) And année = Year(Now) Then
        'NomFichier = ActiveWorkbook.Path & "\Fichier_" & mois2 & "_" & année2 & ".xls"
        'Else
        NomFichier = ActiveWorkbook.Path & "\Fichier_" & mois & "_" & année & ".xls"
        'End If
     
        'Commande de refresh du document
        Application.ScreenUpdating = True
     
        'Si on est sur le modèle de la Check List, on ouvre une fenêtre pour l'enregistrement de celle ci
        If (ActiveWorkbook.Name <> Modele) Then
        Exit Sub
        Else
        Set fso = CreateObject("Scripting.FileSystemObject")
     
        'Création du Répertoire
        If Not (fso.FolderExists(NomRepertoire)) Then fso.CreateFolder (NomRepertoire)
     
        'Si Fichier Excel existe
        If fso.FileExists(NomFichier) Then
            'Ouvrir le fichier existant
            Workbooks.Open FileName:=NomFichier
            Workbooks(Modele).Close SaveChanges:=False
        Else
            'Créer un nouveau fichier Excel
            Dim lngCount As Long
            With Application.FileDialog(msoFileDialogSaveAs)
                .AllowMultiSelect = False
                .InitialFileName = NomFichier
                If .Show = -1 Then
                    For lngCount = 1 To .SelectedItems.Count
                        Workbooks(Modele).SaveAs (.SelectedItems(lngCount))
                    Next lngCount
                Else
                Exit Sub
                End If
            End With
            ActiveWorkbook.Save
        End If
        End If
    'recupere l'espace memoire utiliser par fso
    Set fso = Nothing
    'Call Connect
     
    End Sub
    Encore merci pour votre aide.

  2. #2
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut
    Bonjour ,

    j'ai pas tous lu le code mais pour sauvegarder une variable et l'utiliser entre 2 routines , il faut la définir comme public ou la passer en paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public NomFichier as string

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    Oui c'est ce que j'ai essayé je l'ai mis dans mon sub comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub CommandButton1_Click()
    Public mois As String
    mois = ComboBox1.Value
    Unload Me
    End Sub
    Mais apparemment a l'exécution ça ne lui plait pas il me sort un problème de compilation... Alors est-ce que je l'utilise au mauvais endroit ? Je sais pas je même déclaré en début "Option Explicit" mais toujours rien...

    Exactement il dit comme erreur :
    Attribut incorrect dans une procédure sub...
    Merci de ton aide mais as tu une idée?

  4. #4
    Membre éclairé Avatar de FCL31
    Profil pro
    Inscrit en
    Août 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 887
    Par défaut
    Salut

    Je pense qu'il ne faut pas le mettre dans le Sub
    Je pense qu'il faut le mettre tout seul

  5. #5
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Par défaut
    OK j'ai compris ... Ouffff ... En fait il faut mettre le public NomVarible As String en début de module et la ça fonctionne. Je vais essayer dans le sub workbook_open je vous tiens au courant

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

Discussions similaires

  1. [Débutant] Affecter une variable d'une classe C# à une variable Javascript
    Par SultanGeek dans le forum C#
    Réponses: 0
    Dernier message: 20/06/2015, 20h42
  2. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23
  3. Réponses: 5
    Dernier message: 28/09/2007, 14h58
  4. Réponses: 6
    Dernier message: 31/05/2007, 18h10
  5. Comment récupérer le contenu d'une URL dans une variable ?
    Par Fildz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/08/2006, 09h26

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