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 :

faire des index / equiv dans un fichier fermé [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut faire des index / equiv dans un fichier fermé
    Bonjour,
    j'ai besoin de récupérer des adresses dans un classeur fermé sur le serveur (il est utilisé par les utilisateurs en lecture seule).
    il s'agit d'un listing d'adresse, il faut donc que je récupère, dans 5 variables, le contenu de 5 cellules contigues.
    j'ai bien compris qu'il fallait passer par ADO, mais je n'ai pas trouvé d'exemples qui fonctionnent (encore) et qui soient expliqués pour que je l'adapte à mon besoin.
    En plus pour corser ma demande, la recherche doit se faire dans une feuille VeryHidden et protégée (mais je connais le mot de passe ).

    Est-ce que quelqu'un peut m'aider ?
    Merci d'avance

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Salut,
    A mon humble avis, c'est pas possible!
    Avec ADODB, on peux récupérer des données sur une feuille
    d'un classeur fermé, et c'est tout!
    On ne peut pas manipuler les objets du classeur.
    Mais pourquoi ne pas faire une copie du fichier et ensuite
    le manipuler à ta guise avec les commandes VBA bien connues?
    Cordialement,

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 584
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 584
    Par défaut
    Bonjour

    Ces fonctions marchent sur classeur fermé

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Si tu connais la feuille et le cellules [A1];[B1] etc.. C'est possible avec Adodb.

    On ne peut pas faire de crureneregion mais on peut même récupérer qu'une cellule si on veut!

    Sql="Select * From [Feuil1$A1:A1]"
    Dernière modification par Invité ; 21/04/2016 à 23h54.

  5. #5
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut
    Bonjour à tous et merci de vos réponses qui m'ont fait réfléchir...

    J'ai trouvé un code qui pourrait me satisfaire pour un autre projet en parallèle : on rappatrie les données des cellules constantes pour une liste de fichier du même répertoire.
    J'ai essayé de l'adpaté, cela fonctionne, sauf que le programme, à chaque fichier, m'ouvre une fenêtre "Mettre à jour les valeurs : Fichier1.xls". Suite de quoi je dois ouvrir le répertoire puis le bon fichier...
    Je ne sais pas comment rectifier le chemin.
    Voici le code
    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
    Option Explicit
    Const Chemin As String = "C:\Users\RécupFich Fermé" 'a adapter
    Const LigDep As Byte = 2 'ligne de départ à adapter
     
    Sub ExtraireAvecXL4()
     Dim Nbre As Long, Lig As Long, Cptr As Long
     Dim Fichier As String
    'On a sur la feuille active ("A2:A1000") la liste des fichiers pour lesquels,
    'on veut récupérer les contenus des cellules B2 et D2'au regard de chacun des fichiers et sans les ouvrir
    Nbre = Application.CountA(Range("A2:A1000"))
     
    Lig = LigDep
     Application.ScreenUpdating = False
     For Cptr = 1 To Nbre
         Fichier = Cells(Lig, 1) & ".xls"  'nom des fichiers à rappatrier en colon1
         'appel macroXL4 dite de "Walkenbach"=> récup B2 D2
         Cells(Lig, 2) = ExecuteExcel4Macro("'" & Chemin & "\[" & Fichier & "]BdD'!R2C2") 'B2
         Cells(Lig, 3) = ExecuteExcel4Macro("'" & Chemin & "\[" & Fichier & "]BdD'!R2C3") 'D2
         Lig = Lig + 1
     Next
     End Sub
    En ce qui concerne le problème qui m'a fait ouvrir ce poste, je voudrais plus simplement copier la feuille "BdD" du Fichier "Adresses.xlsm", dans le classeur actif, sanchant que BdD est VeryHidden.

    Là encore j'ai trouvé un code que j'essaye d'adapter (pour l'instant je travaille sur un fichier de test qui n'est ni protégé, ni masqué :
    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
    Option Explicit
    Option Base 1
     
    Sub ChercheFichiersFermesV03()
    Dim Source As ADODB.Connection
    Dim Rst As ADODB.Recordset
    Dim Fichier As String, Direction As String, texte_SQL As String
    Dim X As Integer, NbFichiers As Integer, Y As Integer, N As Integer
    Dim Tableau() As String
     
    Application.ScreenUpdating = False
     
    Direction = Dir(ThisWorkbook.Path & "\*.xls")
            Fichier = ThisWorkbook.Path & "\" & "Etablissement01.xls"
            Debug.Print Fichier
     
            Set Source = New ADODB.Connection
            Source.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _
                            "data source=" & Fichier & ";" & _
                            "extended properties=""Excel 8.0;"""
     
            texte_SQL = "SELECT * FROM [Explanations$]"
     
            Set Rst = New ADODB.Recordset
            Set Rst = Source.Execute(texte_SQL)    'BUG ICI
     
            ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 'ajout feuille dans classeur
            ActiveSheet.Name = "BddRecup" & X 'renomme la feuille créée
            ActiveSheet.Range("A1").CopyFromRecordset Rst 'import des données
     
     
            Rst.Close
            Source.Close
    Application.ScreenUpdating = True
    End Sub
    Mais j'ai un bug ici : Set Rst = Source.Execute(texte_SQL) avec le message "Le moteur de BdD Microsoft Jet n'a pas pu trouver l'objet 'Explanations$'...

    Merci de bien vouloir m'aider encore.

  6. #6
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut
    J'ai encore essayé, avec le Tuto
    http://silkyroad.developpez.com/VBA/...sFermes/#LIV-A
    Mais tous les codes que j'essaie bug sur .Open avec le message "Mise à jour impossible. la base de données est en lecture seule"
    Or ce fichier n'est pas en lecture seule.
    J'ai activé les références Microsoft ActiveX Data Objects (Multi-Dimensional)2.8 Library et Microsoft ActiveX Data Objects 2.8 Library
    Merci

  7. #7
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 584
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 584
    Par défaut
    Bonjour

    Juste pour info, pourquoi as-tu renoncé à INDEX EQUIV qui fonctionnement sur fichier fermé ?

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

Discussions similaires

  1. Exporer des valeurs dans une fichier fermé.
    Par guigui1976 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 12/02/2011, 09h31
  2. [VBA] Copier une plage de cellules dans un fichier fermé
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/01/2006, 17h52
  3. Transposer des données sql dans un fichier texte
    Par Anakior dans le forum Outils
    Réponses: 3
    Dernier message: 11/12/2005, 11h01
  4. récupérer des données saisies dans un fichier
    Par natie_49 dans le forum C++
    Réponses: 6
    Dernier message: 24/11/2005, 12h29
  5. [JList] Lecture des données sauvegardées dans un fichier
    Par Myogtha dans le forum Composants
    Réponses: 7
    Dernier message: 10/06/2004, 22h05

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