Extraction de partie de feuilles

Bonjour,

Ce message a été posté par ailleurs sur une autre partie du forum. Autant pour moi, je me suis trompé d'interface...

J'ai cherché un peu partout mais je n'ai pas trouvé de réponses à une besoin simple dont la réponse l'est peut-être d'ailleurs aussi. Je suis pas très fortiche en Excel mais ça m'ennuie de ne pas trouver de réponse et de vous embêter pour m'aider à résoudre ce problème.

Alors voilà, selon le fichier joint, je voudrais séparer les familles de produits sur d'autres feuilles. Chaque famille devra comporter les éléments associées par colonne (type d'équipement, prix,...).

De plus, chaque feuille dédiée à chaque famille devra comporter les intitulés de base sur la 1ère ligne. Ceux-ci sont destinés à la création de TCD.

Autre contrainte, la feuille initiale sera alimentée régulièrement. Aussi, je souhaiterais que les feuilles par famille soient de fait, alimentées, automatiquement.

Pour résumer, il s'agit d'avoir une recopie automatique par famille de produit.

Sur le fichier, la feuille 1 correspond à la base ; la feuille 2 à un exemple d'extraction.

J'espère que vous aurez compris ma requête.

Un grand grand merci !!!

Lafuria

Edit Dan : enlevé majuscules dans titre du sujet

22exemple.xls (17.50 Ko)

Bonjour,

La liste des familles est-elle figée (ici 9 familles) ?

ou faudra-il la réactualiser à chaque fois

Amicalement

Claude

édit:

Je ne connais pas bien les TCD, mais il me semble que tu pouvais le faire directement

avec la base actuelle

Bonjour,

A priori, le nb de familles sera tjs le même. elles seront juste alimentées par de nouvelles entrées avec les infos de type d'équipement, prix,...

J'ai un TCD pour la base initiale et qui fait office d'interface utilisateur. J'ai mis les éléments famille et type d'équipement en champ de page pour filtrer sauf que les 2 filtres ne se conditionnent pas entre eux. Du coup, le filtre type d'équipement regorge de libellés, ce qui n'est pas très ergonomique. Et donc, sans solution interne au TC vis-à-vis de ce pb, je me suis résolu à éclater chaque famille pour faire un TCD par famille tout en rentrant chaque nouvelle ligne sur un seul tableau global.

Bien à vous,

Lafuria

re,

Je te laisse le soin de nommer les feuilles,

mais il faut qu'elles soient placées en position 2 à xxx (derrière feuille "Base")

