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 :

Données/Validation classeur fermé Distant


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut Données/Validation classeur fermé Distant
    Bonjour,
    Je viens de trouver cette doc :
    Données/Validation
    Sur les listes dynamiques tirant leurs donnée d'un fichier fermé.
    Or je ne comprends pas trés bien comment cela fonctionne.
    Voila ce qui me trouble :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    repertoire = ThisWorkbook.Path & "\"
    cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "\" & "DVSource.xls"ce qui au final done un DBQ = \toto\tata\lerepertoire\\DVSource.xls
    Est-ce normal le \\ ?!

    Autre question, peut-on utiliser cette méthode pour un fichier distant qui n'est pas dans le même répertoire que le fichier dans lequel on applique cette macro ?!

    J'ai bien entendu essayé et ce, sans succés.

    voici mon code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Target.Address = "$B$2" Then
       repertoire = "\Path\..\Test Reporting\"
       Dim rs As ADODB.Recordset
       Set cnn = New ADODB.Connection
       cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "\" & "DVSource.xls"
       Set rs = cnn.Execute("SELECT noms FROM MaBD where noms<>'' ORDER BY noms")
        Sheets("Feuil2").[A2:A1000].ClearContents
       Sheets("Feuil2").[A2].CopyFromRecordset rs
      End If
    End Sub
    Bien entendu il existe Feuil2 dans mon fichier.

    Quelqu'un a une idée ?!

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir


    Voila ce qui me trouble :

    repertoire = ThisWorkbook.Path & "\"
    cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & repertoire & "\" & "DVSource.xls"ce qui au final done un DBQ = \toto\tata\lerepertoire\\DVSource.xlsEst-ce normal le \\ ?!
    Il y a effectivement un antislash de trop



    Autre question, peut-on utiliser cette méthode pour un fichier distant qui n'est pas dans le même répertoire que le fichier dans lequel on applique cette macro ?!
    normalement oui.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    repertoire = "\Path\..\Test Reporting\"
    le chemin indiqué est il correct?
    et il y a toujours un antislash de trop à la fin.


    http://silkyroad.developpez.com/VBA/ClasseursFermes/




    bonne soirée
    michel

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 126
    Billets dans le blog
    131
    Par défaut
    Salut.

    Personnellement, avant de faire tout cela (sauf si le VBA est obligatoire), je m'orienterais vers MSQuery pour récupérer les données du classeur distant, et je baserais ma liste déroulante de validation sur le résultat de la requête...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut
    Malheureusement oui Excel et VBA sont de mise..
    J'ai pris une autre solution, j'ouvre le fichier en lecture seule à l'ouverture du premier fichier. C'est barbare mais c'est le plus rapide pour les délais qui me sont fixés..

    Je me demandais comment est-ce qu'on désactive les message de demande d'ouverture en lecture et autre jouyeusetés du genre ?!

    De même comment désactive-t-on l'affichage d'un classeur ?
    (je veux ouvrir mon classeur source en "caché" ou un fond)

    merci d'avance !

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 126
    Billets dans le blog
    131
    Par défaut
    Pourquoi est-ce obligatoire de le faire par VBA? (exercice d'un cours que tu suis?)

    Si l'obligation est "de résultat" et pas "de moyens", MSQuery permet d'atteindre le résultat sans problème...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut
    Obligation de moyen malheureusement.
    Je fais un outil de reporting et il évolue TRES vite. J'en suis à ma 6éme version en moins de 2 semaines.
    Seulement il doit être utilisé par tout le monde, donc accessible.
    De plus je n'ai pas de budget prog, et je ne suis pas programmeur à la base.

    Donc gogo excel et ces joyeusetés avec tous les problémes que cela entraine.

    Mes questions sont toujours d'actualités donc !

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 126
    Billets dans le blog
    131
    Par défaut
    Ben justement. MSQuery, cela te prend 3 minutes sans programmation, et accessible par "tout le monde"...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut
    Ah je ne connais pas !
    ce ne sont pas les requéte de pseudos BD que fait excel à partir d'un autre fichier ?!

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 126
    Billets dans le blog
    131
    Par défaut
    Pourquoi de pseudo BD?

    MSQuery peut aller chercher des données dans des bases SQL, ACCESS, Paradox, FoxPro, Dbase, même dans des feuilles Excel...

    C'est puissant et paramétrable. Il y a moyen de configurer la mise à jour à l'ouverture du fichier, sur évènement ou autre...

    Cela me semble une très bonne solution pour récupérer des données, et je l'utilise très souvent.

    Pour y accéder, Outils/Données Externes.../Créer une requête
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut
    Et ben.. un nouveau monde s'offre à moi
    je comprends de mieux en mieux !
    où peut-on trouver les syntaxe de BD ? je suis habitué à MySQL mais là.. le différent c'est <> si j'ai bien compris.
    C'est un mélange de BD et de microsoft ?!

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 126
    Billets dans le blog
    131
    Par défaut
    Tu as http://sql.developpez.com qui est très complet sur les syntaxes de différents moteurs sql. La syntaxe de MSQuery se rapproche assez fort de la syntaxe de MSSQL, mais il y a, comme toujours, quelques différences.

    Tu peux par exemple utiliser des fonctions SQL dans les critères, voire même pour créer des "champs calculés" ce qui évite de devoir le faire dans Excel. Tu as bien entendu les possibilités de tri.

    Normalement, par défaut, tu as un assistant de requête (qui ressemble un peu à celui des requêtes Access).

    Le plus simple est que tu essaies et que tu continues dans ce fil de discussion pour tout complément d'infos.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut
    Paaaaarfait !! merci beaucoup !

    Par une contre petite question/remarque :
    les colonnes SQL que Excel détecte frâce aux "noms", je les ai un peu testé.
    Je me suis rendu compte qu'il ne prends pas en compte les plages de noms dynamiques..
    ce probléme vient de moi ou est-ce une limitation ?!

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 126
    Billets dans le blog
    131
    Par défaut
    Pour que MSQuery fonctionne de façon optimale, il faut que tes données soient organisées dans Excel à la mode "base de données", c'est-à-dire:
    Une feuille par table
    On commence en A1
    La première ligne reprend les intitulés de colonne
    Normalement, pas de colonne sans nom de champ (pas de cellule vide en ligne 1 entre la première colonne et le dernier champ de la table

    En respectant cela, tu n'as pas besoin de plages dynamiques avec DECALER. MSQuery prend toute la table et tu trouveras dans MSQuery les noms des onglets comme étant les noms de tes tables...

    Si des données sont ajoutées dans la feuille source, elles seront automatiquement récupérées via le MSQuery lors de la mise à jour.

    Pense qu'un clic droit sur une cellule "récupérée" va permettre de modifier les propriétés de la requête (notamment la mise à jour automatique à l'ouverture) et que l'on peut aussi réaliser la mise à jour par VBA.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 73
    Par défaut
    D'accords, utiliser excel comme un BD !
    je vois.
    Mon probléme ici c'est que le fichier qui me servira de source n'est pas ordonné de cette façon, je doit donc passer par les noms.. ou autre si cela existe ?!
    Fichiers attachés Fichiers attachés

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 126
    Billets dans le blog
    131
    Par défaut
    Je pense que tu n'as pas d'autre choix que d'utiliser une plage non dynamique et de la redimensionner par VBA.

    [EDIT] Une autre solution serait de ramener les données de la plage nommée dynamiquement dans une feuille qui servira de table, et qui sera "normalisée"...[/EDIT]
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. 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
  2. [XL-2002] ListView et données dans Classeur fermé
    Par vaucluseimmo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/01/2010, 07h59
  3. récuperer des données de classeurs fermés dans un classeur
    Par peygase83 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/02/2009, 00h03
  4. Copier données vers classeur fermé
    Par andy38 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/06/2008, 23h35
  5. Copier des données de classeurs Excel fermés vers un classeur ouvert
    Par gwen-al dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 11/03/2008, 17h00

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