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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 137
    Points : 68
    Points
    68

    Par défaut Utiliser Excel comme une base de données, possible ou non ? (clés primaires, etc)

    Bonsoir,

    A mon boulot, j'ai Excel2010 et donc je me limite à celui-ci également chez moi, pour pouvoir exporter mon apprentissage perso d'Excel vers mon boulot.

    Apparemment, c'est un peu plus développé sur Excel2013 ou 2016 mais pas sur 2010 en matière de gestion des données.

    Excel 2010 permet de créer des tableaux mais pas en mode partagé (dommage quand on est plusieurs collègues à utiliser le même tableau).

    Je souhaite utiliser Excel comme une base de données (Access n'est pas installé chez tout le monde à mon boulot). Eventuellement, une feuille par table. Imaginons que j'ai une tableau des régions et une table des départements. Cette dernière à une colonne "Régions". J'ai trouvé le moyen de créer une liste déroulante qui reprend les régions de la première table, via la validation des données. Mais il suffit que je change le nom d'une région dans la première table pour que çà ne soit plus bon dans la table Départements.

    La solution serait, comme sous Access, d'utiliser des clés primaires qui serviraient de liens entre les tables. Comme cela, si on change le nom d'une région, son nom sera affiché avec la nouvelle orthographe dans les départements, de plus le lien ne sera pas perdu. Cependant, la validation des données ne permet pas de mettre plusieurs colonne dans les listes déroulantes.

    Donc auriez vous une idée de comment lier des listes déroulantes de la table Départements à la table Région via une clé primaire mais en affichant le nom de la région svp ?

    J'ai cherché sur le net mais rien trouvé dans ce sens.

    Bonne soirée.

  2. #2
    Expert éminent

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

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

    Informations forums :
    Inscription : janvier 2012
    Messages : 4 792
    Points : 9 936
    Points
    9 936
    Billets dans le blog
    31

    Par défaut

    Bonjour,

    Pour cela, ça vaut la peine de crier (fort). (Désolé pour les oreilles sensibles)

    NON

    Excel a toujours besoin de tous ses classeurs en mémoire vive pour fonctionner. Dès que Windows n'est pas foutu de donner constamment à Excel toute la mémoire vive nécessaire, les risques de plantage, de corruption de fichiers et de pertes de données sont énormes.

    La sécurité dans Excel n'est efficace qu'avec des utilisateurs honnêtes et obéissants.

    La plupart des capacités d'Access, ou de tout autre SGBD, de traiter les problèmes de collisions ou d'intégrité référentielles et tout le reste, sont inexistantes dans Excel.

    Le partage de fichiers d'Excel est source intarissable de problèmes et de limitations.

    Excel ne sait absolument pas ce que peut-être une clef primaire, ou une jonction entre deux tables et tout le reste. Tout cela doit être programmé en VBA.

    Excel n'a pas de concepteur de requêtes comme Access. Toutes les requêtes doivent être créées en VBA.

    VBA, ne supporte pas SQL nativement. Je n'ai jamais essayé de faire du SQL avec Excel, mais cela doit être l'enfer.

    Acheter Access reviendra probablement moins cher que de payer pour récupérer des fichiers perdus ou pour créer un paquet de macros.

    Et puis, SQL Server Express est gratuit.

    Et puis, tu peux télécharger gratuitement Visual Studio Community, pour toi personnellement. Il vient avec une version gratuite de SQL Server. Pour les entreprises, il faut payer pour une version commerciale. Cela sera quand même encore plus économique de le faire en VB que sur Excel, ne serait-ce que pour la sécurité. Visual Studio peut très bien utiliser des bases Access ou piloter Access à distance.

    Mais, si ton patron est trop nul pour comprendre tout cela, au moins je ne pourrai pas dire que je ne l'avais pas dit
    À 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 du Club
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 137
    Points : 68
    Points
    68

    Par défaut

    Au moins c'est clair
    Merci Clément

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    13 270
    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 : 13 270
    Points : 27 188
    Points
    27 188

    Par défaut

    Si Excel pouvait faire ce que font les SGBD, alors quel serait l'intérêt de conserver les SGBD ?

    Un couteau est un très bon outil si on l'utilise pour les usages pour lesquels il est prévu.
    En revanche, si on l'utilise pour visser des cruciformes, ça peut parfois marcher mais ce n'est pas du bon boulot.

    Citation Envoyé par Jerome_Hej Voir le message
    Excel 2010 permet de créer des tableaux mais pas en mode partagé (dommage quand on est plusieurs collègues à utiliser le même tableau).
    Très clairement, dès qu'on parle de multi-fichier ou de multi-utilisateur, il faut oublier Excel.
    De par sa nature, ce n'est pas fait pour.

    Je souhaite utiliser Excel comme une base de données (Access n'est pas installé chez tout le monde à mon boulot).
    Tu peux peut-être envisager d'utiliser Open Base (de la suite Open Office).
    Il a l'avantage d'être gratuit donc tu peux l'installer sur autant de poste que tu veux sans soucis budgétaires.

    Eventuellement, une feuille par table. Imaginons que j'ai une tableau des régions et une table des départements. Cette dernière à une colonne "Régions". J'ai trouvé le moyen de créer une liste déroulante qui reprend les régions de la première table, via la validation des données. Mais il suffit que je change le nom d'une région dans la première table pour que çà ne soit plus bon dans la table Départements.

    La solution serait, comme sous Access, d'utiliser des clés primaires qui serviraient de liens entre les tables. Comme cela, si on change le nom d'une région, son nom sera affiché avec la nouvelle orthographe dans les départements, de plus le lien ne sera pas perdu. Cependant, la validation des données ne permet pas de mettre plusieurs colonne dans les listes déroulantes.

    Donc auriez vous une idée de comment lier des listes déroulantes de la table Départements à la table Région via une clé primaire mais en affichant le nom de la région svp ?
    Je n'ai pas bien compris si tu veux afficher une région après avoir choisi un département ou l'inverse.

    Suivant le cas, tu peux explorer les pistes suivantes :
    - Placer un filtre sur tes données.
    - La fonction RECHERCHEV() (ou EQUIV() + INDEX())
    - Mettre les régions sur une ligne avec, en dessous de chaque région, la liste de ses département et utiliser un EQUIV() dans un DECALER() dans la source d'une validation de données par liste, pour pouvoir obtenir la liste des département en fonction du choix d'une région.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 137
    Points : 68
    Points
    68

    Par défaut

    Merci pour vos avis.

    J'utilise Access et j'y programme en VBA. C'est clair que çà serait mieux sous Access. Mais là, pour des petits tableaux (tout est relatif, pour moi ils sont petits), ma hiérarchie ne voudra pas installer Access sur tous les postes alors qu'Excel est déjà partout.

    Le but n'est pas de faire une "vraie" bdd mais juste lier quelques tableaux Excel entre eux pour faciliter la saisie et la sécuriser (dans la limite de ce que permet Excel car je sais qu'on ne peut pas sécuriser à 90% sans VBA).

    J'ai vu l'astuce avec DECALER mais cela oblige à mettre les départements (çà ne reste qu'un exemple) à la fois dans un tableau à la verticale et à la fois dans un autre tableau à l'horizontale.

    J'ai passé des heures à chercher hier une astuce mais je n'ai que peu avancé. Mon premier objectif est d'avoir
    - un tableau "TblImmeubles" avec par exemple les champs "Liste" contenant le nom des apparaitras dans les listes déroulantes des autres tableaux, "rue", "code postale", "Commune".
    - un tableau "TblLogements" avec les champs "Liste", "Immeuble" (avec liste déroulante des immeubles de la TblImmeubles), "Type", "Etage", "Superficie".
    - un tableau "TblLocataires" avec les champs "Liste", "Immeuble", "Logements" (avec liste déroulante des immeubles de la TblLogements), "Nom", "Prénom", "Durée bail".

    Comme je disais j'ai vu l'astuce du DECALER qui cherche à l'horizontal. Mais j'aimerais par exemple, que la liste déroulante "Logements" de la TblLocataires n'affiche que les logements de l'immeuble sélectionné dans la liste déroulante "Immeuble" de la même table MAIS sans devoir créer d'autres tableaux comme l'exige la fonction DECALER.

    Impossible de trouver çà sur internet.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    décembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : décembre 2012
    Messages : 1
    Points : 0
    Points
    0

    Par défaut

    La solution c'est de passer à 2013 voir 2016 mais sur 2010 tu peux utiliser l'addin PowerPivot, tu peux lier des tables, faire des requêtes etc...

  7. #7
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : février 2010
    Messages : 6 085
    Points : 11 304
    Points
    11 304

    Par défaut

    Bonjour
    Citation Envoyé par clabbehp41 Voir le message
    La solution c'est de passer à 2013 voir 2016 mais sur 2010 tu peux utiliser l'addin PowerPivot, tu peux lier des tables, faire des requêtes etc...
    Powerpivot ne sert qu'à générer des TCD.

    Basé sur la logique cube et non sur les BD relationnelles, les relations entre tables sont limitées.

    Les requêtes ne sont efficaces que sur des sources ayant des clés primaires et leur objectif est d'alimenter le modèle de données pour réaliser des TCD.

    Cela ne saurait remplacer une BD relationnelle et ne répond pas à la question initiale...
    Chris

    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é...

  8. #8
    Expert éminent

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

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

    Informations forums :
    Inscription : janvier 2012
    Messages : 4 792
    Points : 9 936
    Points
    9 936
    Billets dans le blog
    31

    Par défaut

    Bonjour

    Citation Envoyé par clabbehp41 Voir le message
    La solution c'est de passer à 2013 voir 2016 mais sur 2010 tu peux utiliser l'addin PowerPivot, tu peux lier des tables, faire des requêtes etc...
    Cela ne change absolument rien. Excel est toujours Excel. Excel n'est pas conçu pour gérer des données. Excel est conçu pour traiter et exploiter des données. Très grosse différence.

    C'est pareil pour Word. Word n'est pas prévu pour faire de l'édition électronique, ni des sites Web.
    À 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.

  9. #9
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : mai 2006
    Messages : 542
    Points : 710
    Points
    710

    Par défaut

    Bonjour à tous
    Bonjour Jerome_Hej
    Bonjour les experts éminents

    Voici mon expérience pour un fichier excel, avec une petite BDD au départ en plusieurs feuilles, qui a grossi à 30000 lignes et 35 colonnes pour 1 feuille, les autres moins : excel se mélangeait les pieds et le fichier prenait du poids. Les lignes devraient au fil du temps augmenter (~ 100000 ?).

    Voulant garder excel, je l'ai transformé en fichier "moteur" et ai transformé ma bdd "excel" en fichier ".mdb" avec plusieurs tables ce qui est plus lisible. Cela fonctionne sans "access".

    Cela peut être la solution, quelque peu "bâtarde" peut-être, pour le problème de départ de Jerome_Hej. Reste la question du multi-postes à laquelle je ne peux répondre car perso les PC sont les miens mais dans différents lieux, et sans "access".

    Eric

  10. #10
    Membre émérite
    Avatar de Daranc
    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 610
    Points : 2 499
    Points
    2 499
    Billets dans le blog
    1

    Par défaut pas utilisé depuis longtemps MSquerry

    il y avait cet outil (sous 2000--2003) MSquerry j'ignore si il est toujours en service
    autrement dans ces même version il y avait un outil : Grille qui servait à générer une mini base de donnée sous excel ( pareil je ne m'en suis pas servi depuis des annéees, mêm si il y a encore des poste sociètè équipé de ces versions d'excel... super pour les sous prog en VBA ou les formules récentes)
    Cordialement
    Daranc

  11. #11
    Expert éminent sénior

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

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

    Informations forums :
    Inscription : février 2010
    Messages : 6 085
    Points : 11 304
    Points
    11 304

    Par défaut

    BOnjour
    Citation Envoyé par Daranc Voir le message
    il y avait cet outil (sous 2000--2003) MSquerry j'ignore si il est toujours en service...
    C'est un simple requêteur comme son nom l'indique et il a effectivement perdu quelques possibilités, notamment celle de générer des cubes de données.

    La grille existe toujours mais cela ne change rien au problème de clés et relations, noyau des BD
    Chris

    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é...

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    janvier 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2006
    Messages : 137
    Points : 68
    Points
    68

    Par défaut

    Citation Envoyé par edelweisseric Voir le message
    Bonjour à tous
    Bonjour Jerome_Hej
    Bonjour les experts éminents

    Voici mon expérience pour un fichier excel, avec une petite BDD au départ en plusieurs feuilles, qui a grossi à 30000 lignes et 35 colonnes pour 1 feuille, les autres moins : excel se mélangeait les pieds et le fichier prenait du poids. Les lignes devraient au fil du temps augmenter (~ 100000 ?).

    Voulant garder excel, je l'ai transformé en fichier "moteur" et ai transformé ma bdd "excel" en fichier ".mdb" avec plusieurs tables ce qui est plus lisible. Cela fonctionne sans "access".

    Cela peut être la solution, quelque peu "bâtarde" peut-être, pour le problème de départ de Jerome_Hej. Reste la question du multi-postes à laquelle je ne peux répondre car perso les PC sont les miens mais dans différents lieux, et sans "access".

    Eric
    Bonjour Eric,
    As tu la possibilité de partager ton fichier Excel pour voir concrètement comment tu as réussi à gérer cela stp ?


    Bonjour à tous,
    Merci pour vos réactions. Je trouve que pour certains petits projet, l'investissement dans Access n'est pas utile. Certains petits projets ne nécessitent que quelques feuilles Excel servant de pseudo tables dans lesquelles il serait bien de pouvoir mettre quelques listes déroulantes dans des tables reprenant les données d'autres tables, rien de plus. Et même çà, çà a l'air compliqué avec Excel avec lequel on peut faire d'autres choses géniales. C'est bien dommage.

    Bien à vous.

  13. #13
    Rédacteur/Modérateur
    Avatar de GAYOT
    Homme Profil pro
    Amateur
    Inscrit en
    novembre 2004
    Messages
    2 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Amateur
    Secteur : Distribution

    Informations forums :
    Inscription : novembre 2004
    Messages : 2 471
    Points : 5 899
    Points
    5 899

    Par défaut

    Bonsoir à tous.
    Je pense qu'il faut pour faire du bon travail, il faut les bons outils.
    Je signale simplement que l'investissement se résume à une licence Access pour le développeur du programme et que sur tous les autres postes une version Runtime gratuite peut suffire.
    Plus j'avance et plus je sais que je ne sais rien. Et comme j'essaie d'aller loin .....
    Pas de demande d'aide par Mp.... sinon
    Mes tutoriels sur http://jdgayot.developpez.com
    Beaucoup de réponses à vos questions dans la Faq ou dans les tutoriels


  14. #14
    Expert éminent
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2013
    Messages
    3 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : mai 2013
    Messages : 3 601
    Points : 6 071
    Points
    6 071

    Par défaut

    L'achat d'Access n'est pas toujours nécessaire.
    Tout le monde devrait avoir les librairies installées.
    Si toi tu l'as, tu peux développer une application Excel qui interagit avec cette base (que tu peux nommer avec l'extension que tu veux...)

    Le problème est de travailler à plusieurs sur les mêmes champs des mêmes tables en même temps...
    Il y a moyen de mettre à jour chaque champs au fur et à mesure des changements et c'est tout de même rapide.
    Le problème à plusieurs est qu'il doivent faire un "refresh" avant de faire une modif au cas où quelqu'un d'autre l'aurait faite auparavant...
    L'ajout d'un bouton pour cette opération est donc utile...

    Dans certains cas, c'est pratique.
    Ici, plusieurs personnes veulent pouvoir travailler sur un certain fichier en même temps.
    Comme ils n'utilisent pas les mêmes champs, j'ai donc opté pour cette solution.
    Ça ne cause aucun problème et tout le monde est content
    MPi²

  15. #15
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : mai 2006
    Messages : 542
    Points : 710
    Points
    710

    Par défaut

    Bonsoir à tous

    "GAYOT" a tout à fait raison, surtout que tu as une license, il me semble.

    "parmi", si j'ai compris entre les lignes, abonderai dans mon sens.

    Pour te répondre, Jerome_Hej, je me suis appuyé sur la Faq de "developpez", voici le lien : https://excel.developpez.com/faq/?page=Access. Comme d'habitude c'est très bien expliqué.

    Je ne peux malheureusement pas te passer le fichier. Dans la mesure de mes capacités, je répondrai à tes questions.

    Eric

Discussions similaires

  1. Utiliser XML comme une base de données
    Par b_laurent dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 07/05/2008, 16h58
  2. Utiliser un fichier CSV comme une base de données: contenu rogné
    Par therock dans le forum Accès aux données
    Réponses: 5
    Dernier message: 21/12/2007, 11h00
  3. Réponses: 9
    Dernier message: 06/04/2007, 19h45
  4. Réponses: 4
    Dernier message: 21/12/2005, 10h46

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