Recopie de lignes suivant critère

  • Initiateur de la discussion Trompette83
  • Date de début
T

Trompette83

Guest
Bonsoir à toutes et à tous

Voici le problème résumé au maximum que je me pose et dont je n'ai pas encore trouvé de solution.
Je precise que je souhaite n'utiliser que des formules (matricielles?) et eviter les macros mais je ne sais pas si c'est possible ceci pour raison de simplicité de maintenance.

J'ai une première table contenant des commandes de produits par des clients. A2:A11 liste des produits. B2:B11 commande client XX, C2:C11 commande client YY... Les clients ne commandent pas de tous les produits.

Je souhaite facturer et ne présenter que les produits commandés par chaque client sans ligne intermédiaire vide.

Voir le fichier joint

Si vous avez des propositions, merci d'avance

A bientot
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Perdue dans les mots anglais, je n'ai pas réussi à trouver la faille.
J'ai refait le tout avec du français, en adaptant l'ancien fichier.
Pour les écarts de lignes entre 2 titres
et les écarts de colonnes entre le titre et la formule,
c'est bon.

Pour ce qui est de nommer les formules de A à Z, ce n'est pas bon,
à cause des plages de la feuille 'Monday' qui sont nommées avec Decaler()
Ce que je pensais faire :
une liste déroulante avec les jours de la semaine dans chaque feuille de facture,
la formule Indirect(Lundi&'!plagenommée') allait chercher les valeurs dans la plage de la feuille du lundi.
Et toutes les feuilles auraient été semblables.
Excel refuse la fonction Decaler() avec Indirect.

Moralité : les formules ne sont pas nommées,
ce sont des bouts de formules qui le sont.
Mais les formules sont plus courtes.
Les plages nommées ProdMon, NomMon, TableMon seront à rebaptiser ProdWed, NomWed, etc quand tu dupliqueras Monday pour en faire Wednesday.
Les formules des factures auront, elles aussi, ces modifications à faire.

Tes 2 tableaux : je ne vois pas comment faire, surtout que je n'ai pas encore compris l'utilité du 2ème.
[file name=ReportTrompetteV2.zip size=17466]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ReportTrompetteV2.zip[/file]
 

Pièces jointes

  • ReportTrompetteV2.zip
    17.1 KB · Affichages: 16

pat1545.

XLDnaute Accro
> Excel refuse la fonction Decaler() avec Indirect.

tiens pourtant ceci fonctionne

B3 est égal à 1
en B5:
=DECALER(E1;INDIRECT('e' & B4);INDIRECT('e'&B3))
E1:G10 est une table

B3 et B4 peuvent donc varier et décaler se marie avec indirect

Tu as un exemple Monique où ça ce marche pas ?
Il doit y en avoir , c sur :))

Patrick
:)
 

Monique

Nous a quitté
Repose en paix
Bonjour,

C'est dans l'autre sens que ça ne veut pas marcher et quand on fait référence à des plages nommées par la fonction Decaler().
Si on veut, c'est Indirect(Réf&'!plage avec decaler') qui ne fonctionne pas
Tu prends le dernier fichier, la feuille 'Facture' et la cellule E10

Ce qu'il aurait fallu :
nommer 'Table' la plage 'TableMon' et 'Nom' la plage 'NomMon'

En E10 de la facture :
=SI(B10='';'';1*SUBSTITUE(RECHERCHEV(B10;TableMon;EQUIV(DECALER(B10;-Mo-4;2);NomMon;0);0);'P';))

Trompette a besoin d'une feuille par jour.
L'idéal aurait été de taper en C3 le nom de l'onglet auquel on fait référence, Mon ou Wed ou Fri…
Et la formule aurait été (sans le 'mon' de la fin) :
=SI(B10='';'';1*SUBSTITUE(RECHERCHEV(B10;INDIRECT(C3&'!TableMon');EQUIV(DECALER(B10;-Mo-4;2);INDIRECT(C3&'!NomMon');0);0);'P';))

Ce genre de formule fonctionne quand les plages sont nommées avec des références fixes.
List = $A$1:$A$20
=INDIRECT(C3&'!List') fonctionne

Si on a une plage à surface variable, nommée par Decaler() :
ListClients =DECALER(Prix!$E$2;;;NBVAL(Prix!$E:$E)-1)
=INDIRECT(C3&'!ListClients') ne fonctionne pas

Dans le fichier =INDIRECT('Prix'&'!ListClients') --> #REF!

Il y a eu un fil à ce sujet dernièrement, ça ne fonctionnait pas non plus.
Solution ?
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Tu as la possibilité d'avoir 2 tableaux dans tes feuilles journalières,
donc tes 2 séries différentes de clients

Facture : une seule feuille suffit. (tu peux la dupliquer si tu as besoin de 6 ou 7)
La formule va chercher les données dans la feuille journalière dont le nom est en D3 de la facture.
D3 = liste de validation avec les noms des jours de la semaine (2 seulement dans le fichier)

Invoice ou delivery note, pas compris, mais ce mot change en fonction du nom choisi
(nom = liste du tableau du haut ou du bas)
Et le nom est choisi par une liste de validation

