Insérer dans un tableau en fonction d'un critère

Bonjour,

Je me permet de revenir vers vous car je me retrouve (encore) confronté à un problème que je n'arrive pas à résoudre.

Je pense qu'il faut utiliser les fonctions matricielles mais je bloque complètement...

Voici mon problème :

  • J'ai 2 feuilles
  • Sur la première feuille j'ai un tableau avec des produits en liste dans la première colonne, des référence en 2eme colonnes et une colonne "strate" qui me liste la strate auquel appartient un produit.
  • Sur la deuxième feuille j'ai un tableau avec les numéro de strates en titre de colonne et la liste des produits qui appartiennent a cette strate.

J'aimerais que le 2eme tableau se remplisse automatiquement en fonction du premier. (Si le produit est sur la Strate01 dans le 1er tableau, alors l'écrire dans la colonne Strate01 du 2eme tableau)

Autre question, imaginons que dans mon premier tableau j'ai un produit qui appartient à 2 strates. Est il possible de le faire apparaitre dans les 2 colonnes ? Comment l'écrire dans le premier tableau ? ("Strate01 et 02", "Strate01 et Strate02", "1 ; 2", ....)

Merci d'avance pour votre aide.

Ci-joint, un fichier qui montre le résultat voulu.

Bonne journée.

C.

13demande-aide.xlsx (25.13 Ko)

Salut,

Je te conseille d'éviter ça :

Autre question, imaginons que dans mon premier tableau j'ai un produit qui appartient à 2 strates. Est il possible de le faire apparaitre dans les 2 colonnes ? Comment l'écrire dans le premier tableau ? ("Strate01 et 02", "Strate01 et Strate02", "1 ; 2", ....)

car, dans un premier temps, tu exposes un cas assez facile à résoudre, on s'y intéresse donc, et boum, tu le rends infernal avec ton "autre question".

Et pourquoi pas dessiner un petit bonhomme vert qui s'agiterait sur la ligne 12 au passage de la souris ?

Donc, je te suggère d'exposer ton problème clairement, de rouler quelque temps avec les solutions qui te seront proposées et tu pourras aller plus loin si nécessaire, avec une et une seule nouvelle question dans un nouveau post.

A+

H

Bonjour,

