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 :

Lire fichier fermé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut Lire fichier fermé
    Bonjour,
    j'ai trouvé dans vos liens une partie de la réponse que je cherchais:

    Pour lire les données d'une feuille fermée, j'ai trouve ceci:
    ************
    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
    Sub extractionValeurCelluleClasseurFerme()
        Dim Source As ADODB.Connection
        Dim Rst As ADODB.Recordset
        Dim ADOCommand As ADODB.Command
        Dim Fichier As String, Cellule As String, Feuille As String
          'Adresse de la cellule contenant la donnée à récupérer
        Cellule = "B6:N247"
          'Pour une plage de cellules, utilisez:
          'Cellule = "A4:C10"
          
        Feuille = "UN$" ''n'oubliez pas d'ajouter $ au nom de la feuille.
        'Chemin complet du classeur fermé
        Fichier = "D:\Excel avec copie\ben01.xls"
                    
        Set Source = New ADODB.Connection
        Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & Fichier & ";Extended Properties=""Excel 8.0;HDR=No;"";"
                    
        Set ADOCommand = New ADODB.Command
        With ADOCommand
            .ActiveConnection = Source
            .CommandText = "SELECT * FROM [" & Feuille & Cellule & "]"
        End With
                      
        Set Rst = New ADODB.Recordset
        Rst.Open ADOCommand, , adOpenKeyset, adLockOptimistic
                      
        Set Rst = Source.Execute("[" & Feuille & Cellule & "]")
         
        Range("B6").CopyFromRecordset Rst
                
        Rst.Close
        Source.Close
        Set Source = Nothing
        Set Rst = Nothing
        Set ADOCommand = Nothing
    End Sub
    ***************
    Le code marche impec. Or je voudrais (si possible)
    (1) pouvoir sélectionner un plage nommée (par ex. Application.Goto Reference:="Tout_base"
    Selection.Copy)

    (2) Passer le nom du fichier (ben01.xls) dont je suis sûr en variable en récupérant la path du fichier qui lance la macro (ben01_principal) (ils seront surment dans le même répertoire mais je ne sais pas lequel - en principe-)

    (3) je voudrais un coller avec liaison pour pouvoir lancer le moins souvent possible la macro de mise à jour des données.

    Merci à l'avance

  2. #2
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    Bonjour,

    1 - Tu peux utiliser une plage nommé en procédant ainsi:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .CommandText = "SELECT * FROM NomDeLaPlage;"
    2 - voici une solution :

    Fichier = "D:\Excel avec copie\ben01.xls"

    tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = Activeworkbook.path & "\" & TaVarible
    TaVariable= "ben01.xls" par exemple

    3 - J'ai pas compris ce que tu veux dire.

  3. #3
    Futur Membre du Club
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    Merci beaucoup, super efficace. Pour le point 3 dans ma première macro j'avais ActiveSheet.Paste Link:=True
    Comment pouvoir coller "avec liaison" même dans cette nouvelle macro? C'était ça ma troisième question sur la ligne en vert

    Amitiés

  4. #4
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    Citation Envoyé par Thomas8080 Voir le message
    Pour le point 3 dans ma première macro j'avais ActiveSheet.Paste Link:=True
    Comment pouvoir coller "avec liaison" même dans cette nouvelle macro? C'était ça ma troisième question sur la ligne en vert
    Euh, le résultat de ta requête est stocké dans un recordset, tu ne peux pas coller avec liaison.

    deux solutions :

    Soit tu affectes la macro à un boutton que tu vas créer dans la feuille.
    Soit tu mets ta macro dans un évenement : soit à l'ouverture du classeur, soit à l'activation d'une feuille Excel spécifique, soit ...etc

    A toi de voir.

  5. #5
    Futur Membre du Club
    Profil pro
    Enseignant
    Inscrit en
    Juillet 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2009
    Messages : 4
    Par défaut
    D'abord merci pour ta réponse,
    effectivement la macro est dans le fichier ben_principal.xls et elle est affectée à un bouton. La personne qui va l'utiliser n'est pas un grand as en informatique et je voudrais qu'elle utilise le moins possible ce bouton, raison pour laquelle j'aurais souhaité avoir des données liées plutôt que copiées. Les données seraient mises à jour automatiquement.

    Merci quand même.

  6. #6
    Membre éclairé Avatar de casavba
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 464
    Par défaut
    Tu peux sécuriser, tu sais? pour éviter toute fausse manipulation.
    Tu peux aussi faire une traçabilité de toutes les modifications qui ont été fait sur le fichier grâce à un fichier Log.

    Il y a plusieurs façon de procéder.

    Bonne journée

Discussions similaires

  1. Impossible de lire une cellule dans un fichier fermé
    Par Mic13710 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/06/2015, 22h57
  2. Lire fichier fermé excel
    Par Nono Sto dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 09/10/2013, 20h18
  3. Lire un fichier fermé sur une plateforme déportée SharePoint
    Par jfdebutant dans le forum Développement Sharepoint
    Réponses: 0
    Dernier message: 19/11/2009, 08h57
  4. [XL-2007] Lire un fichier fermé déporté
    Par jfdebutant dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/11/2009, 09h04
  5. Ouvrir, lire, écrire, ferme fichier .txt
    Par greg26 dans le forum VB.NET
    Réponses: 13
    Dernier message: 19/09/2007, 17h12

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