transposer colonnes en 1 colonne

  • Initiateur de la discussion olivier
  • Date de début
O

olivier

Guest
bonjour à tous,
je voudrais transformer un tableau de données en colonnes en données sur une colonne
exemple:

source:
1 a rouge
2 b bleu
3 c vert
4 d mauve
5 e rouge

et je voudrais:
1
2
3
4
5
a
b
c
d
e
rouge
bleu
vert
mauve
rouge

Pourriez-vous m'indiquer une manip ? Merci d'avance pour votre réponse
Cordialement

Olivier
 
J

Jean-Marie

Guest
Bonjour, Olivier

1) Selectionne ton tableau
2) fait un copier
3) va dans word (il faut l'intégrer en tant que texte, pas en tant que tableau
important. (ou avec wordpad)
4) clique sur le menu edtion/remplacer
5) dans la fenêtre remplace tape \t dans le premier et le \p dans le deuxième
6) valide
7) Valide le nombre d'occurence
8) selectionne ton texte dans word
9) repart sur excel
10) fait un coller

bonne journée

@+Jean-Marie
 
O

olivier

Guest
bonjour et merci.

Pour info \t et le \p deviennent ^t et ^p sous Mac
mais la manip me donne toutes les données sur 1 cellule et non sur une colonne avec un champ par cellule...

Aussi, j'avais pensé ( naïvement ? ) tout faire sur excel car ma source de données et énorme et je risque de dépasser toutes mes capacités avec un copier coller entre word et excel...

peut-être une autre manip du genre Transpose... ?

A bientôt
Cordialement
Olivier
 
O

olivier

Guest
Ah...Alain. Je vais explorer ta Macro. merci beaucoup.

Pour éviter que cette fonction ne marche qu'avec un seul tableau, est-il possible de nommer la zone de travail et faire fonctionner la macro quelque soit le fichier et sa disposition/taille ?

Salutations.

Olivier
 
J

Jean-Marie

Guest
Re...

Olivier, je suis sous Mac, et j'utilise ClarisWork, qui me permet de faire un coller dans les champs de la boîte de dialogue, et ce que j'ai indiqué dans mon message sont les caractères affichés dans ces champs.

Olivier, sous PC le retour à la ligne doit être différent.

Bonne journée à tous

Olivier dans la macro, rien ne t'empêche d'enregistrer la feuille sous .TXT, puis de l'ouvrir avec Word.

@+Jean-Marie
 
O

olivier

Guest
bonjour,
voici l'exemple en PJ,
la zone en bleu nommée ( DONNEES_EN_BLEU) peut varier de 1 à 250 ( salariés )

En utilisant le nom DONNEES_EN_BLEU dans une macro, penses-tu que je n'aurais pas à me soucier de cette zone pour redéfinir à chaque fois l'emplacement des données à transposer ?

Cordialement

Olivier
 

Pièces jointes

  • exemple.xls
    15 KB · Affichages: 88
  • exemple.xls
    15 KB · Affichages: 90
  • exemple.xls
    15 KB · Affichages: 92
O

olivier

Guest
re-bonjour,
Oui je peux avoir de 2 à 250 colonnes ( salariés ) et les 128 lignes sont renseignées aléatoirement.

Pour obtenir un fichier ( Transpose ) en une colonne, j'avais pensé à définir ma zone (en bleu )...

A+
 
A

alain

Guest
Bonjour,


Je ne suis pas en vacances ! Je fais seulement le pont (grand j'en conviens).

Ci-dessous code aménagé :


Option Explicit
Sub Transpose()
Dim DerniereColonne As Integer
Dim DerniereLigne As Integer
Dim i As Integer
DerniereColonne = Range("B1").End(xlToRight).Column
DerniereLigne = 128
For i = 1 To DerniereColonne - 1
Range("A1").Offset(0, i).Select
Range(ActiveCell, ActiveCell.Offset(DerniereLigne, 0)).Copy
Range("A" & CStr(DerniereLigne * i + 1)).Select
Selection.PasteSpecial Paste:=xlValues
Next
Range("B1", Range("B1").Offset(DerniereLigne, DerniereColonne)).Clear
Range("A1").Select
End Sub

@+
 
O

olivier

Guest
!! merci alain !!
( incroyable: il sait tout faire )

Cette macro marche à merveille, sauf que je n'avais pas tout dit:

La fin de chaque colonne ( salarié ) pourrait-elle plutôt être délimitée par un drapeau (#FLAG) au lieu de la ligne 128 ?

Car certaines colonnes ont plus ou moins 128 lignes mais sont toujours terminées par #FLAG et doivent se Transposer à la suite de la ligne 1 au #FLAG de manière continue...



Sincères salutations

Olivier2

Pour info, cette manipulation est destinée à une importation de données dans le logiciel de paie MAESTRIA de SAGE
 
A

alain

Guest
Bonjour,

On va peut-être y arriver !

Avec le code ci-dessous çà devrait marcher :

Option Explicit
Sub Transpose()
Dim DerniereColonne As Integer
Dim DerniereLigne As Integer
Dim DerniereLigneCopiee As Integer
Dim i As Integer
DerniereColonne = Range("B1").End(xlToRight).Column
For i = 1 To DerniereColonne - 1
Range("A1").Offset(0, i).Select
DerniereLigne = WorksheetFunction.Match("#FLAG", Columns(i + 1), 0)
Range(ActiveCell, ActiveCell.Offset(DerniereLigne, 0)).Copy
If i = 1 Then
DerniereLigneCopiee = 128
Range("A129").Select
Selection.PasteSpecial Paste:=xlValues
Else
Range("A" & CStr(DerniereLigneCopiee + 1)).Select
Selection.PasteSpecial Paste:=xlValues
End If
DerniereLigneCopiee = DerniereLigneCopiee + DerniereLigne

Next
DerniereLigne = 128
Range("B1", Range("B1").Offset(DerniereLigne, DerniereColonne)).Clear
Range("A1").Select
End Sub


@+
 

Discussions similaires

Statistiques des forums

Discussions
311 740
Messages
2 082 047
Membres
101 880
dernier inscrit
Anton_2024