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 :

Variable Non reconnue par ma Sub


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut Variable Non reconnue par ma Sub
    Bonjour

    J'ai un Userform dont le code est le suivant:

    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
    Private Sub CommandButton1_Click()
     
    Dim FichierChoisi As String
    FichierChoisi = Application.GetOpenFilename
     
    Dim j As Integer
    Dim con As ADODB.Connection
     
        With con
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & FichierChoisi & _
                 ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open
        End With
     
    Call ImportDonnées
     
    End Sub
    et j'ai ma sub nommée ImportDonnées contenue dans un module dont le code est le suivant:

    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
    Sub ImportDonnées()
     
    Dim wbContrepartie As Workbook
    Dim n3 As Integer
     
    Set wbContrepartie = Workbooks.Open(FichierChoisi)
    Sheets(Feuil1).Select
    n3 = Workbooks("TP8").Sheets.Count
    Sheets(Feuil1).Copy After:=Workbooks("TP8.xlsm").Sheets(n3)
     
    wbContrepartie.Close
    Set wbContrepartie = Nothing
     
    Workbooks("TP8").Sheets(Feuil1).Select
     
    End Sub
    le problème c'est que ma macro s'arrête à ce niveau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wbContrepartie = Workbooks.Open(FichierChoisi)
    en me disant que ma variable FichierChoisi n'est pas définie.

    Je ne sais pas comment la déclarer dans ma sub. Merci de m'apporter votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Bonjour,

    1- il faut passer le nom du fichier en parametre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Call ImportDonnées(FichierChoisi)
    2- la syntaxe pour declarer le classeur FichierChoisi est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set wbContrepartie = Workbooks(FichierChoisi)
    et non pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set wbContrepartie = Workbooks.Open(FichierChoisi)
    Par contre il faut que le fichier "FichierChoisi" soit ouvert.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut
    Et c'est justement parce que je veux l'ouvrir que je mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wbContrepartie = Workbooks.Open(FichierChoisi)
    je vais éssayer de le remplacer par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set wbContrepartie = Workbooks(FichierChoisi)
    wbContrepartie.Open
    et voir ce que ça donne. Mais il faut dabord que cette étape fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Call ImportDonnées(FichierChoisi)
    En fait, il me remet le même code d'erreur à ce niveau quand je passe FichierChoisi en paramètre.

  4. #4
    Invité
    Invité(e)
    Par défaut Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call ImportDonnées(FichierChoisi)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub ImportDonnées(FichierChoisi As String)
    Set wbContrepartie = Workbooks.Open(FichierChoisi)
     
    wbContrepartie.Sheets("Feuil1").Copy After:=Workbooks("TP8.xlsm").Sheets(Workbooks("TP8.xlsm").Sheets.Count)
     
    wbContrepartie.Close False
    Set wbContrepartie = Nothing
     
    End Sub

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Si je ne me trompe pas, pour ouvrir un fichier on peut utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    workbook.open(cheminFichier & nomFichier)
    et une fois le fichier ouvert, tu peux le declarer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set wbContrepartie = Workbooks(FichierChoisi)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call ImportDonnées(cheminFichier & nomFichier)

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut Même message d'erreur
    exactement.
    La variable FichierChoisi contient à la fois le chemin et le nom du fichier
    entre autre

    FichierChoisi=CheminFichier & NomFichier.

    En fait j'ai toujours le même message d'erreur. En fait mon appelle de Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call ImportDonnées(FichierChoisi)
    est dans une Private Sub ListBox1_Click() soit j'ai ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ListBox1_Click()
    Dim Feuil1 As String, i As Integer
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            Feuil1 = ListBox1.List(i)
        End If
    Next i
     
    Call ImportDonnées(FichierChoisi, Feuil1)
     
    End Sub
    le problème c'est que si j'ajoute ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim FichierChoisi As String
    dans ma private sub, il va m'initiliser la variable FichierChoisi

    et lorsque je vais vouloir ouvrir mon fichier à partir d'ici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wbContrepartie = Workbooks.Open(FichierChoisi)
    j'aurai un message d'erreur parce que FichierChoisi sera égal à ""

    désolé de n'avoir pas mis le programme entier, je n'ai pas pensé que le problème aurai pu se matérialiser sur ma private sub.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Click()
    If ComboBox1.ListIndex <> -1 Then
        Feuil1 = ListBox1.List(ComboBox1.ListIndex)
        Call ImportDonnées(FichierChoisi, Feuil1)
    End If
    End Sub
    Sub ImportDonnées(FichierChoisi As String, Feuil1 As String)
    'Code
    '....
    End Sub

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Par défaut
    Donc si FichierChoisi = chemin + le nom du fichier il faut que tu mette dans une variable ton nom de fichier seul ( sans le chemin)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Set wbContrepartie = Workbooks(NomFichierChoisi)

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut @ rdurupt
    D'après ton code, devrais-je changer ma ListBox par une ComboBox?

    En fait je met le code dans la private sub ListBox_Click parce que ma lisbox contient des éléments, et ces éléments sont des noms de feuilles apartenant à un classeur.

    L'utilisateur en cliquant sur un des noms de feuilles dans la ListBox permettra à ma sub ImportDonnées d'ouvrir mon classeur, de copier cette feuille et de l'insérer dans le classeur "TP8.xlsm"

    Je ne sais pas si tu trouves mon idée bonne ou trop longue, mais c'est en fait ça que je veux ffaire.

  11. #11
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut Solution
    J'aurai du juste faire ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
    Dim FichierChoisi As String  'définir ma variable en dehors de la private sub
     
    Private Sub CommandButton1_Click()
    FichierChoisi = Application.GetOpenFilename
    ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call ImportDonnées(FichierChoisi, Feuil1)
    et enfin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub ImportDonnées(FichierChoisi As String, Feuil1 As String)
    Merci pour vos aides.

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

Discussions similaires

  1. Antivirus non reconnu par centre de sécurité
    Par shukin dans le forum Windows XP
    Réponses: 8
    Dernier message: 04/04/2006, 16h22
  2. variable non reconnue
    Par shnouf dans le forum Langage
    Réponses: 7
    Dernier message: 13/02/2006, 17h44
  3. variables non reconnues
    Par syscom14 dans le forum Langage
    Réponses: 6
    Dernier message: 11/10/2005, 19h37
  4. [API]JTAPI non reconnu par eclipse
    Par julio84 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 15/04/2005, 15h03
  5. [Lomboz] [JBoss] JBoss 3.2.6 non reconnu par Lomboz ?
    Par romain3395 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 17/12/2004, 17h35

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