Liaison de données
Bonjour à tous
J'ai un petit souci.
J'ai un fichier Test qui comporte 2 feuilles :
- Esclave
- Maître
Dans la feuille "Esclave" se trouve les colonnes de données "Fruits" et "Quantité" que je souhaite faire apparaître sur la feuille "Maître", avec possibilité de mise à jour. J'ai donc effectué un copier/coller avec liaison.
Sur la feuille "Maître", j'ai une autre colonne "État" (qui n'apparaît pas dans le fichier Esclave, c'est le but) dont j'ai rentré les données manuellement.
Mon problème :
Lorsque j'effectue un tri par ordre alphabétique sur la colonne "Fuits" par exemple, dans la feuille "Esclave", la mise à jour se fait bien dans la feuille "Maître" pour les colonnes "Fruits" et "Quantité" mais la colonne "État" ne s'actualise. Les données restent figées et ne changent pas en fonction des mises à jour...
Quelqu'un aurait-il une solution à ce problème svp ?
Suggestion :
En B2 de la feuille Maître, la formule suivante :
=SIERREUR(RECHERCHEV(A2;Esclave!A:B;2;FAUX);"Pas de correspondance")
A condition de n'avoir qu'une occurrence de la valeur A2 dans Esclave...
Codialement, Daniel
Tout d'abord merci pour ta réponse
Je dois créer ce fichier pour mon travail. Il contient des informations qui sont justement parfois récurrentes.
J'ai essayé ta formule, cela ne règle pas mon problème
PS : 666 messages à ton actif, c'est plutôt la classe
Oui, effectivement, il va être difficile de demander à Excel de faire le grand écart...
Peut-on imaginer que sur la feuille Maître, le produit ne soit pas dépendant de la feuille Esclave ? Et qu'en revanche, les produits de la feuille Esclave doivent être présents dans la feuille Maître ? Cela donnerait une justification au nom des deux feuilles, d'ailleurs...
Pour le coup, l'articulation serait un peu différente, et les formules de récupération des données d'une feuille à l'autre aussi. Mais ça dépend du mode d'acquisition des données, ce qui n'est pas dit dans la chanson ! Peux-tu nous en dire un peu plus ?
Une suggestion dans le fichier joint...
Cordialement, Daniel
Bonjour à tous
Une proposition sans formule.
Quand on active la feuille Maïtre, les données de la feuille Esclave y sont reportés dans le même ordre et l'état qu'il y avait, s'il y en avait un, est reporté également.
Cela convient-il ?
Bye !
Merci pour vos réponses
Dan42153, il semblerait que cela ne fonctionne toujours pas. Oui c'est exactement ça, les produits de la feuille Esclave doivent être présents dans la feuille Maître.
Qu'entends-tu par "mode d'acquisition de données" ?
gmb, merci cela semble fonctionner !
Merci à vous
Gibou a écrit :Serait-ce possible que tu m'expliques comment tu as fait ?
J’ai fait une macro événementielle qui se déclenche chaque fois que tu actives la feuille ‘’Maitre’’
Tu peux la voir en tapant simultanément sur les touches ‘’Alt’’ et ‘’F11’’
Cette macro
• Met dans une mémoire tableau (tabloM1) les données de la feuille ‘’Maitre’’ telles qu’elles sont au départ
• Met dans une mémoire tableau (tabloE) les données de la feuille ‘’Esclave’’
• Définit une mémoire tableau (tabloM2) de même nombre de lignes que le tableau de la feuille Esclave et de 3 colonnes
• Passe toutes les lignes de tabloE et, pour chaque ligne
o reporte en colonne 1 et 2 de tabloM2 les données de tabloE
o recherche dans tabloM1 la ligne où se trouvent ces données
o quand elle l’a trouvée, elle reporte la donnée de la colonne 3 de tabloM1 et la reporte dans la colonne 3 de tabloM2
• Quand elle a passé toutes les lignes, elle reporte sur la feuille ‘’Maïtre’’ à partir de A1 les données de tabloM2
OK ?
Bye !
Mmmh c'est un peu compliqué. J'avoue que j'ai du mal à comprendre
Est-ce que je pourrais faire la même manip' d'un fichier à un autre au lieu d'une feuille à une autre ?
Merci
Gibou,
Loin de remettre en cause le code de Gmb, il me semble que l'appropriation d'une formule serait peut-être plus facile et à long terme plus profitable. Il faudrait juste savoir comment sont acquises les données (dans quel ordre, quelle provenance, etc...) et quel traitement leur est appliqué ensuite pour définir la bonne formule au bon endroit...
Cordialement, Daniel
gmb, ta macro fonctionne bien mais je ne suis pas doué en VBA. Pour ainsi dire je n'y connais rien
Malgré la bonne description de son fonctionnement
En vérité, j'aimerais créer un fichier ("Maître") qui va chercher des informations dans un autre fichier ("Esclave"). Et je souhaiterai :
- Pouvoir ajouter des colonnes de données au fichier "Maître" qui n'apparaissent pas dans le fichier "Esclave", et que celles-ci se retrouvent dans le bon ordre lorsque j'effectue un tri via le fichier "Esclave"
- Qu'il se mette à jour automatiquement (ou sinon le biais d'un bouton par exemple)
Ai-je répondu à tes questions Dan42513 ? Ai-je été assez précis ?
Dans la réponse que je t'ai fournie, je partais du principe suivant :
- le fichier Maître est l'endroit où l'on définit les produits (colonne A) et leur état (colonne C), et où l'on récupère la somme des quantités (colonne B) d'après la feuille Esclave.
- pour saisir une ligne dans la feuille Esclave, on doit choisir (à l'aide de la liste déroulante sur la colonne A) un des produits de la feuille Maître
- pour trier la feuille Esclave, on utilise le tri dans la feuille Esclave
- pour trier la feuille Maître, on utilise le tri dans la feuille Maître (la feuille Maître reste triée même si on ajoute des lignes dans la feuille Esclave)
Mais cette méthode doit être confrontée à la façon dont la feuille Esclave est renseignée (si c'est un import de fichier, par exemple, la validation des données ne sert à rien...), et à tes objectifs ultérieurs de gestion...
Dis-moi si on est sur la bonne voie ou pas du tout... Daniel
Non, en fait c'est le fichier Esclave qui possède les données des colonnes A et B.
Le fichier Maître, lui, récupère les données des colonnes A et B du fichier Esclave. Une colonne C lui est rajouté avec les États des fruits.
Mon problème concerne justement le triage. Lorsque je trie (par ordre alphabétique par exemple) la colonne A du fichier Esclave, les informations des colonnes A et B se mettent bien à jour dans le fichier Maître. Cependant la colonne C, elle, ne suit pas le triage. Les données de cette colonne sont immobiles.
Est-ce que ça t'éclaire un peu mieux sur le sujet ?
Non, ça ne m'éclaire pas mieux, c'est bien ce que j'avais compris en lisant ton premier post et en consultant ton fichier...
Je ne comprends simplement pas ce qui t'empêche d'organiser tes données comme je te le propose, ce qui résoudrait tout...
Tu dois avoir tes raisons, j'imagine bien, mais comme tu ne les donnes pas...
En tout cas, avec ta méthode, la réaction d'Excel est tout à fait normale : de là à en déduire que la méthode n'est pas la bonne...
Je ne peux pas organiser mes données de cette façon. Peut-être ai-je mal choisi mon exemple avec les fruits...
J'ai ajouté un nouveau fichier avec d'autres données sans quantités
Aucune formule/solution n'existe pour une chose pourtant si simple ?
Le problème vient de la nécessité (?) de trier la feuille Esclave avec un impact correct sur la feuille Maître, alors que rien de logique ne relie les fruits de la feuille Esclave et leur état dans la feuille Maître, à part justement le numéro de ligne, qui change lors du tri...
La solution vient peut-être simplement du côté de l'abandon de la nécessité de trier la feuille Maître en triant la feuille Esclave...
Pour cela, il ne faudrait pas faire dépendre les valeurs de la feuille Maître de la feuille Esclave (!), c'est tout. Mais ce n'est que mon avis....
Le collage avec liaison a ses défaut, mais le problème est surtout le recours à cette méthode avec cette organisation de données. Je reste sur la suggestion que j'ai formulée, faute de mieux, désolé... Daniel
PS : peut-être que si tu expliquais le processus entier, on pourrait t'aider plus facilement : ce que tu entres, ce que tu sors, et ce que tu veux faire entre les deux...
Gibou a écrit :Et je souhaiterai :
- Pouvoir ajouter des colonnes de données au fichier "Maître" qui n'apparaissent pas dans le fichier "Esclave",
OK
La version suivante te permet d'ajouter autant de colonne que tu veux, elles suivront le tri fait sur la feuille Esclave.
La contrainte (il y en a toujours une, quelle que soit la solution) c'est que la feuille Esclave reste avec ses 2 colonnes, pas plus...
Mais si tu ne connais rien aux macros, il vaut peut-être mieux que tu fasses confiance à Dan qui te bichonnera une formule aux petits oignons si tu satisfaits ses demandes...
Pour ma part, j'en suis incapable.
Bye !
Merci tout de même de ton aide gmb
Dan42153, j'ai remis un fichier en pièce jointe qui t'aidera peut-être à mieux comprendre comment se structure mon fichier et ce que je veux faire avec.
Le premier onglet "Informations" regroupe les informations dont j'ai besoin dans un tableau. J'ai copié/collé avec liaison ces informations dans le deuxième onglet "Fichier automatique". Jusqu'ici, tout va bien.
Seulement, comme tu peux le constater dans le fichier, je souhaite ajouter des colonnes de données (qui apparaissent en rouge) sur mon fichier automatique. C'est à partir de ce moment que j'ai un souci : lorsque je trie les données dans l'onglet "Informations", elles se trient également dans l'onglet "Fichier automatique" mais les données rouges ne suivent pas le tri.
Je précise mes contraintes :
- Chaque ligne possède des informations propres à elle-même. Je ne peux pas les regrouper ou quoi que ce soit.
- Il faut que je puisse effecteur des tris dans les deux feuilles du classeur
Cela t'aide t-il mieux ?
oui, c'est un peu plus clair... Y a t'il dans les deux feuilles une information unique, qui permet à coup sûr d'identifier la ligne ?
Imaginons que ce soit la référence, et le fichier joint donne une solution... Mais la saisie "manuelle" de la référence est à mon avis inévitable dans le fichier automatique (qui ne l'est plus vraiment, du coup...).
En effet, à mon sens, tu ne peux pas afficher les informations du fichier automatique avec des formules du type "=Informations!A4", sans quoi les données voisines indépendantes ne suivent pas, effectivement...
Désolé, je ne vois pas d'autre solution... Cordialement, Daniel
PS : j'ai inséré une ligne vierge de hauteur nulle entre la ligne de titres et la ligne d'entêtes de chacun des tableaux : sans cela, une fois les filtres ôtés, pour les remettre, tu dois sélectionner toi-même les cellules de la liste...
Justement le but est de rendre ce fichier automatique, je ne dois pas avoir à recopier les références manuellement
Donc aucune solution n'est envisageable avec une formule... Je vais être obligé de me mettre au VBA dans ce cas. Comment pourrait-on faire avec une macro VBA ? Moi qui ne connaît rien là-dedans...
Il y a encore des questions auxquelles tu n'as pas répondu, et qui conditionnent peut-être les réponses qui pourraient t'être faites avant d'attaquer le VBA...
Par exemple :
- pourquoi les colonnes en rouge sont-elles visibles dans une feuille et pas dans l'autre ? Ou autrement dit : pourquoi deux feuilles quasiment identiques ?
- pour une même ligne de la feuille automatique, peut-il y avoir plusieurs interventions (un même client, un même article, etc)
- y a t'il des exploitations statistiques (sur les temps, le type de panne) à effectuer sur ces données...
Tout cela pour donner un seul et dernier conseil : ne s'attaquer au VBA que quand le classeur dans son ensemble donne les résultats attendus, et tous les résultats !
Ceci dit, Gmb t'a donné une base de départ, j'espère que tu auras plus de satisfactions avec sa solution...
Bon courage, en tout cas ! Cordialement, Daniel