Répartir cellule en plusieurs lignes

Bonjour,

Nouveau sur le forum, j'aurai réellement besoin de votre aide car je sèche complètement ...

Désolé pour ce nom qui est pas forcément très compréhensible mais voici ma problématique, je désirerai éclater une cellule / lignes contenant des mots ou expressions plus ou moins longs séparés par des virgules en plusieurs lignes et également réussir à annoter un numéro d'ID (recette) et une référence (source) de ligne sur chacune de ces lignes nouvellement crées.

Exemple en B2 : Tomate, Cerise, Poivron Vert, Courgette, Haricot Rouge

et en A2 : Recette 1 (ID) et C2 : Marché, Grande Surface (Source)

Je souhaiterai avoir sur une autre feuille et dans l'idéal en ne recourant qu'à des formules :

A2 : Recette 1 / B2 : Tomate / C2 : Marché

A3 : Recette 1 / B3 : Cerise / C3 : Marché

A4 : Recette 1 / B4 : Poivron Vert / C4 : Marché

A5 : Recette 1 / C5 : Courgette / C5 : Marché

A6 : Recette 1 / C6 : Haricot Rouge / C6 : Marché

A7 : Recette 1 / B7 : Tomate / C7 : Grande Surface

A8 : Recette 1 / B8 : Cerise / C8 : Grande Surface

A9 : Recette 1 / B9 : Poivron Vert / C9 : Grande Surface

A10 : Recette 1 / B10 : Courgette / C10 : Grande Surface

A11 : Recette 1 / B11 : Haricot Rouge / C11 : Grande Surface

Vous trouverez ci-après un fichier résumant ma demande qui je le pense serait plus explicite.

Merci par avance pour votre aide,

Quentin

Bonjour,

une solution via une macro

Sub aargh()
    Set ws = Sheets("tableau_désiré")
    ws.Cells.ClearContents
    ws.Range("A1").Resize(, 3) = Split("ID,Ingrédient,Source", ",")
    col = 0
    lig = 1

    With Sheets("data")
        dernier_ID = .Cells(Rows.Count, 1).End(xlUp).Row
        For ID = 2 To dernier_ID
            tableau_produit = Split(.Cells(ID, 2), ",")
            tableau_source = Split(.Cells(ID, 3), ",")
            For Source = LBound(tableau_source) To UBound(tableau_source)
                For produit = LBound(tableau_produit) To UBound(tableau_produit)
                    lig = lig + 1
                    ws.Cells(lig, col + 1) = .Cells(ID, 1)
                    ws.Cells(lig, col + 2) = tableau_produit(produit)
                    ws.Cells(lig, col + 3) = tableau_source(Source)
                Next produit
            Next Source
        Next ID
    End With
End Sub

Bonjour,

Je viens de prendre connaissance de ton fichier c'est top @h2so4.

Il y a un point que j’ai réussi à voir par moi même, cela concerne la rédaction du contenu de la cellule B (ingrédients), faisant appel à une fonction concatener (mais comment gérer les trous dans la liste qui posent un problème lors de la ré-écriture).

Par contre, j’aurai également deux petites questions, est-ce que on pourrait imaginer que le tableau s’agrandissent tout seul sans être obligé d’étirer les cellules. Vois-tu d’ailleurs également une autre solution sans être obligé de passer via une macro, dans l’idéal il faudrait que le fichier puisse s’actualiser sans action humaine.

D’autre part, est-ce que l’on pourrait si je rajoute une autre colonne par exemple avec la commande faite ou non saisir automatiquement dans la colonne (E - F - G - H) la data / heure au moment ou cela a été fait ?

J’essai de trouver une solution de mon côté également mais je sèche un peu …

Merci par avance pour ton aide,

Bonne réception,

P.S Ci-joint le fichier à nouveau ou il y a déjà eu quelques autres modifications.

Bonjour,

fichier adapté

ajout automatique de la date

macro adaptée pour gérer les données vides

@h2so4,

C'est top ce que tu as mis en place. J'ai essayé de décortiquer ta macro en plusieurs étapes pour voir comment je pourrai l'adapter si demain je dois par exemple rajouter une autre colonne du type "Ingrédient", "Source" mais je ne comprends pas très bien comment faire.

Cette macro se lance-t-elle automatiquement.

Je voulais partager mon fichier en collaboratif en le mettant sur Google Sheet mais ils viennent de me dire que la macro n'était pas utilisable en tant que tel, il faut qu'elle soit en JS et non pas en VBA.

Connais-tu un moyen pour faire cela ?

Bonne réception,

Quentin.

@h2so4,

C'est top ce que tu as mis en place. J'ai essayé de décortiquer ta macro en plusieurs étapes pour voir comment je pourrai l'adapter si demain je dois par exemple rajouter une autre colonne du type "Ingrédient", "Source" mais je ne comprends pas très bien comment faire.

je peux mettre des commentaires dans le code

Cette macro se lance-t-elle automatiquement.

non, mais je pourrais faire en sorte qu'elle se lance dès qu'il y a un changement dans ID, ingrédient ou source, mais cela rsique d'être lourd si tu as beaucoup de données...

Je voulais partager mon fichier en collaboratif en le mettant sur Google Sheet mais ils viennent de me dire que la macro n'était pas utilisable en tant que tel, il faut qu'elle soit en JS et non pas en VBA.

c'est correct d'après ce que je connais de google sheets

Connais-tu un moyen pour faire cela ?

he bien je suppose qu'il faut connaître le modèle objet de google sheets et se mettre au JS.

Merci, je vais voir comment je peux faire dans ce cas par rapport au Google Drive.

Oui si tu pouvais me faire suivre un macro qui se lance automatiquement et un code commenté se serait topissime.

Encore merci pour ton aide,

Bonne réception

Bonjour,

voici le fichier avec les adaptations

Rechercher des sujets similaires à "repartir lignes"