Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/04/2011, 16h07   #1
Invité de passage
 
Homme
Gestion comptable
Inscription : 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 : 0
Points : 0
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.
cornouaie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 17h43   #2
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 305
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 305
Points : 2 653
Points : 2 653
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 :
=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
http://philippe.tulliez.be
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
corona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 11h01   #3
Invité de passage
 
Homme
Gestion comptable
Inscription : 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 : 0
Points : 0
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
Type de fichier : jpg Nom_colonne.jpg (86,6 Ko, 9 affichages)
cornouaie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 09h01   #4
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 305
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 305
Points : 2 653
Points : 2 653
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
http://philippe.tulliez.be
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
corona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 13h51   #5
Invité de passage
 
Homme
Gestion comptable
Inscription : 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 : 0
Points : 0
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.
Citation:
=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.
cornouaie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2011, 16h51   #6
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 305
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 305
Points : 2 653
Points : 2 653
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 :
=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
http://philippe.tulliez.be
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
corona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2011, 13h28   #7
Invité de passage
 
Homme
Gestion comptable
Inscription : 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 : 0
Points : 0
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
Citation:
=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!
cornouaie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h19.


 
 
 
 
Partenaires

Hébergement Web