Formater un tableau de 8 colonnes en 2 colonnes

Bonjour,

Je suis a la recherche d'une formule qui me permettrait de gagner un temps précieux

J'ai une liste de plus de 1600 entrées qui est formatée comme le tableau "Table1" dans mon image ci-jointe et j'aimerais qu'au final, ma liste soit formatée comme dans le tableau "Result"

Pour info, "Company" dans ma liste finale correspond au nom d'une entreprise, et les numéros à des noms & prénoms de participants.

N'hésitez pas à me demander plus de détails si ce n'est pas clair

Un grand merci !!!!

excelprob

Bonjour,

voir PJ

7paposes.xlsx (10.87 Ko)

@ + +

Bonjour,

Bonjour R@chid,

une autre proposition (via macro)

Sub aaargh()
    Set ws1 = Sheets("feuil1")
    Set ws2 = Sheets("feuil2")
    i = 2
    k = 1
    ws2.Range("A1") = "Company"
    ws2.Range("B1") = "All guests"
    While ws1.Cells(i, 1) <> ""
        j = 2
        While ws1.Cells(i, j) <> ""
            k = k + 1
            ws2.Cells(k, 1) = ws1.Cells(i, 1)
            ws2.Cells(k, 2) = ws1.Cells(i, j)
            j = j + 1
        Wend
        i = i + 1
    Wend
End Sub

Re,

Salut h2so4,

ahhhhhhhhhh le VBA, quand est-ce que je pourrais m'y mettre et le bien maitriser ?

R@chid a écrit :

Bonjour,

voir PJ

@ + +

Je vais tenter ca & je vous redis !

Merci,

Re,

il y a l'ami h2so4 qui t'a proposé une solution en VBA, tu dois l'essayer.

@ + +

Après 2-3 recherches pour trouver comment utiliser une macro ....ça fonctionne au top du top pour ce que je veux faire !

Merci beaucoup et une excellente soirée à tous !!

Jonas

Encore une petite question !

Il y aurait aussi un moyen de garder la "Company" uniquement pour le premier guest ?

C'est à dire que le résultat serait :

AAAAA 1

2

3

4

5

....

BBBB 8

9

?

Merci !

Bonjour,

sur mon fichier avec une MFC.

voir PJ

5paposes-2.xlsx (12.08 Ko)

@ + +

11exemple.xlsx (10.76 Ko)

Merci beaucoup, mais il y a eu des derniers changements.

Vous trouverez ci joint ce que je dois faire !

Quelqu'un pourrait encore m'aider ?

Bonjour,

tu veux arriver au Résultat2 ou quoi ?

il me faut les 2 résultats car 2 listes différentes !

merci

Re,

je ne vois qu'une seule liste, je ne comprends pas ton énoncé.

Voir PJ

2paposes-3.xlsx (12.93 Ko)

@ + +

oui en effet je n'ai qu'une seule liste dans l'exemple, mais il ne s'agit que d'un exemple.

Dans le fichier final, j'ai plus de 800lignes.

Mais merci beaucoup, je vais essayé tout ca et je te redis !

Re,

Alors j'ai test mais le problème c'est que le numéro n'est pas du tout lié a l'entreprise (Ce qui aurait pu être logique, dsl de ne pas avoir précisé) Ce qui fausse totalement le résultat comme tu pourras le voir dans ma fameuse liste ci-joint.

J'ai mis le tableau avec tes formules à la droite de mon tableau de base.

10test1.xlsx (34.76 Ko)

Re,

j'ai perdu du temps entrain de répondre à ta question alors que tu n'as pas donné un fichier exemple représentatif.

je ne comprends rien, je passe le relai à une âme charitable pour te donner un code VBA puisque avec les formules ça va être très compliqué avec des colonnes intermédiaires et vu le nombre de lignes, ça ralentira le fonctionnement du fichier.

Bonne chance

ok, pas de souci je comprends ! Merci tout de même pour ton aide.

Juste pour info, le résultat, j'aurais aussi pu l'afficher en dessous ou sur une autre page comme sur l'exemple.

Mais je vais tenter de trouver une autre soluce en VBA !

Merci encore et une toute bonne journée,

Jonas

Bonsoir,

voici une procédure qui met résultats 1 dans sheet2 et résultats 2 dans sheet3

Sub aargh()
    Set ws1 = Sheets("sheet1")
    Set ws2 = Sheets("sheet2")
    Set ws3 = Sheets("sheet3")
    s = Array("Num", "société", "PrénomNom")
    ws2.Cells.ClearContents
    ws3.Cells.ClearContents
    ws2.Range("A1:C1") = s
    ws3.Range("A1:C1") = s
    i = 2
    l = 1
    While ws1.Cells(i, 1) <> ""
        c = 3
        While ws1.Cells(i, c) <> ""
            l = l + 1
            ws2.Cells(l, 1) = ws1.Cells(i, 1)
            ws2.Cells(l, 2) = ws1.Cells(i, 2)
            ws3.Cells(l, 1) = ws1.Cells(i, 1)
            If c = 3 Then ws3.Cells(l, 2) = ws1.Cells(i, 2)
            ws3.Cells(l, 3) = ws1.Cells(i, c)
            ws2.Cells(l, 3) = ws1.Cells(i, c)
            c = c + 1
        Wend
        i = i + 1
    Wend
End Sub

bonjour

essayer ca pour result1 :

3formater.xlsm (17.45 Ko)

mais pour result2 je vai voir prochainement pcq je doit aller

cordialement

bonsoir

essayer ca :

Sub result()
Dim x As Integer, j As Integer, i As Integer, drln1 As Integer, drln2 As Integer, drln3 As Integer
Dim BDD As Worksheet, FRMT1 As Worksheet, FRMT2 As Worksheet
Set BDD = Sheets("BDD")
Set FRMT1 = Sheets("FORMAT1")
Set FRMT2 = Sheets("FORMAT2")
drln1 = BDD.Range("a" & Rows.Count).End(xlUp).Row
drln2 = FRMT1.Range("a" & Rows.Count).End(xlUp).Row
drln3 = FRMT2.Range("a" & Rows.Count).End(xlUp).Row

FRMT1.Range("A2" & ":C" & drln2).ClearContents
FRMT2.Range("A2" & ":C" & drln3).ClearContents

With BDD
For x = 4 To drln1
j = 3
Do While .Cells(x, j) <> "" '
i = i + 1
FRMT1.Cells(i + 1, 1).Value = .Cells(x, 1).Value
FRMT1.Cells(i + 1, 2).Value = .Cells(x, 2).Value
FRMT1.Cells(i + 1, 3).Value = .Cells(x, j).Value
FRMT2.Cells(i + 1, 3).Value = .Cells(x, j).Value
j = j + 1
Loop
FRMT2.Cells((i - (j - 3)) + 2, 1).Value = .Cells(x, 1).Value
FRMT2.Cells((i - (j - 3)) + 2, 2).Value = .Cells(x, 2).Value
Next
End With
End Sub
4formater-v1.xlsm (55.42 Ko)
Rechercher des sujets similaires à "formater tableau colonnes"