[Résolu] Extraire données avec condition entre 2 tableaux

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
samsam73
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 12 sept. 2011 11:24

[Résolu] Extraire données avec condition entre 2 tableaux

Message par samsam73 »

Bonjour,
J'ai des commandes qui arrivent tout au long de l'année, chacune pour une date précise. Pour ça j'ai un premier tableau (feuille "Données") où je les rentre (résumé sur l'exemple).
Chaque vendredi je détermine pour la semaine suivante qui effectue la livraison et dans quel véhicule (ça je le renseigne à l'aide des listes du tableau de la feuille "dispach").
Ce tableau "dispach" est destiné à être imprimé et affiché.
Après recherche un peu partout, j'ai réussi à l'aide de la fonction RECHERCHEV à remplir certaines cellules (la matrice s'appelle "DONNEES" sur le premier tableau). :wink:
Le critère de la fonction se trouve, par exemple pour l'équipe 1, dans la case D6. Est il possible de remplir cette cellule automatiquement en fonction de la date, en sachant que pour une date il peut y avoir de 0 entrée jusqu'à 4 maxi ? (en gros ça ferait "SI la date "Données.C" = "Dispach.A4" alors on rempli la case D6, sinon on passe à dispach A8, etc... avec en plus : SI "Données.C" = "Dispach.A4" et que D6 est déjà pris, on passe à G6, etc... ) et c'est là que je coince... :marto:
De plus ça serait bien lorsqu'on change la date en Dispach.A4, que les cellules D6 et consœurs s'effacent (mais je pense que ça se fera automatiquement). :|
Petite précision, la feuille "Données" est mensuelle.
Question subsidiaire: est-il possible, lors de l'impression, que le "#N/D" n'apparaisse pas ? 8)
essai2.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par samsam73 le 17 sept. 2011 00:58, modifié 1 fois.
oOo 3.2 sous XP pro et bient??t Ubuntu
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6090
Inscription : 02 janv. 2009 23:56

Re: Extraire données avec condition entre 2 tableaux

Message par Jean-Louis Cadeillan »

Bonsoir,
Une chose m'échappe. Dans l'exemple que tu nous présentes, en Dispach.D6, tu as mis 10, nombre qui est, semble-t-il, un n° de commande (ou du moins un n° pour retrouver la bonne commande avec RECHERCHEV). Or le n° 10 correspond à une commande en date du 15/09/2011 (dans Données). Et tu écris :
samsam73 a écrit :Si la date "Données.C" = "Dispach.A4" alors on rempli la case D6
==> dans la cellule Dispach.A4 se trouve le 12/09/11 ==> comment peux-tu retourner le n° 10 dans Dispach.D6 en te servant de la valeur 12/09/11 de Dispach.A4, sachant que la valeur 10 sur Données est liée à la date 15/09/11 en Données.C10 ?
Cordialement
Jean-Louis
Windows 10 Pro 64, LibO 25.8.6.2 (JRE 1.8.0_491) et AOO 4.1.16 (Adoptium 19.0.2.7)
samsam73
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 12 sept. 2011 11:24

Re: Extraire données avec condition entre 2 tableaux

Message par samsam73 »

Bonsoir Jean louis,
Oui effectivement, j'ai essayé avec plusieurs nombre pour voir si ça fonctionnait et j'en ai laissé au hasard afin de matérialiser la cellule que je cherche à remplir automatiquement. J'aurai dû mettre un chiffre entre 1 et 4 ça aurait été plus cohérent. Mais d'un autre côté ça montre aussi que je n'ai rien pour éviter une erreur.
:idea: Après réflexion sur mon problème, et vu mes connaissances limitées de calc, j'ai pensé me resservir de RECHERCHEV afin d'extraire la date = dispach.A4 et le numéro de ligne dans la matrice "DONNEES" et créer ainsi une nouvelle matrice de 4 lignes maxi correspondant à une seule date. Puis ensuite de faire correspondre dispach.D6 à la première ligne de cette nouvelle matrice, G6 à la deuxième ligne, etc... et faire ça cinq fois pour chaque date... :tesfou:
Je vais essayer ça et si ça donne quelque chose je le poste !
oOo 3.2 sous XP pro et bient??t Ubuntu
samsam73
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 12 sept. 2011 11:24

Re: [Résolu] Extraire données avec condition entre 2 tableau

Message par samsam73 »

Bon j'ai pas mal bidouillé, et je suis arrivé au résultat voulu. Ce n'est peut être pas la méthode la plus propre... :oops:

Pour explication, j'ai créé un nouveau tableau avec la fonction SI(NB.SI(date feuille "Dispach" comparée à date colonne C feuille "Données")>0;alors nombre colonne A feuille1;sinon nombre (100)correspondant à ligne vide). J'ai un maximum de 20 entrées possibles sur 5 jours, j'ai donc mis ça dans un tableau 20x5 en adaptant chaque cellule.
Ce qui donne le tableau que j'ai provisoirement placé sur la feuille 1.
Ensuite pour aller chercher ces données et les faire entrer dans les lignes 6, 10, 14, 18, 22 de la feuille 2, j'ai utilisé la fonction PETITE.VALEUR qui m'a permis de choisir la première plus petite valeur de la colonne, puis la seconde, etc... Lorsque aucune valeur n'était présente j'ai créé une valeur supplémentaire "100" qui n'a aucun renseignement sur sa ligne et donc occasionne des cellules vides sans message d'erreur.

Si certains veulent tester le tableau afin de voir s'il n'y a pas de faille, avant que je m'en rende compte à mes dépends... :?
En tous cas merci à ceux qui se sont penchés sur le problème (Jean Louis si tu m'entends... ! ) et merci aussi à Michel Xld car j'ai trouvé l'inspiration dans ses "quelques exemples de fonction dans calc". :D
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
oOo 3.2 sous XP pro et bient??t Ubuntu
Avatar de l’utilisateur
OOo - Ekel
SuppOOrter
SuppOOrter
Messages : 1334
Inscription : 10 nov. 2006 15:04
Localisation : F-Oise

Re: [Résolu] Extraire données avec condition entre 2 tableau

Message par OOo - Ekel »

Bonjour,

Il faut éviter de poster deux messages à la suite... le bouton Editer est ton ami quand tu veux ajouter un élément à ton précédent message.

Cordialement.
Ekel

KUbuntu Noble Numbat (24.04) : LibreOffice 25.8.2.2 Officielle
AMD Ryzen 5 5600G
AMD Radeon RX 6650 XT
22" + 22"
16 Go
____________________
Pour les règles du jeu.
Pour marquer Résolu.
Pour joindre un fichier.
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6090
Inscription : 02 janv. 2009 23:56

Re: [Résolu] Extraire données avec condition entre 2 tableau

Message par Jean-Louis Cadeillan »

Bonsoir,
Histoire de te donner des idées d'utilisation, une variante qui utilise EQUIV() pour chercher les dates, au lieu de NB.SI() que tu utilises. L'EQUIV() le plus interne de la formule sert à chercher la ligne de la première date, l'EQUIV() externe s'en sert pour décaler sa plage de recherche.
Cette variante a l'avantage de de pas avoir à créer un tableau supplémentaire pour chercher les bonnes interventions.
La formule en D6, grâce aux références relatives ou absolues et à l'emploi de la fonction COLONNE(), peut être recopiée dans toutes les autres cellules : G, J6, M6, D10, etc.
Le problème des #ND est réglé par la fonction ESTNA().
Cette solution est présentée sur la feuille Dispatch_2.
Ta solution à l'avantage de faciliter la maintenance des formules grâce à ton tableau intermédiaire, ce qui, à terme, peut être déterminant. Tu peux masquer ce tableau aussi, en production.
Tu peux supprimer l'affichage du 100 sur Dispatch par une MFC.
Cordialement
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Windows 10 Pro 64, LibO 25.8.6.2 (JRE 1.8.0_491) et AOO 4.1.16 (Adoptium 19.0.2.7)
samsam73
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 12 sept. 2011 11:24

Re: [Résolu] Extraire données avec condition entre 2 tableau

Message par samsam73 »

Bonjour,
Ah ben oui, Jean Louis, j'y avais bien pensé à cette formule, mais en rêve juste !!!... :) Je ne sais pas si tu l'as trouvé en 30 secondes mais c'est impressionnant...
Merci aussi pour les autres conseils. En fait avec la fonction ESTNA() je n'ai plus besoin du 100 en A23 ! :super:
Pour ce qui est du tableau intermédiaire je pensais le mettre dans la feuille param. Ce que tu appelles masquer en production c'est "Format - colonne - Masquer" ?
oOo 3.2 sous XP pro et bient??t Ubuntu
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6090
Inscription : 02 janv. 2009 23:56

Re: [Résolu] Extraire données avec condition entre 2 tableau

Message par Jean-Louis Cadeillan »

samsam73 a écrit :Ce que tu appelles masquer en production c'est "Format - colonne - Masquer" ?
ou Format > ligne > Masquer ou Format > Feuille > Masquer, selon le cas...
samsam73 a écrit :Je ne sais pas si tu l'as trouvé en 30 secondes
Non, 30 mn : je suis un besogneux, j'essaie des petits bouts dans une cellule, je vérifie que ça marche, j'assemble ensuite quelques bouts, je vérifie encore et enfin j'assemble toutes les parties de la formule et...ça marche pas, en général...à cause d'une °+*@&$! parenthèse, ou autre raison mesquine :fou: . Je fais aussi un usage abondant de l'assistant Fonction (Ctrl+F2), de l'aide intégrée, du Wiki et bien sûr... du Forum :wink:
A+
Jean-Louis
Windows 10 Pro 64, LibO 25.8.6.2 (JRE 1.8.0_491) et AOO 4.1.16 (Adoptium 19.0.2.7)
samsam73
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 12 sept. 2011 11:24

Re: [Résolu] Extraire données avec condition entre 2 tableau

Message par samsam73 »

Bien bien !
Une autre petite question : ce que tu as fait sur la feuille 5, c'est lié à quelque chose ?
oOo 3.2 sous XP pro et bient??t Ubuntu
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6090
Inscription : 02 janv. 2009 23:56

Re: [Résolu] Extraire données avec condition entre 2 tableau

Message par Jean-Louis Cadeillan »

C'est un brouillon qui illustre bien ce que je disais sur l'élaboration des formules :
Quand je suis en colonne D (4ème) je veux que ce soit la première occurrence de la date qui soit trouvée donc 0 décalage avec EQUIV. Quand je suis sur la colonne G (7ème), je veux que ce soit la deuxième occurrence de la date qui soit trouvée donc 1 décalage avec EQUIV, etc. Donc sur cette feuille 5 :
  • en A , c'est le n° de colonne où je suis
  • en B, c'est le décalage par rapport à EQUIV
  • en C, c'est une formule qui me permet de trouver B à partir de A.
Cette formule,

Code : Tout sélectionner

=ENT(A1/3)-1
, tu la retrouve dans Dispach_2.D6 sous la forme :

Code : Tout sélectionner

(COLONNE()-1)/3-1
(entre temps, dans ma (laborieuse) réflexion, je me suis débarrassé de ENT(), puisque COLONNE()-1 est toujours divisible par 3 là où je l'utilise...)
Mais bon, tout ça pour dire que tu peux balancer cette feuille :wink:
A+
Jean-Louis
Windows 10 Pro 64, LibO 25.8.6.2 (JRE 1.8.0_491) et AOO 4.1.16 (Adoptium 19.0.2.7)
samsam73
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 12 sept. 2011 11:24

Re: [Résolu] Extraire données avec condition entre 2 tableau

Message par samsam73 »

En tous cas merci de partager ton expérience.
A +

Sam
oOo 3.2 sous XP pro et bient??t Ubuntu