Les formules sont bourrées de fonctions Indirect (pour faire référence aux plages de la bonne feuille)
Excel refuse plus de 7 indirect par formule,
mais accepte plusieurs Indirect() nommés, donc ces fonctions sont nommées
puis la formule entière est nommée.
(je n'ai pas réussi à nommer la plus courte)

Dans les feuilles journalières, les plages ne sont plus nommées par la fonction Decaler() mais de façon classique.
Excel refuse Indirect(Réf du jour;plage nommée par Decaler)
Et tu n'as plus besoin de modifier les noms à chaque feuille.
Indirect(Réf du jour;plage nommée de façon normale) le fait à ta place

Le reste est dans le fichier.
Regarde si tu peux en tirer quelque chose.
[file name=ReportTrompetteV4.zip size=17733]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ReportTrompetteV4.zip[/file]
 

Pièces jointes

  • ReportTrompetteV4.zip
    17.3 KB · Affichages: 19
T

Trompette83

Guest
Je viens de lire ton dernier message et je vois que tu passes beaucoup de temps sur mon sujet.

J'ai aussi travaillé, certainement avec moins de compétance et tes conseils me sont très utiles.

J'ai essayé d'utiliser les formules fixes afin de ne pas devoir dupliquer les formules suivant les feuille de la semaine.

Actuellement je suis bloqué par une formule qui plante Excel.

De plus une autre formule qui fonctionne toujours a été modifiée par Excel.

Dans le fichier joint, la feuille Mon est maintenant plus pratique et correspond exactement à mon besoin.
La feuille DocMon (pour Docket Monday of course!!) est bien designee mais la formule de la colonne quantite fonctionne avec une ref fixe.
Il faut la changer en utilisant l'appel de la table TableOrder et la cellule V2. C'est là que ca plante... :silly:

Je vais maintenant étudier ce que tu me propose et apporter le modifs necessaires. Ca prendra du temps

Si tu peux me donner ton avis d'experte sur mon travail. :whistle:
N'hesites pas à critiquer...


Merci et à bientot
[file name=Trompetteexemple2.zip size=11776]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Trompetteexemple2.zip[/file]
 

Pièces jointes

  • Trompetteexemple2.zip
    11.5 KB · Affichages: 2

Monique

Nous a quitté
Repose en paix
Bonjour,

Chez moi, ça frôle le plantage à la moindre validation.
Et ça ne fonctionne pas.
Quand je l'ouvre, j'aperçois 55 ou 555 en G13, puis #REF! partout.
Une fois enregistré, il n'y a plus que des #REF! d'emblée

Il y a des plages que tu devrais renommer
(j'ai essayé sur un autre fichier : échec)
Custo
EndCell
Prod
RefCell
Tu vas dans la feuille 'Mon', tu enlèves les guillemets et tu cliques sur 'Ajouter'

TableOrder, tu devrais enlever le Indirect :
=Mon!$A$2:$AF$35

Excel ajoute le nom de la feuille devant les références :
=Mon!$C$2:$AF$2 pour Custo
Si tu dupliques la feuille, les références changeront automatiquement
Et c'est là que tu pourras (devras) utiliser Indirect, pour appeler soit Mon!C2:AF2 soit Wed!C2:AF2
INDIRECT($V$2&'Custo') si tu as Mon ou Wed en V2
et avec des guillemets autour de 'Custo' (le point d'exclamation en V2 ou entre les guillemets)

Ce que l'on ne peut pas faire avec Indirect (Offset),
c'est 'appeler' une plage qui a été nommée par la fonction Decaler (comme le tableau des prix, par exemple)

'La formule Fprod se trouve amputée'
Excel fait ça tout seul, comme un grand, sans prévenir, avec des formules longues.
Mais ça n'empêche pas la formule de fonctionner
(sauf que ça ne fonctionne pas chez moi)
Un inconvénient : on ne peut plus la lire ni la réparer.
 
T

Trompette83

Guest
Bonsoir à tous et surtout à Monique

J'avance petit à petit mais surement.

Je met en place actuellement les listes deroulantes et j'ai un souci de blanc dans les listes et qq questions dans le fichier joint.

Des questions qui ne doivent pas te poser de pb... Tu es vraiment championne comme je le vois dans ce site.

J'ai cherché le document Le coffretdeslistes N°1 mais je n'arrive pas à le trouver. Je pense qu'il me donnerai beaucoup de renseignements. J'ai le N°2. Très intéressant.

Quand j'aurai terminé mon developpement je le mettrai à dispo.


A bientot [file name=Liste_essai.zip size=2965]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Liste_essai.zip[/file]
 

Pièces jointes

  • Liste_essai.zip
    2.9 KB · Affichages: 10

Monique

Nous a quitté
Repose en paix
Bonjour,

Données avec des blancs :
tu as une formule qui refait ta liste, sans blancs.
Et ta liste de validation est faite à partir de cette 2ème liste

Taille de la police, il y a eu un fil à ce sujet aujourd'hui, mais rien de neuf
Lien supprimé

Client livré et client facturé :
tu as le choix entre 1 liste de validation dans laquelle tu cliques 2 fois,
(1er clic : liste des clients livrés, 2ème clic : client à facturer, 3ème clic : tu repars à zéro)
ou bien une formule

Le 1er coffret des listes est ici :
https://www.excel-downloads.com/resources/le-coffret-des-listes.222/
[file name=ListeTrompette.zip size=4842]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ListeTrompette.zip[/file]
 

Pièces jointes

  • ListeTrompette.zip
    4.7 KB · Affichages: 22

Discussions similaires

Réponses
2
Affichages
990

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 276
Messages
2 086 714
Membres
103 377
dernier inscrit
fredy45