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 :

Recherchev sur classeur fermé dont les feuilles et plages sont variables


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Par défaut Recherchev sur classeur fermé dont les feuilles et plages sont variables
    Bonjour tout le monde,

    Je suis en train de construire une macro qui me servirait à réaliser une recherchev sur un classeur fermé, avec en variable le nom du classeur et le nom de la feuille.

    En synthèse:

    Formule finale:
    =LireCellule_ClasseurFerme(A1;A2;A3;G7)

    A1 correspond au chemin:
    C:\Documents and Settings\mimi\dossier

    A2 correspond au nom du classeur:
    ClasseurY.xls

    A3 correspond au nom de la feuille:
    Feuil1

    G7 correspond à la cellule qui doit être lue dans le classeur fermé.

    Et ci-dessous mon code. Mon soucis majeur est que le code fonctionne bien quand le classeur cible est ouvert. Lorsqu'il est fermé, le code me renvoi #valeur!.

    Quelqu'un aurait-il une idée ?
    Merci d'avance pour votre aide,
    Jonathan

    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
    Function LireCellule_ClasseurFerme( _
            Chemin As String, _
            Fichier As String, _
            Feuille As String, _
            Cellule As Variant) As Variant
     
        Application.Volatile
     
        Dim Source As Object, Rst As Object, ADOCommand As Object
        Dim Cible As String
     
        Feuille = Feuille & "$"
        Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
            Cellule.Address(0, 0, xlA1, 0)
     
        Set Source = CreateObject("ADODB.Connection")
        Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Chemin & "\" & Fichier & _
            ";Extended Properties=""Excel 8.0;HDR=No;"";"
     
        Set ADOCommand = CreateObject("ADODB.Command")
        With ADOCommand
            .ActiveConnection = Source
            .CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
        End With
     
        Set Rst = CreateObject("ADODB.Recordset")
        '1 = adOpenKeyset, 3 = adLockOptimistic
        Rst.Open ADOCommand, , 1, 3
        Set Rst = Source.Execute("[" & Feuille & Cible & "]")
     
        LireCellule_ClasseurFerme = Rst(0).Value
     
        Rst.Close
        Source.Close
        Set Source = Nothing
        Set Rst = Nothing
        Set ADOCommand = Nothing
    End Function

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2013
    Messages : 88
    Par défaut
    ouvre et ferme le classeur avec ta macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim str As String
     
    'Open the directory "S:" to be able to find the correct report
    With Application.FileDialog(msoFileDialogFilePicker)
        .InitialFileName = "S:"
        .Show
        'and select the report on which you click
        If .SelectedItems.Count > 0 Then Workbooks.Open (.SelectedItems(1))
    End With
    ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Et tu fermes ton classeur sans sauvegarder
    Workbooks(str).Close SaveChanges:=False
    tiens moi au courant

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 27
    Par défaut
    Merci beaucoup pour ta réponse.

    Je recherche cependant à mettre en variable le chemin d'accès:

    A1 correspond au chemin:
    C:\Documents and Settings\mimi\dossier

    A2 correspond au nom du classeur:
    ClasseurY.xls

    Est-ce que tu vois le problème ?

    Merci d'avance pour votre aide je ne m'en sors pas...

    Personne a une petite idée svp...?

Discussions similaires

  1. [XL-2007] RechercheV sur classeur fermé - Problème de variable
    Par desv001a dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 28/03/2013, 13h16
  2. Besoin d'aide Macro récupéré les mêmes données sur classeur fermé
    Par djinero dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/10/2011, 15h40
  3. [XL-2003] RECHERCHEV sur classeur fermé et variable
    Par Remsdu dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/10/2009, 18h29
  4. recherchev sur classeur fermé
    Par Eufalacok dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/08/2008, 17h09
  5. [DAO] RECHERCHEV sur classeur fermé et variable
    Par cafeine dans le forum Contribuez
    Réponses: 3
    Dernier message: 28/04/2008, 09h58

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