La macro réactualise la feuille "Listes"(après les feuilles d'extraction)

Sub CréeFeuilles()
'Macro par Claude Dubois pour "Lafuria" Excel-Pratique le 2 Sept 2010
Dim Lg%, i%
        Application.ScreenUpdating = False
        '---- réactualise la liste des familles ----
    With Sheets("Listes")
        Range("a1:a" & [a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CopyToRange:= _
        .Range("a1"), Unique:=True
        .Columns(1).Sort Key1:=.Range("a1"), Order1:=xlAscending, _
        Header:=xlYes, OrderCustom:=1, MatchCase:=False
        Lg = .Range("a65536").End(xlUp).Row

        '---- extractions ----
        For i = 2 To Lg
            With Sheets("Base")
                .Range("h1") = Sheets("Listes").Cells(i, 1)
                .Range("a1:e" & [a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
                .Range("i1:i2"), CopyToRange:=Sheets(i).Range("a1:e1"), Unique:=False
            End With
        Next i
    End With
End Sub

Amicalement

Claude

J'ai essayé, cela marche très bien. Je vous en suis très gré, vous m'enlevez une grosse épine du pied.

Une dernière chose : si j'insère dans la base des nouvelles colonnes avec d'autres libellés, cela change t'il qqchose au code ? Si oui, ne vous en faites pas, je les mettrai après les colonnes existantes.

Ce que je vous ai demandé est un exemple dans lequel je ne pouvais pas donner certaines infos confidentielles. Il me fallait un exemple pour pourvoir l'adapter. Je pense que je saurai me débrouiller pour l'adapter.

Très cordialement,

LF

re,

Vaudrait mieux que tu me dise jusqu'à quelle colonne tu compte étendre la base,

Je corrige la macro en conséquence.

L'idéal serait d'ajouter 2 lignes en haut de la feuille "Base"

dis-moi

Claude

Bonjour Claude,

Excusez-moi pour le délai de réponse. J'ai qques soucis de connexion.

Voici sur ce fichier toutes les colonnes dont j'aurai besoin.

Bien à vous,

LF.

16classeur1.xls (13.50 Ko)

Bonjour,

Où sont les familles ?

merci d'envoyer un fichier un peu + sérieux !

Claude

Excusez-moi, je me suis trompé de fichier...

Pour des raisons de confidentialité, j'ai changé les noms commerciaux qui peuvent apparaître sur le fichier original.

Merci !

10classeur1.zip (22.23 Ko)

re,

Comme demandé précédemment, il faudrait ajouter 3 lignes en haut

pour l"emplacement boutons et critères

dis si ok ?

claude

Bonjour Claude,

Je n'y vois pas d'inconvénient.

Merci encore,

LF

Bonjour,

Même principe,

Je te laisse le soin de nommer les feuilles,

mais il faut qu'elles soient placées en position 2 à xxx (derrière feuille "Données")

La macro réactualise la feuille "Listes"(après les feuilles d'extraction)

Sub CréeFeuilles2()
'Macro par Claude Dubois pour "Lafuria" Excel-Pratique le 6 Sept 2010
Dim Lg%, i%
        Application.ScreenUpdating = False
        '---- réactualise la liste des familles ----
    With Sheets("Listes")
        Range("d4:d" & [d65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CopyToRange:= _
        .Range("a1"), Unique:=True

        .Columns(1).Sort Key1:=.Range("a1"), Order1:=xlAscending, _
        Header:=xlYes, OrderCustom:=1, MatchCase:=False
        Lg = .Range("a65536").End(xlUp).Row
    End With
        '---- extractions ----
        For i = 2 To Lg
            With Sheets("Données")
                .Range("i1") = Sheets("Listes").Cells(i, 1)
                .Range("a4:j" & [a65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
                .Range("j1:j2"), CopyToRange:=Sheets(i).Range("a1:j1"), Unique:=False
            End With
        Next i
End Sub

Amicalement

Claude

Merci de vos efforts, Claude. Cependant, sans vouloir trop vous embêter, une dernière petite chose, j'ai modifié les noms des classeurs (au nom de chaque famille) et, de fait modifié le code pour afficher le nom de la Feuille Armoire-Coffret en lieu et place de la feuille 2.

J'ai écrit ceci cependant ça ne fonctionne pas. Il doit y avoir un pb de syntaxe :

'---- extractions ----

For i = Armoire-Coffret To Lg

en lieu et place de :

'---- extractions ----

For i = 2 To Lg

Désole de vous enquiquiner, j'ai des connaissances faibles en matière de VB.

LF

Non, les extractions doivent commencer à la feuille 2 (derrière "Données")

ok, compris.

Un grand merci, Claude !

re,

Peux-tu nous dire l'intérêt de faire çà ?

Claude

En effet, c'est intéressant pour les intervenants du forum.

A vrai dire, j'ai voulu directement aborder une solution alternative avec vous en éludant le problème primaire que je ne suis pas arrivé à résoudre. Lequel est le suivant : la base principale me sert originellement à créer un TCD dont l'usage est un interface utilisateur. Il est assez simple : l'utilisateur choisit un type d'équipement en champ de page pour obtenir un prix moyen et les informations associées. Sauf que le nombre de type d'équipement est trop important et j'ai dû décomposer les types d'équipement en famille en pensant que le filtre famille (également en champ de page) conditionnerait le type d'équipement par famille (comme un filtre simple sur une feuille simple). Or, ce n'est pas le cas, même si on choisit une famille, tous les types d'équipement apparaissent.

Et pour des raisons d'ergonomie et de mise en forme, je dois laisser les filtres de choix en champs de page.

Donc, j'ai envisagé de faire un TCD par famille. D'où, l'utilisation de votre code car alimenter famille par famille est peu aisé. Alimenter la base doit se faire simplement pour celui qui gère cette base.

J'ai déjà demandé sur ce forum et même sur d'autres, et personne n'a pu trouver de solutions à cette histoire de filtres conditionnels en champ de page. Dommage, cette fonctionnalité n'a pas été développé par MS alors que ça aurait été si efficace.

Voilà voilà !

LF

re,

Personnellement j'aime pas trop les TCD,

j'aurai fait comme ci-joint (une simple liste)

Claude

Oui, c'est intéressant mais je dois laisser des lignes vides pour chaque TCD correspondant à une famille, c'est pourquoi je préfère les avoir sur des feuilles distinctes.

Je dois faire des TCD pour des questions de traitement de données chiffrés plus rapide et pour une question de présentation.

Merci d'avoir réfléchi à mon problème et d'y avoir apporté une solution.

ok, Pour solder le poste c'est ici

a resolu2
Rechercher des sujets similaires à "extraction partie feuilles"