Problème transfert de données entre deux tableaux

Bonjour à tous,

Je ne suis pas un pro d'excel et je dois créer un fichier.

J'ai avancé sur plusieurs étapes mais je bloque sur la fin et j'ai donc besoin de l'aide des spécialistes de ce forum !

Voici mon problème (dans le fichier ci-joint il n'y a que la dernière étape, celle qui me pose problème).

Dans l'onglet BDD j'obtiens une extraction des informations saisies uniquement pour la journée en cours.

Quand il n'y pas d'horaire ni de porte renseigné, les informations vont dans l'onglet "planning", tableau "en attente de RDV" (je n'ai pas mis ces formules dans le tableau en pièce-jointe car inutile).

Jusque là pas de pb.

Ce que je voudrais, c'est que une fois un horaire et une porte renseignés, les informations de la ligne se mettent dans la bonne cellule de l'onglet "planning".

Par exemple, si dans BDD je met "2" en H3 et "8h" en I3, il faut que les informations contenues dans la ligne 3 "client, transporteur, etc..." se reportent dans l'onglet "planning" sur la bonne porte et à la bonne heure (en "rouge" dans mon fichier exemple).

Est-ce possible de trouver une formule pour faire cela sans utiliser de macro?

Ou via un tableau intermédiaire de tri?

J'ai essayé avec des recherches, des SI/ET/OU, etc... mais je n'y arrive pas.

En esperant que ma demande soit compréhensible

Le fichier est destiné à être utilisé par des personnes ne connaissant pas du tout excel.

Je souhaite donc éviter au maximum qu'il y ait trop de macro compliquées ou des manipulations à faire par l'utilisateur pour trier ses données. J'ai juste inséré quelques boutons pour des tris automatiques.

Après si il n'y pas d'autres possibilités...

Merci beaucoup pour vos retours et votre aide

17fichier.xlsx (24.51 Ko)

Bonjour MaxK929 et bienvenue,

Si tu repasses par ici, toujours à la recherche d'une solution (et pour autant que j'aie compris!!), une possibilité en pièce jointe:

  • je me suis occupé du tableau pour la Porte 2 (tu adapteras pour la Porte 1). Espérons, au passage, que tu n'as pas 64 portes à gérer: ça risque de devenir lourd. Les formules utilisées sont des formules matricielles, gourmandes en ressources; elles risquent de ralentir nettement le temps de calcul sur des fichiers volumineux!!
  • je suis parti du principe qu'il n'y aurait pas, pour la même heure et la même porte deux "clients"
  • je ne sais pas pourquoi les lignes 5 à 12 sont masquées. J'ai laissé en l'état
  • la première formule est en V13 et peut être recopiée vers le bas. On peut recopier à droite aussi ... sauf que les colonnes ne sont pas toutes reprises. Il faudra donc modifier la formule en X13, avant de la recopier en Y13 (avec des titres de colonnes identiques dans les 2 feuilles, on aurait pu automatiser)
  • À la création et lors de toute modification, les formules matricielles doivent être validées avec la combinaison Ctrl+Shift+Enter

Pour un truc qui se veut "simple d'utilisation" ... pas certain que ce soit bien le cas ... mais c'est toi qui verra (et les autres utilisateurs!)

Bonjour U. Milité,

Merci beaucoup pour ton aide ! Ca fonctionne très bien !

- Il y a 12 porte

- Effectivement, pas possible d'avoir deux clients même heure et même porte

- masquée car le créneau de 5h à 7h n'est pas amené à être utilisé dans l'immédiat. Il me suffit de coller la formule donc c'est parfait

-je peux mettre des titres identiques mais pas sur que tu auras le courage de refaire la formule. Honnêtement, là tout de suite j'ai un peu de mal à comprendre la formule et son raisonnement mais je vais essayer de m'y plonger

-donc si je mets la formule dans toutes les cellules, je n'aurais à faire qu'une fois Ctrl+Shift+Enter et ensuite ça fonctionnera toujours? Ou alors il faut le faire à chaque ouverture du fichier?

Je vais essayer d'adapter la formule aux données de mon vrai fichier et me renseigner sur la fonction index.

En tout cas merci encore, là j'ai les cartes en main, alors que j'étais au point mort !

MaxK929 a écrit :

donc si je mets la formule dans toutes les cellules, je n'aurais à faire qu'une fois Ctrl+Shift+Enter et ensuite ça fonctionnera toujours? Ou alors il faut le faire à chaque ouverture du fichier?

En fait, tu crées la première formule, tu valides avec la combinaison des 3 touches et tu recopies ensuite vers le bas et/ou la droite à l'aide de la poignée de recopie.

