Comment Copier/coller plusieurs lignes sur une seule ligne?

Bonjour,

Nous sommes 4 étudiantes et nous travaillons sur un projet de création de base de données Excel.

Nous rencontrons aujourd'hui un problème. En effet, nous souhaitons copier/coller plusieurs lignes sur une seule et même ligne. Or nous n'avons pas quelques lignes mais plutôt des centaines de lignes et peu de temps pour fabriquer cette base de donnée. Il faut donc que l'on trouve un moyen plus rapide d'effectuer cette tache.

Après plusieurs recherches, nous pensons plutôt a créer un "VBA". Or ce domaine nous est un peu inconnu.

Pouvez vous nous aider a créer ce VBA? Ou connaissez vous un autre moyen de faire cette manipulation?

Afin de facilité la compréhension de notre problème, nous mettons en pièce jointe un fichier X (car notre sujet est confidentiel) qui présente ce que nous avons et ce que nous souhaitons.

Merci

Bonjour,

copier/coller des centaines de lignes sur une seul ligne ??? pas clair si à chaque copie tu écrase la ligne précédente il te suffit de copier la dernière ligne

Bonjour,

Nous avons joint un fichier afin d'être plus clair.

Notre objectif est en réalité de mettre une ligne d'information a coté d'une autre ligne d'information. Comme vous pouvez le voir sur le fichier, nous avons une liste de chiffre et nous voudrions que la liste de lettre viennent a coté de la liste de chiffre....

Sauf que nous n'avons pas qu'une seule liste mais plusieurs donc le copier/coller est assez fastidieux.

C'est assez difficile a expliquer, regardez le fichier

Merci

Bonjour,

si j'ai bien compris il faut copier les cellules non vides de toutes les lignes à la fin de la première ligne.

voici une macro qui atteint cet objectif :

Sub aargh()
    Set ws1 = ActiveSheet
    nl = ws1.Cells(Rows.Count, 1).End(xlUp).Row
    Set ws = Worksheets.Add
    ws.Name = "résultat"
    dc = 0
    For i = 1 To nl
        ws1.Range("A" & i & ":J" & i).Copy ws.Cells(1, dc + 1)
        dc = dc + 10
    Next i
End Sub

Si le résultat final est d'avoir plusieurs lignes, qu'est-ce qui permet de déterminer que l'on doit commencer une nouvelle ligne ?

Bonjour!

Tout d'abord merci beaucoup la macro correspond a ce que nous voulons

Le seul problème est qu'elle copie tout le classeur, or nous voulons réaliser plusieurs lignes. Si nous voulons par exemple ne prendre que les ligne 2 à 13 comment doit-on procéder?

Encore merci

Bonjour,

pour copier les lignes 2 à 13

Sub aargh()
    Set ws1 = ActiveSheet
    nl = ws1.Cells(Rows.Count, 1).End(xlUp).Row
    Set ws = Worksheets.Add
    ws.Name = "résultat"
    dc = 0
    For i = 2 To 13
        ws1.Range("A" & i & ":J" & i).Copy ws.Cells(1, dc + 1)
        dc = dc + 10
    Next i
End Sub

Bonjour,

Merci, votre formule correspond à ce que l'on souhaite mais dans notre résultat nous avons 4 cases vides qui se logent entre chaque "ancienne ligne". C'est-à-dire que nous avons 4 colonnes vide entre le dernier mots d'une "ancienne ligne" et le premier mots de la suivante.

Si nous voulons que la macro s'applique dans une feuille déjà existante, comment fait-on? Nous avons essayer de changer le nom "résultat" en mettant le nom de la feuille mais cela ne fonctionne pas. Y a-t-il autre chose à modifier?

De plus nous souhaitons appliquer cette formule sur plusieurs lignes.

Après avoir travaillé sur la formule, nous avons obtenu ceci:

Sub aargh()
        Set ws1 = ActiveSheet
        nl = ws1.Cells(Rows.Count, 1).End(xlUp).Row
        Set ws = Worksheets.Add
        ws.Name = "résultat"
        dc = 0
        For i = 2 To 13
            ws1.Range("C" & i & ":H" & i).Copy ws.Cells(2, dc + 1)
            dc = dc + 10
        Next i
        For i = 14 To 25
            ws1.Range("C" & i & ":H" & i).Copy ws.Cells(3, dc + 1)
            dc = dc + 10
        Next i
    End Sub

