Associer 1 nom étalé sur plusieurs colonnes à une autre feuille

Fermé
Metaux Messages postés 47 Date d'inscription mardi 16 juin 2015 Statut Membre Dernière intervention 13 octobre 2016 - 17 juin 2015 à 17:16
Metaux Messages postés 47 Date d'inscription mardi 16 juin 2015 Statut Membre Dernière intervention 13 octobre 2016 - 22 juin 2015 à 14:21
Bonjour,

Je vais tenter d'être claire !
Référez-vous à mon fichier : https://www.cjoint.com/c/EFrppWY8130

Lorsque je suis sur la feuille ``Listing regroupée``, j'ai différentes colonnes (Profilé, Dimension et Longueur).

En partant de ``Listing regroupée``, je voudrais que dans un 1er temps, Mon fichier reconnaisse ma colonne profilé et l'associe à l'une des différentes autres feuilles (``L`` ou ``HSS``) qui porte le même nom.

Une fois associée à la bonne feuille, je voudrais qu'il associe par la suite ma 2e colonne ``Dimension`` (fractionnée en 5) à la bonne ligne de la feuille en question.

Exemple:

Sur ``Listing regroupée`` en (B6) on retrouve le profil L, Je veux donc qu'il se rendre sur la feuille ``L`` pour qu'ensuite, parmi toute les dimensions il associe la bonne ligne (C6,E6 et G6) de la feuille ``Listing regroupée`` à la bonne ligne (Bi, Di et Fi) feuille de la ligne ``L`` PS. i représente la bonne ligne qu'il doit associer.

L'objectif est donc d'entrer la longueur inscrite dans la feuille``Listing regroupée`` dans la cellule située au croisement de la colonne (longueur (pi)) et de la bonne ligne i, sur la bonne feuille ``L`` ou ``HSS``
  • sur mon fichier j'ai mi en rouge un exemple de ce que le fichier doit faire mais automatiquement !


Soit en macro ou par formules ... pour autant que ce soit automatique :P !!

Merci de votre précieuse aide !!


1 réponse

eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 19 mai 2024 7 217
17 juin 2015 à 23:53
Re,

la suite donc...
Fait par fonction personnalisée à mettre dans un module standard.
Faire F9 sur les feuilles où est la fonction si tu changes les valeurs dans les feuilles de profilés. Peut-être automatisé mais au prix d'un petit ralentissement et de réponses à des questions. Comme ce n'est pas dit qu'elles évoluent souvent, tu dis...
A tester : https://www.cjoint.com/c/EFrvVfZcCyl

eric

0
Metaux Messages postés 47 Date d'inscription mardi 16 juin 2015 Statut Membre Dernière intervention 13 octobre 2016
18 juin 2015 à 15:40
Salut !! en 1er merci bcp de prendre de ton temps pour m'aider, tu as surement déjà compris que je ne suis pas vrm fort en programmation !

J'essaie de comprendre la logique de ta macro.. et je n'y arrive pas !

Peut-être que j'ai trop décris dans mon dernier post pour ce que je voulais réellement alors je tente à nouveau de m'expliquer et tu me diras si tu parviens à me comprendre ;)

Si on prend mon fichier, j'aimerais qu'excel transfert chacune de mes données inscrites dans les cellules de la colonne H de ma feuille ``Listing regroupée`` vers les bonnes cellules des colonnes O des feuilles ``L`` ou ``H``

La manière de retracer s'il s'agit de la feuille ``L`` ou ``H`` sera en fonction de la colonne B de ma feuille ``Listing regroupée``

Ensuite une fois la bonne feuille retracée, à l'aide des dimensions écrites dans les cellules (C, D, E, F, et G) d'une même ligne de ma feuille ``Listing regroupée`` il doit retrouver cette même information parmi la bonne feuille retracée pour ensuite entrer la donnée de la colonne H de la feuille ``Listing regroupée`` dans la colonne O de la bonne feuille retracée

Exp. 1 : (si on prend la ligne 8 de ``Listing regroupée``), c'est B8 qui me dit que je dois aller dans la feuille ``L```, Excel va associer C8,D8,E8,F8 et G8 de la feuille ``Listing regroupée``à B7,C7,D7,E7 et F7 de la feuille ``L`` pour ainsi entrer la valeur de H8 (soit 30) de la feuille ``Listing regroupée`` dans la cellule O7 de la feuille ``L``

