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

Excel Discussion :

liste de choix avec saisie semi auto à partir d'un autre fichier


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Gestion comptable
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestion comptable
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut liste de choix avec saisie semi auto à partir d'un autre fichier
    Bonjour à toutes et à tous,
    Ceci est mon premier fil sur le forum et je suis un debutant.
    Veuillez me pardonner pour ma question

    J'ai cherché une solution simple, sans résultat...
    Je dispose d'une liste de fournisseurs (mise à jour régulière de celle-ci!)
    Fichier indépendant nommé "Liste_fournisseurs"

    je gère différent pôles achat utilisant chacun un fichier excel pour renseigner leur dépenses. que l'on nommera respectivement "Achat_pôle_1", "Achat_pôle_2", etc.

    Comment utiliser mon fichier fournisseur pour créer une liste de choix dans leur fichier respectif (qui tiendra donc compte des mises à jour), en y intégrant une saisie semi automatique?

    D'avance, merci pour votre aide.
    Cornouaie.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 634
    Points
    28 634
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il y a deux possibilités. L'une par VBA, l'autre en utilisant les fonctions, la liaison et la Validation de données.
    Prenons le deuxième cas.
    La validation de données ne peux faire référence à des cellules se trouvant sur une autre feuille ou un autre classeur que si celles-ci sont nommées.
    Donc, la première chose à faire, c'est de nommer la colonne où se trouve les noms des fournisseurs dans le classeur "Liste_fournisseurs".
    Ensuite dans les classeurs "Achat_pôle_1", "Achat_pôle_2" appliquer la validation de données en faisant référence à ce nom, puis utiliser les fonctions de recherche tel que RECHERCHEV (didacticiel à consulter) pour aller chercher les divers renseignements.
    Cette opération doit être faite avec les classeurs concernés ouverts. Ainsi il y aura une liaison entre ces classeurs.
    SI l'on utilise la technique des listes et Data Base dynamiques, la validation de données faisant référence à ces listes ou Data Base dynamique ne fonctionneront pas parce-que la fonction DECALER ne marche pas depuis un autre classeur.
    L'alternative à cet inconvénient et c'est ce que j'adopte comme solution est de créer une feuille supplémentaire dans le classeur qui est en liaison avec le fichier de référence ici les classeurs "Achat_pôle_1", "Achat_pôle_2", dans cette feuille, je place cette formule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(LIGNE()-1<=nbFou;'Z:\Nom du chemin\[Liste_fournisseurs.xls]Fournisseurs'!A2;"")
    nbFou étant une cellule nommée qui calcule combien il y a de fournisseurs dans le classeur Liste_fournisseurs.xls
    Ensuite j'effectue toutes mes recherches depuis cette feuille en utilisant les listes et DataBase dynamique (avec la fonction DECALER.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Gestion comptable
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestion comptable
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour corona,
    Je suis vraiment désole, mais je n'ai pas compris la marche à suivre
    J'ai nommer la colonne "c_fournisseurs" dans mon fichier "l_fournisseurs"
    (Cf Pièce jointe)

    Si j'ai bien compris, ni la validation de données, ni la fonction décaler ne fonctionne d'un classeur à l'autre.
    J'ai donc crée un onglet "l_fournisseurs" dans les fichiers "achat_pôle" pour y transférer la liste.
    C'est là que je dois utiliser la fonction "recherchev"?
    A priori, je n'ai qu'une seule information à extraire du fichier l_fournisseurs, le nom.
    Quelle fonction utiliser pour cela en sachant que la liste n'est pas exhaustive?
    Ensuite, je devrais gérer le problème de la saisie semi-automatique avec "Décaler" si j'ai bien compris.

    Votre formule est à mettre dans la première cellule de la colonne "l_fournisseur" des fichiers "achat_pôle"?

    Merci pour votre indulgence.
    Cornouaie

    Petit Edit:
    J'ai réussi à faire fonctionner ta formule. merci!
    Mais pour mettre à jour la liste le fichier "l_fournisseur" doit être ouvert.
    quelle solution pour ce problème? une macro qui demande l'ouverture du fichier source à chaque fois que les utilisateurs ouvriront leur fichier "Achat_pôle"?

    Je passe à la suite, la liste de choix avec saisie semi-auto.

    J'ai vraiment l'impression d'être un boulet
    Images attachées Images attachées  

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 634
    Points
    28 634
    Billets dans le blog
    53
    Par défaut ERRATUM
    Bonjour,
    J'ai écrit une grosse bêtise en affirmant que l'on pouvait utiliser la validation de données en faisant référence à un autre classeur à condition d'utiliser une plage nommée. J'ai répondu un peu vite sans le vérifier.
    J'avais palier à ce problème, en créant une feuille dans le classeur qui faisait appel à une database se trouvant sur un autre classeur.
    J'ai placé deux classeurs exemples ici
    Un classeur nommé Modèle Facture et l'autre FactDataBase
    Modèle facture à une feuille (Facture) qui contient un modèle de facture et deux autres feuilles linkCli et linkArt qui ont un lien avec les feuilles Clients et Articles du classeur FactDataBase
    Les feuilles du classeur Modèle facture sont protégées mais sans mot de passe.
    Sur la feuille Facture du classeur Modèle Facture, il y a deux listes (Validation de données) une en D10 et sur la plage B21:B45
    La feuille linkCli ne peux recevoir que 3 clients (c'est pour l'exemple) Si un quatrième client est ajouté dans le classeur database, un message va s'afficher en K2 pour signaler qu'il y a dépassement.
    Je pense que la lecture des formules utilisées sera plus parlant qu'une longue explication
    Attention : lors de la première utilisation du classeur Modèle facture, il faudra modifier la liaison.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Gestion comptable
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestion comptable
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Merci tout d'abord pour le fichier, ça permet de mieux comprendre le raisonnement.

    2 questions:
    Dans le fichier "modèle facture" feuille "Facture" pour choisir le client avec validation de données, tu utilise une liste "dbrCli", je ne la retrouve pas.
    Je trouve bien la liste des codes clients dans la feuille " linkCli" mais pas le nom de la liste "dbrCli".

    Et comment procède tu exactement pour importer la liste des clients avec ta formule.
    =SI(LIGNE()>NBVAL([FactDataBase.xls]Clients!$A:$A);"";[FactDataBase.xls]Clients!B3)
    j'ai testé sur mes fichiers, j'ai saisi la formule en sélectionnant la colonne ou importer la liste, mais je n'obtiens que la 1ère valeur.
    Je dois recopier la formule dans toute la colonne?
    Si oui, à quoi sert le "Ligne()>NBval?

    Merci d'avance.
    Sans vouloir abuser, je cherche la solution pour mettre à jour la liste à chaque ouverture du fichier, sans résultat.
    Cornouaie.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 634
    Points
    28 634
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Réponses aux questions
    1) La liste dbrCli est une liste dynamique qui est référencée à l'aide de la formule DECALER et n'est donc pas visible avec la liste proposée dans la Zone des noms mais on la trouve si l'on fait Insertion/Nom/définir... (pour Excel 2003) ou encore mieux à l'aide de la touche F3.
    2) Oui, il faut recopier cette formule sur autant de lignes qu'il n'y a de record dans la DataBase d'où la formule que j'ai mis en K2 sur la feuille Facture qui contrôle si le nombre de lignes dans la feuille linkCli est équivalent au nombre de lignes dans la feuille Clients
    A propos de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(LIGNE()>NBVAL([FactDataBase.xls]Clients!$A:$A);"";[FactDataBase.xls]Clients!B3)
    La fonction LIGNE() donne le n° de la ligne où se trouve la formule
    NBVAL([FactDataBase.xls]Clients!$A:$A) donne le nombre de cellules remplies dans la feuille du classeur référencé.
    Donc cette formule fait le lien avec la cellule de la feuille Clients du classeur FactDataBase se trouvant sur la même ligne tant que LIGNE() n'est pas supérieur à NBVAL() dans le cas contraire il ne met rien dans la cellule "".
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Gestion comptable
    Inscrit en
    Avril 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Gestion comptable
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Je m'arrache les cheveux ...
    Les formules fonctionnent et j'obtiens ma liste de choix, mais avec toutes les valeurs vides...
    NBVAL compte les cellules non-vides, donc comme j'applique la formule
    =SI(LIGNE()>NBVAL([FactDataBase.xls]Clients!$A:$A);"";[FactDataBase.xls]Clients!B3)
    sur la colonne entière où j'importe ma liste, j'obtiens une liste de choix de 65k valeurs...
    y'a t'il une solution pour ne compter que les cellules dont la valeur est non nulle.

    Je désespère.
    Merci d'avance.
    Cornouaie.

    Petit Edit:
    J'ai trouvé une solution pour le comptage des cellules non vides.
    J'utilise "NB.Si" avec =">""" en critère.
    J'obtiens la liste exacte dans ma liste de choix.

    Me reste à solutionner le problème de la saisie semi auto et la mise à jour de la liste.

    Je continue mes essais!

Discussions similaires

  1. Saisie semi auto avec liste déroulante
    Par patdu35 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/07/2013, 09h55
  2. [AC-2007] Saisie semi auto zone de liste déroulante
    Par frabeau dans le forum IHM
    Réponses: 0
    Dernier message: 06/09/2011, 17h24
  3. Liste de validation générée à l'ouverture + saisie semi auto
    Par rogerlette dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/09/2010, 10h02
  4. ComboBox Liste avec saisie semi auto en consultation
    Par phsouchal dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/08/2007, 11h35
  5. Réponses: 1
    Dernier message: 27/10/2005, 21h48

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