1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Transformer plusieurs lignes en une ligne

Discussion dans 'Forum Excel' démarrée par maval, 11 Janvier 2019 à 12:19.

  1. maval

    maval XLDnaute Barbatruc

    Inscrit depuis le :
    11 Mai 2012
    Messages :
    2073
    "J'aime" reçus :
    6
    Bonjour

    J’ai dans mon fichier des valeurs « F » qui commence toutes par <polygon et ces valeurs sont sur plusieurs lignes j’aimerais les transformer sur une ligne, j’ai fait un modèle pour être plus explicite

    je vous remercie
    Max
     

    Pièces jointes:

  2. Chargement...


  3. etpisculrien

    etpisculrien XLDnaute Occasionnel

    Inscrit depuis le :
    17 Mars 2005
    Messages :
    124
    "J'aime" reçus :
    0
    Utilise:
    Excel 2010 (PC)
    salut maval

    via une macro ou formule avec petite manip ensuite?
     
  4. vgendron

    vgendron XLDnaute Barbatruc

    Inscrit depuis le :
    24 Février 2009
    Messages :
    5043
    "J'aime" reçus :
    515
    Utilise:
    Excel 2007 (PC)
    Re

    un essai ici
    Code (Visual Basic):

    Sub rassemble()
    Dim TabIni() As Variant
    With ActiveSheet
        Fin = .Range("G" & .Rows.Count).End(xlUp).Row
        TabIni = .Range("F5:G" & Fin).Value
        TailleFinale = WorksheetFunction.CountA(.Range("F5:F" & Fin))
        ReDim TabFinal(1 To TailleFinale, 1 To 1)
    End With
    k = 1
    For i = LBound(TabIni, 1) To UBound(TabIni, 1)
        If TabIni(i, 1) <> "" Then
            TabFinal(k, 1) = TabIni(i, 1)
           
            j = i
           
            While TabIni(j + 1, 1) = "" And j <= Fin - 5
                TabFinal(k, 1) = TabFinal(k, 1) & "," & TabIni(j + 1, 2)
                j = j + 1
                If j = Fin - 4 Then GoTo recopie
            Wend
            k = k + 1
        End If
    Next i
    recopie:
    With Sheets("Feuil2")
        .Range("A1").Resize(UBound(TabFinal, 1), UBound(TabFinal, 2)) = TabFinal
        .Range("B:B").Clear
    End With
    End Sub
     
     
  5. maval

    maval XLDnaute Barbatruc

    Inscrit depuis le :
    11 Mai 2012
    Messages :
    2073
    "J'aime" reçus :
    6
    vgendron

    Oui sa fonctionne mais j'ai une erreur en ligne
    While TabIni(j + 1, 1) = "" And j <= Fin - 5

    L'indice n'appartiens pas à la sélection
     
  6. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26015
    "J'aime" reçus :
    2233
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonsoir maval, vgendron,
    Code (Text):
    Sub Concatener()
    Dim tablo, resu(), i&, n&
    With [F5].CurrentRegion
        tablo = .Resize(, 2)
        ReDim resu(1 To UBound(tablo), 1 To 1)
        For i = 1 To UBound(tablo)
            If tablo(i, 1) <> "" Then n = n + 1: resu(n, 1) = tablo(i, 1)
            If n Then resu(n, 1) = resu(n, 1) & tablo(i, 2)
        Next
        Application.ScreenUpdating = False
        If .Parent.FilterMode Then .Parent.ShowAllData 'si la feuille est filtrée
        .ClearContents 'RAZ
        If n Then .Resize(n, 1) = resu 'restitution
        With .Parent.UsedRange: End With 'actualise les barres de défilement
    End With
    End Sub
    A+
     
  7. maval

    maval XLDnaute Barbatruc

    Inscrit depuis le :
    11 Mai 2012
    Messages :
    2073
    "J'aime" reçus :
    6
    Bonsoir Job

    Je vous remercie toujours aussi net et précis

    Bonne soirée

    Max
     

Partager cette page