Or la seconde partie que l'on souhaite modifier ne se mets pas en dessous de l'autre mais en "escalier" une ligne en dessous avec 4 colonnes d'écart.

Comme nous n'y connaissons pas grand chose, peut-être que quelque chose d'autre dans la formule doit être modifiée?

Le but est par la suite de faire pareil pour les lignes 26 à 37, 38 à 49...

Merci pour votre aide

bonsoir

merci de mettre un fichier exemple significatif de ce que vous avez comme données et de ce que vous voulez obtenir comme résultat.

le fichier de 3 lignes que vous avez fourni, ne permet pas de déterminer ce que vous souhaitez.

Bonjour,

Après avoir copier les lignes 2 à 13, nous souhaitons copier les lignes 14 à 25 de la même manière. Or on a un escalier (voir fichier)

Merci

bonsoir,

un autre essai à tester, le fichier fourni ne permettant pas de savoir ce qu'il se passe quand on a 25 lignes.

Sub aargh()
    Set ws1 = ActiveSheet
    nl = ws1.Cells(Rows.Count, 1).End(xlUp).Row
    Set ws = Worksheets.Add
    ws.Name = "résultat"
    dc = 0
    i = 2
    j = 2
    Do
        ws1.Range("C" & i & ":L" & i).Copy ws.Cells(j, dc + 1)
        dc = dc + 10
        i = i + 1
        If (i - 1) Mod 12 = 1 Then dc = 0: j = j + 1
    Loop While ws1.Cells(i, 3) <> ""
End Sub

Merci

Bonjour!

Merci beaucoup h2so4 c'est exactement ce que nous voulions!

Après quelques petites retouches nous sommes arrivées a ce que nous cherchions, seul problème, quand une ligne est vide, la macro ne fonctionne plus?

Sub aargh()
        Set ws1 = ActiveSheet
        nl = ws1.Cells(Rows.Count, 1).End(xlUp).Row
        Set ws = Worksheets.Add
        ws.Name = "résultat"
        dc = 0
        i = 2
        j = 2
        Do
            ws1.Range("C" & i & ":H" & i).Copy ws.Cells(j, dc + 1)
            dc = dc + 6
            i = i + 1
            If (i - 1) Mod 16 = 1 Then dc = 0: j = j + 1
        Loop While ws1.Cells(i, 3) <> ""
    End Sub

Bonsoir,

Sub aargh()
        Set ws1 = ActiveSheet ' feuille avec les données brutes
        nl = ws1.Cells(Rows.Count, 1).End(xlUp).Row 'nombre de lignes sur ws1
        Set ws = Worksheets.Add 'on ajoute une nouvelle feuille
        ws.Name = "résultat" ' on la nomme résultat
        dc = 0 ' n° de colonne sur la feuille résultat
        i = 2 'n° de ligne sur ws1
        j = 2 'n° de ligne sur feuille résultat
        Do
            ws1.Range("C" & i & ":H" & i).Copy ws.Cells(j, dc + 1) ' on copie les cellules C à H de ligne i en colonne dc sur la ligne j de la feuille réulstat
            dc = dc + 6 ' on incremente le n° de colonne
            i = i + 1 ' on incremente le n° de ligne que ws1
            If (i - 1) Mod 16 = 1 Then dc = 0: j = j + 1 ' faut-il commencer une nouvelle ligne résultat ? si oui, n° de colonne =0, et on incremente n° de ligne sur la feuille résultat
        Loop While i<=nl ' continuer tant que n° de ligne sur ws1 <= au nombre de lignes sur ws1
    End Sub
 

Bonjour,

Merci beaucoup!!!

C'est exactement ce que nous voulions!! et vos explications nous servirons pour la rédaction de notre rapport...

Merci pour le temps que vous y avez consacré, nous n'oublierons pas de vous remercier dans notre compte rendu.

Encore merci

Rechercher des sujets similaires à "comment copier coller lignes seule ligne"