Copie de lignes selon nombre dans cellule

Bonjour à tous,

Je me tourne vers la communauté me trouvant devant un problème que toutes mes lectures de post ici et ailleurs n'ont su résoudre.

Je reçois chaque semaine pour mon travail un tableau de suivi d'avancement de projets (cf fichier joint, onglet 1). Chacun porte un numéro (1 à 600 à ce jour) . Plusieurs lignes d'avancement peuvent concerner un même projet car ils sont sous-découpés en phase. Ce qui veut dire que dans la colonne MAP (B) de mon exemple on peut avoir 2, 3 ou plus projets 1. Mon problème réside dans le fait qu'une même ligne peut aussi concerner plusieurs projets (concernés par une même phase de production) et la version que je reçois compile alors dans la cellule de la colonne B tous les numéros séparés par un tiret : 001-002-003-005-

Pour des raisons de récupération de l'état d'avancement dans un second temps, je souhaite pouvoir automatiser la lecture du nombre de projets concernés par une ligne donnée et, si plus d'un projet sont concernés, copier cette ligne autant de fois que de projets en modifiant à chaque fois le n° de projet => en gros récupérer une ligne avec un état d’avancement par projet...

On trouverait alors le résultat affiché en onglet 2 de mon fichier exemple.

A ce jour je me contente de convertir la colonne MAP en séparant chaque tiret ce qui me donne le nombre de copie nécessaire dans la colonne AJ du premier onglet. Je sais qu'il est possible en VBA de récupérer ce numéro et de copier la ligne selon ce chiffre mais je butte sur la codification de cette action. J'aimerais aussi que chaque cellule de la colonne B récupère le numéro de projet suivant Ligne 1 = projet 1, copie de ligne 1 = projet 2 en colonne B et ainsi de suite.

Quelqu’un aurait la solution ou a minima un début de solution ? Cela m'aiderait énormément !

Bonne journée à tous !

Bonjour,

voici un fichier à tester :

Un énorme merci Melch, quelle rapidité de réponse !!

Oui ça marche parfaitement bien c'est super ! J'ai un nombre de colonne qui peut toutefois varier du coup j'ai rajouté une variable avec dercolS1 afin de passer de 30 à 228 dans ma situation actuelle mais cela semble fausser quelque peu la macro : j'ai l'impression que les données cessent d'être copier à partir de la colonne DF (soit la valeur T36 en en-tête).

M'y suis-je mal pris ? Le mieux serait-il de modifier dans le code cette plage de à à 30 en fonction de na nouvelle étendue à chaque fois ?

Encore un grand merci pour l'aide apportée !

Bonjour,

après avoir regardé le code que tu as mis pour trouvé la dernière colonne, j'ai vu ceci :

    dercolS1 = s1.Cells(3, Cells.Columns.Count).End(xlToLeft).Column 'identifie dernière colonne de la plage BT

Tu demandes donc à Excel d'aller à la fin de la ligne 3, puis tout à gauche.

Le soucis est que la dernière info que tu as en ligne 3 est bien en colonne DE. Je pense que tu t'es simplement trompé ^^

Remplace donc le 3 par un 2

    dercolS1 = s1.Cells(2, Cells.Columns.Count).End(xlToLeft).Column 'identifie dernière colonne de la plage BT

Bonjour Melch,

Oui tu as raison, bête erreur de ma part en décalant d'une ligne.

Ton code marche parfaitement bien, un grand merci à toi !

Bonne journée!

Rechercher des sujets similaires à "copie lignes nombre"