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

Conception Discussion :

existe-t-il une "base de donnée interne" à un fichier excel ? [XL-2013]


Sujet :

Conception

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 35
    Points : 22
    Points
    22
    Par défaut existe-t-il une "base de donnée interne" à un fichier excel ?
    Bonjour,

    Je cherche à développer un petit programme qui servira à automatiser quelque chose de semblable en VBA au code "range(destination).value = range(source).value". Je pense que cela sera un élément de productivité important dans mon entreprise, mais mes collègues sont totalement réticents au VBA et au code en général, et je voudrais donc développer pour eux un utilitaire facile d'utilisation.

    J'explore différentes pistes et une d'entre elle serait d'avoir quelque chose de similaire au "gestionnaire de noms" ou au gestionnaire de "Connexions", c'est à dire un formulaire qui recenserait les cellules sources et les cellules de destination dans mon cas, et qui permettrait d'en rajouter, modifier, supprimer.

    Je me dis que les informations de liaisons contenu dans les gestionnaire de noms ou de connexions doivent bien être stocker quelque part dans le fichier excel pour ainsi en garder une trace, et que cela soit toujours disponible quand le fichier est ouvert. J'imagine une sorte de base de donnée interne au fichier excel, et il me suffirait de reproduire quelque chose de similaire dans mon utilitaire.

    J'ai bien essayé de chercher sur MSDN, mais j'avoue avoir été un peu perdu.

    Pourriez-vous s'il vous plait m'orienter dans mes recherches ?

    Merci par avance.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    À partir d'Office 2007, tous les fichiers Office (ou presque) sont basés sur la norme Open XML. En gros, ce sont essentiellement des fichiers xml et des fichiers binaires pour les éléments graphiques et les macros, incorporés dans un conteneur au format zip. Ceci dit, la manipulation "à la source" des composantes xml en VBA est peut-être possible (je n'ai jamais essayé parce que fais ce genre de manipulations en VB.net) mais pas vraiment évidente.

    De plus, certaines informations, sont en fait dans le registre et récupérées au besoin par Excel.

    VBA, demeure la façon la plus appropriée de modifier un fichier Excel en faisant faire la job par Excel lui-même.

    Si tu veux en savoir plus sur OpenXML, tu peux toujours lire/télécharger ces textes:

    http://heureuxoli.developpez.com/office/openxml/

    http://heureuxoli.developpez.com/office/xml/
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonsoir,

    J'ai du mal à comprendre ce que tu veux faire, c'est assez abstrait.
    Si tu veux simplement pouvoir copier certaines données d'un fichier vers un autre sans te soucier de leur position dans ces fichiers, utilise simplement des plages nommées (auxquelles tu auras effectivement accès via le gestionnaire de nom).

    En VBA, il te suffira de boucler sur la collection Names du classeur d'entrée en récupérant ce sur quoi le nom pointe (avec la propriété RefersTo du nom ou bien avec MaFeuille.Range(MonNom).Value) et de le recopier dans la plage du fichier de sortie ayant le même nom.

    Ta macro gérera alors automatiquement l'ajout ultérieur de nouveaux noms sans rien à modifier puisqu'elle bouclera sur la collection complète.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Merci pour vos réponses, ça me donne des pistes de réflexions.

    Ce que l'utilitaire devra gérer c'est la copie de la valeur d'une cellule d'un onglet dans une cellule d'un autre onglet. C'est très facile à faire par code VBA, mais cet utilitaire serait destiné à des gens qui n'y connaissent rien en VBA ou en programmation en général (et y sont complètement réticents).

    J'ai donc pensé à un code qui écrit du code et le supprime au besoin, par exemple. Mais je suis confronté au stockage des ranges source et destination, si je veux pouvoir ensuite les modifier ou les supprimer.

    La situation serait pour un modèle financier : le modèle a un seul moteur de calcul, mais il peut calculer plusieurs scenarios sur la base d'hypothèses différentes. Lorsque l'utilisateur choisira un scenario, le document excel se recalculera, et mon utilitaire aura permit (une fois les configurations faires) la mise à jour automatique de tableau d'output.

    C'est vrai que l'utilisation de plage nommée serait une solution intelligente, mais je voudrais éviter de polluer le gestionnaire de nom avec ces liens là. D'où mon idée de passer par un autre utilitaire qui stockerait ces données, d'une manière similaire au gestionnaire de nom, car celui-ci doit bien stocker quelque part dans le fichier excel les noms enregistrés.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Quand je regarde l'arborescence d'un fichier excel, je remarque un fichier nommé "workbook.xml" (suffisament explicite), qui liste bien les noms apparaissant dans le gestionnaire de nom. Ils apparaissent entre les balises <definedName></definedName>

    Il suffirait donc que je trouve un moyen de créer ma propre balise, de pouvoir l'inscrire dans le "workbook.xml", puis enfin de pouvoir les lire à partir de l'interface excel.

  6. #6
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    La tu rêve !
    Si tu modifie la structure du fichier XML le classeur sera corrompu et tu ne pourra plus l'ouvrir !

    Tu semble bien vouloir te compliquer la vie pour inventé la roue carré !

    Si tu chercher à stocker des informations dans un classeur sans que celles-ci puissent être visible par les utilisateurs alors tu stock ça dans une feuille qui tu masque avec VeryHidden. Les utilisateurs ne pourront jamais voir cette feuille.
    Donc tu peux mettre toutes les informations dont tu as besoin dedans.
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Bonjour,

    une vraie base de données ne rime pas avec Excel ! Voir plutôt du côté d'Access …



    ______________________________________________________________________________________________________
    Je suis Paris, Charlie, Bruxelles, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2009
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 35
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Merci pour vos retour. Après ces échanges, réflexions, une bonne nuit de sommeil et quelques tests, j'ai décidé de ne pas "réinventer la roue carrée" et de passer finalement par le gestionnaire de noms pour mon code. La raison principale est que passer par le gestionnaire de noms permet de gérer facilement - puisqu'il le fait tout seul - la mise à jour des cellules références quand il y a ajout ou suppression de lignes ou de colonnes, ce qui me paraissait être un peu ennuyeux et compliqué à programmer.

    J'essaierais de poster mon code quand je serais arrivé à quelque chose de satisfaisant. La critique est toujours bienvenue.

    Bonne journée à vous,

  9. #9
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    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 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour
    Citation Envoyé par Rayanea Voir le message
    ...la mise à jour des cellules références quand il y a ajout ou suppression de lignes ou de colonnes, ce qui me paraissait être un peu ennuyeux et compliqué à programmer...
    On n'a pas de vue sur ce que tu veux faire mais note que depuis le version 2007 (2003 même) il existe la notion de tableau, mauvaise traduction du mot Table, où, comme pour une table de base de données, Excel sait à tout moment le nombre de colonnes et de lignes et différencie bien les en-têtes des données avec une gestion VBA adapté à ce type d'objet (listobject).

    Peut-être cela pourra-t-il t'être utile...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/12/2012, 09h47
  2. Réponses: 2
    Dernier message: 16/11/2005, 13h41
  3. [MySQL] Backup d'une grosse base de données (60MB)
    Par MiJack dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 01/11/2005, 18h22
  4. Calcul de la taille d'une future base de données
    Par Kuma25 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 17/08/2005, 09h54
  5. copier une table vers une autre base de données
    Par Herveg dans le forum Oracle
    Réponses: 3
    Dernier message: 11/01/2005, 14h20

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