VBP, copier ligne, coller en colonne dans nouvelle feuille

Bonjour à tous.

Je suis novice dans l'utilisation de VBA, mais comme beaucoup, je me lance dans une macro un peu trop compliquée pour mes faibles connaissances. J'espère que vous allez pouvoir m'aider :

J'ai un tableau en feuil1 avec les titres de colonne en 1ère ligne,et plusieurs lignes de données en dessous.

Je souhaite copier et coller la 2ème ligne dans une autre feuille, en transposé, c'est à dire que je veux en colonne A les titres que j'ai dans la "feuil1 ligne 1", et en colonne B ma "feuil1 ligne 2". Cette nouvelle feuille devra être nommer selon la valeur de la cellule D2.

Mon problème est que je souhaite "automatiser", faire une boucle afin que chaque ligne de mon tableau de la feuil1 soit collée dans autant d'onglet individuel, le nombre de ligne variant au cours du temps.

Voici ci-joint le fichier excel avec le début du code que j'ai écris, avec simplement un copier coller de ma ligne 2 afin d'arriver au résultat souhaité dans l'onglet B. Je n'arrive pas à aller plus loin, à automatiser mon code afin qu'il puisse passer à la ligne suivante, tant que j'ai des lignes dans ma feuil1.

J'espère avoir été le plus clair possible et compte sur votre aimable aide et compétence pour m'aider.

Merci beaucoup.

82test-achdeii.zip (25.64 Ko)

Bonjour,

Je n'étais pas sur d'avoir compris l'histoire d'une ligne par onglet donc j'ai fait deux macros, une première qui transpose juste les données de la feuil1 sur une autre (en inversant lignes et colonnes)

Et une deuxième qui va ouvrir un nouvel onglet pour chaque ligne, recopier la première ligne (A,B,C,...) et la ligne actuelle sur un nouvel onglet avec un nom différent :

Onglet2 :

A 1

B 2

C 3

Onglet3:

A 11

B 12

C 13

Et ainsi de suite

121test-achdeiiv1.zip (31.78 Ko)

Bonjour,

proposition de correction

Sub test()

Dim num_ligne As Integer
Dim num_col As Integer

num_ligne = 2
num_col = 2
While Sheets("feuil1").Cells(num_ligne, 1) <> ""

Set shstat = Sheets.Add(After:=Sheets(Sheets.Count))

Sheets("Feuil1").Select
Range("A1:I1").Select
    Selection.Copy
    shstat.Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True

Sheets("Feuil1").Select
    Rows(num_ligne).Copy
shstat.Select
 Columns("B:B").Select
 Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=True
    shstat.Name = shstat.Range("B1").Text
num_ligne = num_ligne + 1

Wend
End Sub

Merci pour ta réponse Thimote, je souhaitais avoir ta 2ème macro, 1 ligne par onglet, donc c'est parfait.

J'ai testé sur mon fichier, ça marche.

Un autre problème me vient à l'esprit : comment effectuer la macro sur les nouvelles lignes qui seront ajoutées au tableau initial, sans qu'elle soit ré-effectuer sur les 1ères lignes?

Re, une solution à améliorer je pense :

-Ajout d'une boucle sur chaque onglet, pour voir s'il éxiste déjà (par rapport à la création du nouvel onglet), sinon on fait la transposition

PS: Si le nombre de colonnes augmente, il ne fera pas la différence, étant donné qu'il ne compare que le nom de l'onglet et pas le contenu (d'où le "à améliorer")

154test-achdeiiv1.zip (16.94 Ko)

Bonjour.

Bon c'est parfait, merci beaucoup, je suis arrivé au résultat souhaité.

Rechercher des sujets similaires à "vbp copier ligne coller colonne nouvelle feuille"