Exp. 2 : (si on prend la ligne 13 de ``Listing regroupée``), c'est B13 qui me dit que je dois aller dans la feuille ``HSS```, Ensuite Excel va associer C13,D13,E13,F13 et G13 de la feuille ``Listing regroupée``à B19,C19,D19,E19 et F19 de la feuille ``HSS`` pour ainsi entrer la valeur de H13 (soit 40) de la feuille ``Listing regroupée`` dans la cellule O19 de la feuille ``HSS``

MErci !
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 19 mai 2024 7 217
Modifié par eriiic le 18/06/2015 à 17:05
Bonjour,

Oui, oui, je pense que c'est bon. J'ai peut-être été avare en explications, je pensais que tu pouvais connaitre.

Une fonction personnalisée est une fonction que tu écris en vba. Une fois réalisée elle s'utilise sur une feuille comme une fonction native d'excel.
Il faut donc décider quels paramètres elle doit recevoir, lui faire faire les calculs, et elle retourne le résultat dans la cellule.
Regarde sa déclaration dans Module1 :
Function longueur(profilé As String, dim1 As Single, dim2 As Single, dim3 As Single)
elle veut donc en paramètre le profilé et les 3 dimensions.
Syntaxe sur la feuille en H6 :
=longueur(B6;C6;E6;G6)
ce qui donne :
=longueur("L";1/2;1/2;1/8)
: va chercher dans la feuille "L" la ligne avec ces 3 dimensions et retourne moi la longueur qui est en O.
Bon, comme tu n'as pas rempli grand chose sur tes tableaux elle retourne surtout "inconnu" ou 0. J'ai ajouté en ligne 8 une erreur de feuille (LL) que tu vois qu'elle est traitée
Tu tires la formule vers bas pour les autres lignes, pareil que les fonctions excel.
En H13 tu vois qu'elle retourne bien 40 (c'est la seule ligne que tu avais préparée en fait. J'ai bien ajouté des valeurs dans HSS!O mais comme toutes les autres lignes sont sur L...)

Dans le code tu as :
        datas = .[B5].Resize(.Cells(Rows.Count, 2).End(xlUp).Row - 4, 5).Value
lon = .[O5].Resize(UBound(datas, 1))

sur tes feuilles L, HSS, etc il faut respecter l'emplacement des données qu'elle a besoin, en dur dans le code :
- les dimensions à partir de B5 sur 5 colonnes
- longueurs à partir de O5, autant de lignes
Sinon adapter le code.

C'est mieux ?

eric
0
Metaux Messages postés 47 Date d'inscription mardi 16 juin 2015 Statut Membre Dernière intervention 13 octobre 2016 > eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 19 mai 2024
18 juin 2015 à 17:15
La ligne :
va chercher dans la feuille "L" la ligne avec ces 3 dimensions et retourne moi la longueur qui est en O.

Est-ce que tu pourrais modifier dans l'autre sens Du genre :

Va porter dans la feuille ``L`` à la ligne avec ces 3 dimensions, la longueur qui est en H
0
Metaux Messages postés 47 Date d'inscription mardi 16 juin 2015 Statut Membre Dernière intervention 13 octobre 2016
18 juin 2015 à 17:17
Parce que c'Est ce qui ce trouve en H sur la feuille ``Listing regroupée`` que je dois reporter à la bonne place dans les feuilles ``L`` ou ``HSS`` !!
0
eriiic Messages postés 24571 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 19 mai 2024 7 217
Modifié par eriiic le 18/06/2015 à 17:48
Est-ce que tu pourrais modifier dans l'autre sens Du genre :
Va porter dans la feuille ``L`` à la ligne avec ces 3 dimensions, la longueur qui est en H

Ah, je ne l'avais pas lu du tout comme ça, même si c'était bien écrit. Le plus souvent on récupère des données d'une table...
On peut, mais ça n'a plus rien à voir au niveau code.
Pourquoi tu ne modifies pas directement la feuille du profilé ? Tu n'aurais pas 5 trucs à saisir mais juste la longueur.

Ou bien tu ne gardes que la 1ère feuille et tu filtres par profilé quand tu n'en veux qu'un seul. Dupliquer les données est rarement bon et utile, et de toute façon tu ne peux lire qu'une feuille à la fois.
Tes autres feuille ont qq chose de plus que tu ne peux pas représenter sur la 1ère ?

eric
0