Copier des valeurs en ligne en colonne

Résolu
Mischoupi -  
 Mischoupi -
Bonjour,

Je vous donne un exemple :
Actuellement, j'ai cela sous une feuille excel :
Colonne A Colonne B
A 1
A 1
A 1A
A 1 A
B 2
B 3
B 6
C 0
C 0

Au final, j'aimerai

A 1 1 1A 1 A
B 2 3 6
C 0 0

J'ai de nombreuses lignes, pouvez-vous m'aider à automatiser cette tâche

Merci

A voir également:

3 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

effectivement je n'y avais pas pensé :o/

en pièce jointe classeur modifié
https://www.cjoint.com/?3Dcn3bqBwzu

peux tu me dire le temps d'exécution sur tes 10000 lignes? d'avance merci
1
Mischoupi
 
Salut Michel, je te dis ça demain. N tout cas grand merci
0
Pitu Messages postés 1441 Date d'inscription   Statut Contributeur Dernière intervention   125
 
Bonjour,

Sur une seconde feuille, tu peux, sur la ligne 1 rentrer la formule matricielle suivante : =TRANSPOSE(Feuil1!A1:A100)
Attention : à rentrer sous forme matricielle :
Sélection de la ligne 1 entière
Rentrer la formule =TRANSPOSE(Feuil1!A1:A100)
Valider par Ctrl + Maj + Entrée

Et tu répètes cela pour chacune de tes colonnes

Seul bémol : il te faut définir la limite (ici positionnée à 100).
=> Mettre une valeur suffisamment grande.
0
Mischoupi
 
Merci pour cette réponse, le souci, c'est que j'ai 2 colonnes. Comment fait-on pour envoyer un exemple en fichier?
0
Pitu Messages postés 1441 Date d'inscription   Statut Contributeur Dernière intervention   125
 
Tu peux joindre un lien www.cjoint.com

(mais je ne pense pas y avoir accès à cause des filtres de l'entreprise dont j'utilise la connexion)
0
Mischoupi
 
En fait dans la colonne A, j'ai les lettres
dans les colonnes B..... , j'ai les chiffres.

MErci et encore merci
0
Mischoupi
 
RE,

Je viens d'essayer ta formule et cela ne fonctionne pas.
0
Pitu Messages postés 1441 Date d'inscription   Statut Contributeur Dernière intervention   125
 
Cela dit, tu précises que tu as 2 colonnes, mais dans ton 1er exemple, il semble y en avoir 3.
Qu'en est-il exactement ?

Quoi qu'il en soit :
- si tu as 2 colonnes sur ta feuille 1 (dont le nom est "Feuil1")
- que ce sont les colonnes A et B
- que la plus longue de tes colonnes contient 100 lignes utiles

=> Dans ta feuille 2, voila ce que tu dois faire :
1/ tu sélectionnes la ligne 1
2/ tu rentres la formule =TRANSPOSE(Feuil1!A1:A100) dans la barre de formules
3/ tu valides par la combinaison [Ctrl] [Maj] [Entrée]
4/ tu sélectionnes la ligne 2
5/ tu rentres la formule =TRANSPOSE(Feuil1!B1:B100) dans la barre de formules
6/ tu valides par la combinaison [Ctrl] [Maj] [Entrée]

Et tu viens ensuite nous confirmer que ça marche ...
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

Excusez l'incruste, mais en ce dimanche c'était çà ou le scrabble avec belle-maman

un petit code
condition: les séries (A,B,Z...)doivent être regroupées par occurence

Option Explicit 
Const source As String = "feuil1" 
Const cible As String = "feuil3" 

Sub transposer() 
Dim T_caract(), Fin As Integer, Lig_a As Integer, Lig_b As Integer, Ref As String 
Dim Lig_c As Integer 
Dim Start As Single 

'initialisations 
Start = Timer 
Application.ScreenUpdating = False 
Sheets(cible).Range("A2:XFD10000").Clear 
Lig_c = 2 

With Sheets(source) 
     'collecte le couple série lignes 
     Fin = .Columns("A").Find("*", , , , , xlPrevious).Row 
     For Lig_a = 2 To Fin 
          Ref = .Cells(Lig_a, "A") 
          Lig_b = .Columns("A").Find(Ref, , , , , xlPrevious).Row 
           
          'restitution de la série des caract sur une ligne 
          T_caract = Application.Transpose(.Range(.Cells(Lig_a, "B"), .Cells(Lig_b, "B")).Value) 
          With Sheets(cible) 
               .Cells(Lig_c, "A") = Ref 
               .Cells(Lig_c, "B").Resize(1, UBound(T_caract)) = T_caract 
           End With 
            
           'incrémentation 
           Lig_c = Lig_c + 1 
           Lig_a = Lig_b 
     Next 
End With 

'présentation résultats 
Sheets(cible).Activate 
Application.ScreenUpdating = True 
MsgBox "Transposition effectuée en: " & Timer - Start & " sec." 
End Sub 

Michel
0
Mischoupi
 
Bonjour, j'essaie demain et je vous dis. Merci
0
Pitu Messages postés 1441 Date d'inscription   Statut Contributeur Dernière intervention   125
 
A ben si michel_m s'y colle, mon meilleur conseil sera ... de suivre le sien !
(pour info, j'étais parti sur une solution sans macro ni VBA. Une usine à gaz, quoi !)
0
mischoupi
 
Bonjour,
La macro de Michel fonctionne très bien sauf dans le cas où j'ai une seule occurence en colonne A. Que faut-il que je modifie pour que ca marche
0
Mischoupi
 
Bjr Michel, avec plusieurs occurrences DS la colonne À, la transposition à dure 39s
0
Mischoupi
 
Merci à tous....
0