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 :

Recuperation données classeur fermés sur réseau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2019
    Messages : 60
    Par défaut Recuperation données classeur fermés sur réseau
    Bonjour à tous,

    Je viens de créer un petit programme pour récupérer les données de différents classeurs stockés sur le réseau de ma boite.

    Voici mon programme :


    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
    
    PublicSub Traitement_Classeur()
    Le_Classeur = Dir(Mon_Repertoire & "\" & "*.xlsm") 'Identification du classeur
    i = F_Conso_Besoins.Cells(Rows.Count, Col_Ref_Bes).End(xlUp).Row +1
    
    DoWhile Len(Le_Classeur) > 0'Tant qu'on a un classeur
    Set LA_SOURCE = CreateObject("ADODB.Connection")
    
    
    
    '--- Connexion ---
    With LA_SOURCE.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
    & Mon_Repertoire & "\" & Le_Classeur & ";Extended Properties=""Excel 12.0;HDR=YES;"""
    .Open
    EndWith
    
    
    '----- Requete -----Texte_SQL = "SELECT * FROM [" & Nom_F_Besoins & "$" & Ma_Plage_N & "]"
    Set Requete = LA_SOURCE.Execute(Texte_SQL)
    
    
    
    '--- restitution sur feuille classeur cible
    F_Conso_Besoins.Range("A" & i).CopyFromRecordset Requete
    
    
    i = F_Conso_Besoins.Cells(Rows.Count, Col_Ref_Bes).End(xlUp).Row + 1
    Le_Classeur = Dir() 'prochain classeur
    Loop
    EndSub
    Le problème avec ce programme c'est que lorsque je lance le programme et que l'un des classeurs sources est ouvert par un autre utilisateur, il s'ouvre en lecture seule chez moi ...
    Alors que je voulais passer par une récupération des données en n'ouvrant pas les classeurs pour gagner du temps ... car in fine je vais avoir 200 classeurs à parcourir ...

    Y a t il un moyen de récupérer les données sans ouvrir le classeur source même si ce dernier est ouvert par un autre utilisateur?

    Merci à tous.

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 592
    Par défaut
    Bonsoir,
    HDR=Yes;IMEX=1;ReadOnly=True

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2019
    Messages : 60
    Par défaut
    Hello Thumb down,

    Je viens de tester mais malheureusement le classeur s'ouvre quand même

    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
     
     
    Public Sub Traitement_Classeur()
    Le_Classeur = Dir(Mon_Repertoire & "\" & "*.xlsm") 'Identification du classeur
    i = F_Conso_Besoins.Cells(Rows.Count, Col_Ref_Bes).End(xlUp).Row + 1
    Do While Len(Le_Classeur) > 0 'Tant qu'on a un classeur
    Set LA_SOURCE = CreateObject("ADODB.Connection")
     
    '--- Connexion ---
    With LA_SOURCE
    .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
    & Mon_Repertoire & "\" & Le_Classeur & ";Extended Properties=""Excel 12.0;HDR=YES;IMEX=1;ReadOnly=True;"""
    .Open
    End With
     
    '----- Requete -----
    Texte_SQL = "SELECT * FROM [" & Nom_F_Besoins & "$" & Ma_Plage_N & "]"
    Set Requete = LA_SOURCE.Execute(Texte_SQL)
     
    '--- restitution sur feuille classeur cible
    F_Conso_Besoins.Range("A" & i).CopyFromRecordset Requete
     
    i = F_Conso_Besoins.Cells(Rows.Count, Col_Ref_Bes).End(xlUp).Row + 1
    Le_Classeur = Dir() 'prochain classeur
    Loop

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Rag02700 Voir le message
    Y a t il un moyen de récupérer les données sans ouvrir le classeur?
    Non.

    A part en attaquant directement les secteurs disque (ce qui nécessites d'autres outils que VBA), il n'est pas possible de lire les données d'un fichier, quel qu'il soit, sans l'ouvrir d'une façon ou d'une autre.

    La méthode utilisant ADODB (faussement intitulé "lire le contenu d'un classeur sans l'ouvrir") ouvre bel et bien le fichier, même si c'est avec une autre méthode que celle d'Excel.
    Ce n'est pas pour rien qu'elle commence par un "Open".

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2019
    Messages : 60
    Par défaut
    Ok Menhir ... ,

    Aurais-tu une méthode en vba pour récupérer le + rapidement le contenu de 200 fichiers excel (structure des fichiers identique) ?

    Merci.

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Rag02700 Voir le message
    Aurais-tu une méthode en vba pour récupérer le + rapidement le contenu de 200 fichiers excel (structure des fichiers identique) ?
    En faire une vraie base de donnée et utiliser une SGDB.

    Dans la grande majorité des cas, les utilisations partagées et/ou multifichiers ne sont ni plus ni moins que des bases de données.
    Excel est un couteau suisse qui permet de faire beaucoup de choses avec facilité, ce qui incite certains à l'utiliser pour n'importe quoi (traitement de texte, base de données, messagerie, etc.). Mais s'il n'est pas utilisé pour sa vraie finalité (le calcul), il montre rapidement ses limites. Dans ce cas, pour faire un travail propre et fonctionnel, il faut utiliser les outils adéquats.

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 592
    Par défaut
    Bonjour,
    passe ton fichier Excel en mode partagé!

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2019
    Messages : 60
    Par défaut
    Je trouve pas terrible le partage de classeur excel ...

  9. #9
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 592
    Par défaut
    passé sa connexion en ReadOnly fonctionne sur certaine version d'Excel et pas sur d'autres

    Citation Envoyé par Rag02700 Voir le message
    Je trouve pas terrible le partage de classeur excel ...
    alors il n'y à pas de solution à ton problème!

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2019
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2019
    Messages : 60
    Par défaut
    En faire une vraie base de donnée et utiliser une SGDB.
    Je sais mais bon ce n'est pas le point de vue de ma boite ....

    Merci à vous.

Discussions similaires

  1. Macro pour copier feuille voulu d'un classeur fermé sur classeur ouvert
    Par Nicojez dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/06/2012, 16h46
  2. [XL-2003] Copie de donnée classeur fermé
    Par celebrom dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2012, 13h51
  3. Extraction de données classeur fermé (multi feuilles)
    Par blanka347 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/10/2011, 20h00
  4. [XL-2010] Extraction de donnée classeur fermé.
    Par blanka347 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/09/2011, 21h44
  5. Requete Classeur Fermé sur Range?
    Par jojo86 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/10/2010, 16h44

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