Avec des titres identiques, on peut adapter la formule sans difficulté (pour la compréhension, ce ne sera pas pire ) ... Maintenant, tu ne dois la recréer qu'en première et troisième colonne de chaque tableau "Porte x", ce qui n'est pas dramatique, ni insurmontable. À toi de voir!

Il faudra peut-être songer à protéger les formules quand tu seras fin prêt!?

Re !

Bon, je pense avoir compris la formule.

Merci, ça pourra surement me servir à nouveau.

En revanche j'ai une question :

=SIERREUR(INDEX(BDD!B$3:B$30;PETITE.VALEUR(SI((BDD!$H$3:$H$30=2)*(BDD!$I$3:$I$30=$L13);LIGNE(BDD!$A$3:$A$30)-2);1));"")

A quoi sert le -2 à la fin de la formule? Pour comprendre j'ai essayé de modifier en -3 ou -1, mais derrière ça affiche soit "0", soit une valeur incorrecte. Par exemple dans V13 si je mets -3, ça me ramène COMTOISE (cellule B13 de BDD). Dans V17 si je fais la même chose, ça me met "0".

C'est peut-être parce que les lignes 1 et 2 sont les titres et pas les données? Ce qui permet de commencer la recherche à partir de la ligne 3?

Je ne suis pas sur de saisir... En espérant que ce soit explicable par message...

Encore merci, ce forum est super!

La fonction INDEX renvoie la valeur figurant, dans une plage donnée, à hauteur d'une ligne particulière (et éventuellement dans une colonne spécifique. Ici la plage ne faisant qu'une colonne, l'argument colonne est ignoré)

Pour trouver le n° de ligne, on cherche le premier n° de ligne où le bon n° de porte et la bonne heure seront renseignés, respectivement en colonnes H et I.

Dans ton exemple, Porte 2 et 8:00 figurent en ligne 3 de la feuille, mais INDEX(BDD!B$3:B$30,3) renverrait ce qui figure en ligne 3 de cette plage ... au lieu de la ligne 1. Le '-2 vient bien de là, comme tu le supposais

N'oublie pas de vérifier, après avoir modifié une formule, si celle-ci est bien encadrée d'accolades (si pas, c'est la validation à l'aide de Ctrl+Shift+Enter qui n'est pas correctement exécutée). Si tu obtiens COMTOISE en V13, c'est bien là que le bât blesse

Effectivement, depuis le début je me demandais pour les "accolades", et j'ai compris après ton dernier message où tu m'expliquais pour Ctrl + Shift + Enter.

C'est bon, j'ai réussi à retranscrire la formule dans mon "vrai fichier"!

Et ça fonctionne très bien !

U.Milité, je t'aime

Merci encore pour ton aide et tes conseils !

Je considère le sujet clos !

MaxK929 a écrit :

U.Milité, je t'aime

Ouille!

Ma chérie, si tu nous lis, j'te jure ... ce n'est pas du tout ce que tu crois!

En fait je viens de me rendre compte d'un dernier petit pb que je n'arrive pas à résoudre.

Pourtant c'est surement très simple.

En fait, les horaires dans BDD qui sont après 14:00:00 ne s'incrémentent pas dans "planning".

La formule me semble pourtant bonne, j'ai aussi vérifié les formats de cellule au cas ou...

Je ne trouve pas la solution, ce qui veut dire qu'actuellement on ne peut pas positionner de RDV après 14h...

Merci encore

J'espère que ce sera la dernière fois !

Bonsoir,

Le problème est sans doute lié à un problème de précision en Excel, pour les nombres à partir (ou au-delà??) de la 13e décimale.

Si ta découpe se fait par quarts d'heure, on peut contourner avec un arrondi à 8 décimales des valeurs horaires dans les deux feuilles.

En V13, la formule deviendrait donc:

=SIERREUR(INDEX(BDD!B$3:B$30;PETITE.VALEUR(SI((BDD!$H$3:$H$30=2)*(ARRONDI(BDD!$I$3:$I$30;8)=ARRONDI($L13;8));LIGNE(BDD!$A$3:$A$30)-2);1));"")

PS: n'oublie pas la "validation matricielle"

Bonjour,

J'ai essayé et ça me dit que la formule contient un trop grand nombre d'argument...

Il y a une parade?

Merci

Bonjour,

Une erreur de manip, je le crains: j'ai repris le fichier proposé hier, ai collé la dernière formule en V13 ... pas de message d'erreur!?

Voir la pièce jointe

Euh... effectivement ça fonctionne.

J'avais mis un des ";8" au mauvais endroit... Désolé pour le dérangement!

Merci encore pour ton aide

Rechercher des sujets similaires à "probleme transfert donnees entre deux tableaux"