Excel VBA : segmenter un fichier et copier dans un nouveau

Fermé
yannickroulin Messages postés 3 Date d'inscription jeudi 29 novembre 2012 Statut Membre Dernière intervention 11 décembre 2012 - 10 déc. 2012 à 13:49
yannickroulin Messages postés 3 Date d'inscription jeudi 29 novembre 2012 Statut Membre Dernière intervention 11 décembre 2012 - 11 déc. 2012 à 15:04
Bonjour,

J'ai un feuille excel avec 3 colonnes :
1. Les noms de recettes
2. Les ingrédients
3. La préparation

Ces colonnes ne sont pas toujours pleines. Toutes les indications pour une recette se situent entre la ligne du nom de la recette et la ligne précédent le nom de la recette suivante.

J'essaie de créer un formulaire avec ListBox à selection multiple (qui contient les noms des recettes). L'utilisateur choisi les recettes qui l'intéresse et le programme doit recopier dans un nouveau fichier (toujours sur 3 colonnes) uniquement les recettes selectionnées les unes à la suite des autres.

J'ai pensé à utiliser un "Scripting.Dictionary". Les clefs étants les noms des recettes (qui apparaissent dans la ListBox), les valeurs étants des objets Range qui contiennent les zones de chaque recette à recopier.

Mes tentatives ont été infructueuses, j'ai bien peur d'avoir inutilement compliqué le problème dans mon approche.

Quelqu'un a-t-il une idée à me proposer?

Yannick

A voir également:

4 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
11 déc. 2012 à 10:58
Bonjour,

Pas sûr de l'intérêt d'un dictionary vu que tu n'as pas de doublon.
J'ai peut-être raté qcq chose mais je ferais comme ça :
Public Sub UserForm_initialize()
    Dim dernLigne As Long, c As Range
    With Sheets("Recettes")
        dernLigne = .[A:A].Cells(Rows.Count, 1).End(xlUp).Row
        ListBox1.Clear
        For Each c In .Range("A3:A" & dernLigne).SpecialCells(xlCellTypeConstants, 23)
            ListBox1.AddItem c
        Next c
    End With
End Sub 
qui permet de ne boucler que sur les cellules utiles.

eric
1
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
10 déc. 2012 à 15:02
Bonjour,

Peut-être qu'avec un fichier de travail avec ce que tu as fait on arrivera à réfléchir.
Déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

eric
0
yannickroulin Messages postés 3 Date d'inscription jeudi 29 novembre 2012 Statut Membre Dernière intervention 11 décembre 2012
11 déc. 2012 à 08:42
Bonjour,

j'ai réussi à résoudre une bonne partie du problème : je n'avais pas déclaré mon "Scripting.Dictionary" dans un module standard ce qui fait que la portée de cet objet était insuffisante. Néanmoins je trouve mon code fichtrement compliqué.

Pour info :

https://www.cjoint.com/?BLliNUBzi3e

Salutations
Yannick
0
yannickroulin Messages postés 3 Date d'inscription jeudi 29 novembre 2012 Statut Membre Dernière intervention 11 décembre 2012
11 déc. 2012 à 15:04
Bonjour,

Merci pour ce post, débutant en vba, je ne connaissais pas bien la méthode SpecialCells. ça simplifie bien les choses

Salutations

Yannick

:Résolu:
0