Une procédure (macro) de remplissage du Tableau 2 à partir des données du Tableau 1 est possible... Reste à définir les conditions de mise à jour : lancement sur demande (et retraitement d'ensemble ou seulement des nouveaux items), lancement automatique (sur quel critère), lancement sur modification ou introduction d'un élément nouveau...

Si un produit appartient à plusieurs strates, il te faut un code strate susceptible d'en inclure plusieurs. Deux méthodes possibles :

  • un code littéral : on affecte les lettres A à G aux strates 1 à 7, le code comprendra une ou plusieurs lettres...
  • un code numérique : on affecte à chaque strate 1 à 7 un nombre correspondant à une puissance de 2 : 1, 2, 4, 8, 16, 32, 64. Et pour associer plusieurs strates on additionne les nombres correspondant : 19 par exemple, indiquera les strates 1, 2 et 5...
(Méthode qui permet un traitement particulièrement rapide...)

Cordialement.

Bonjour,

Merci pour vos réponse.

En effet je vois que mon autre question est assez complexe

En fait c'était vraiment "juste" une question car en pratique je peux m'en passer largement. C'était vraiment donc uniquement un questionnement sur la faisabilité.

Le plus important pour moi étant le remplissage automatique du tableau de la feuille 2 car la saisie des produits ne se fait que dans la première feuille.

Merci d'avance.

C.

Il convient que tu définisses les modalités précises de cet "automatisme" !

Et bien en fait c'est un peu ce que j'explique dans ma première demande

Voici comment je fonctionne :

Je remplie la feuille1 avec le produit (par ordre alphabétique) en colonne A, la références en colonne B, les données annexes dans d'autres colonne et enfin le numéro de strate (Strate1, Strate2, ...) en colonne K.

Dans la deuxieme feuille, les produits eux sont classés dans des colonnes par numéro de strates. Colonne 1 avec les produits de la strate1, colonne 2 la strate2, ...

J'aimerais, par exemple, que la colonne Strate1 de la feuille2 puisse aller me chercher tous les produits et références ou il y a Strate1 de noté dans la feuille1.

En gros ça donnerai : SI dans feuille1 colonne K tu trouve une ligne contenant strate1 alors tu écrit la valeur de la colonne A de cette même ligne dans la feuille2 colonne 1 et ainsi de suite (mais avec des SI ça serait ingérable, c'est pour ça que je pensais à des fonctions matricielles mais là je ne maitrise pas...).

Le résultat que j'aimerais avoir est comme j'ai mis dans mon fichier exemple.

Merci d'avance.

Si ton idée est de procéder par formules, c'est bien sûr faisable (formules matricielles bien sûr)...

Il y aura bien quelqu'un de partant pour concocter ces formules... Il te suffit d'attendre.

Pour ma part, j'opterais pour une solution VBA, justement pour éviter un nombre destiné à grandir de formules lourdes... D'où ma question sur le mode de mise en oeuvre de la mise à jour... Mais la décision t'appartient.

Cordialement.

Re,

Voici une proposition basée sur le filtre avancé :

Sub M_Filtrer()
Dim I As Integer
Dim Source As Range

Set Source = Sheets("Liste").Range("A9").CurrentRegion
For I = 1 To 13 Step 2
    Source.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range(Cells(1, I), Cells(2, I)), CopyToRange:=Range(Cells(3, I), Cells(3, I + 1)), Unique:=False
Next

End Sub

Il s'agit d'extraire les données de ta feuille Liste en fonction des critères contenus sur la ligne 2 du tableau :

Par exemple pour la strate1 tu auras tous les produits dont la strate contient le chiffre 1 => *1*

Cela devrait permettre d'attribuer plusieurs strates à un produit. J'ai testé le produit06 avec les strates 2 et 3.

7filtrer.xlsm (34.90 Ko)

A+

H

Bonjour,

Merci pour ce code.

En effet cela fonctionne sur le fichier que vous m'avez envoyé. Par contre je n'arrive pas à l'appliquer à mon fichier et ... je ne comprend pas grand chose aux macros....

J'avais alléger mon fichier exemple pour que vous n'ayez pas à vous servir des ascenseurs.

J'ai une erreur sur la ligne :

Source.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range(Cells(1, I), Cells(2, I)), CopyToRange:=Range(Cells(3, I), Cells(3, I + 1)), Unique:=False

Je pense que mon problème vient du fait que ma colonne "strate" de la feuille 1 est sur la colonne K dans l'exemple que je vous ai donné. Hors dans mon fichier elle est sur la colonne Z.

Je vais continué à plancher sur les fonctions matricielles pour voir si j'arrive à faire quelque chose avec ça (le fichier sera à terme diffuser à plusieurs personnes, j'ai peur que tout le monde ne sache pas activer de macro ou qu'ils aient des versions trop ancienne. Du coup si je peux trouver un maximum de choses par formule ça serait bien.).

Cependant même si je vais continuer à chercher pour des formules, je veux bien savoir à quoi est dut l'erreur, histoire de comprendre un peu

En tout cas merci beaucoup.

Bonne journée.

C.

Salut,

La position de la colonne "Strate" n'a pas d'importance, c'est son nom qui compte pour le filtrage.

Place-toi sur A9 et fait Ctrl A (sélection de la source). Vérifie que la sélection commence bien sur la ligne 9 (ligne d'en-tête) et que la colonne Z en fait bien partie.

Pour ce qui concerne l'utilisation des macros, rien de bien compliqué, il suffit de cliquer sur le bouton de commande.

A+

H

OK.

Donc Ctrl+A en A9 me donne bien toute la zone (jusqu'à la colonne AB). Je ne vois pas quoi faire après (et oui quand je dis que je n'y connais rien en macro, c'est pas des blague ).

L'erreur que j'ai est :

Erreur d'execution '1004':

Le nom du champ est incorrect ou manquant dans la zone d'extraction.

Et lorsque j'ouvre le débogage, il surligne les lignes :

Source.AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Range(Cells(1, I), Cells(2, I)), CopyToRange:=Range(Cells(3, I), Cells(3, I + 1)), Unique:=False

Cordialement.

C.

Re,

Les noms de champs utilisés par le filtre sont Strate, Titre1 et Titre2.

Il faut que ces noms soient identiques dans la source (feuille Liste), dans la zone critères (Tableau ligne 1)

et pour le "copier dans" (Tableau ligne 3)

Attention, pas de cellules fusionnées.

Si l'erreur persiste, il faudra que tu fasses passer le fichier.

A+

H

Rechercher des sujets similaires à "inserer tableau fonction critere"