Rechercher : dans
Par :

VBA Convertir lignes d'une cellule en colonne

Dernière réponse le 9 aoû 2009 à 15:19:26 Wynan, le 7 aoû 2009 à 10:30:03 
 Signaler ce message aux modérateurs

Bonjour a tous,
J'aimerai faire une macro VBA Excel pour transformer les lignes se trouvant dans une cellule en plusieurs colonne de sorte que les données ne soient pas alignés sur chaque ligne dans la cellule mais en plusieurs colonne côte-à-côte. (j'espère me faire comprendre!!!) J'ai essayé ça mais ça ne marche pas. si quelqu'un peux me corriger svp !


Sub transform_cellule()
Dim motaverif As String
Dim temp As String, alpha As String
Dim i As Long, j As Long, k As Long, posi As Long
alpha = Chr(10)
k = 1

motaverif = ActiveCell.Value
i = ActiveCell.Row
j = ActiveCell.Column

Do
temp = Mid(motaverif, k, 1)
posi = InStr(temp, alpha)

Cells(i, j + 1).Value = Right(motaverif, Len(motaverif) - posi + 2)
motaverif = Right(motaverif, Len(motaverif) - posi + 2)
j = j + 1
k = k + 1



Loop Until k > Len(motaverif)

End sub

Configuration: Windows vista
Firefox 3.0.5

Meilleures réponses pour « VBA Convertir lignes d'une cellule en colonne » dans :
EXCEL : La fonction INTERSECTION VoirVous avez un tableau constitué de lignes et de colonnes. Vous voulez connaitre la valeur de la cellule située à une intersection Ligne / Colonne de votre tableau.... Exemple : Votre tableau : - commence en C3, jusqu'en F3 ... pour les...
Transformer des colonnes en lignes dans un fichier VoirDifférents outils de Linux sont très doués pour travailler avec des lignes, mais pas avec des colonnes (c'est leur rôle) Sed, Awk, Grep, etc. Cependant, il peut arriver pour X raisons que vous ayez un fichier où les données sont à lire en...
Référencement d’une plage de cellules VoirPLAGE DE CELLULES CONTIGUËS Une plage de cellules se note en indiquant les références de la cellule de début et de fin, séparées par le caractère : (deux-points) : Reference_Cellule_Debut:Reference_Cellule_Fin La référence à une ligne ou à une...
Tableur - La sélection des cellules VoirSélection de cellules Le tableur est un formidable outil pour manipuler des données. Ainsi, pour pouvoir manipuler les données il est nécessaire de disposer d'outils permettant de sélectionner rapidement toutes les cellules dont on a...

1

melanie1324, le 7 aoû 2009 à 20:57:33

Bonjour,

Je n'ai pas regardé ton code mais ce que tu peux faire c'est enregistres ta macro.
Sélectionnes te slignes et copies les
choisis ta colonne et fais un collage spécial aen coochant transposé.

Tu auras le code et tu pourras voir ce qui n'allait pas avec le tien

Répondre à melanie1324

2

melanie1324, le 7 aoû 2009 à 21:01:09

Re,

J'avais mal compris excuse moi.
La proposition que je t'ai faite n'est pas bonne.

Par contre, je sais ou est l'erreur dans ton code :
Sub transform_cellule()
Dim motaverif As String
Dim temp As String, alpha As String
Dim i As Long, j As Long, k As Long, posi As Long
alpha = Chr(10)
k = 1

motaverif = ActiveCell.Value
i = ActiveCell.Row
j = ActiveCell.Column

Do while k > Len(motaverif)

temp = Mid(motaverif, k, 1)
posi = InStr(temp, alpha)

Cells(i, j + 1).Value = Right(motaverif, Len(motaverif) - posi + 2)
motaverif = Right(motaverif, Len(motaverif) - posi + 2)
j = j + 1
k = k + 1



Loop

End sub

Répondre à melanie1324

3

Wynan, le 9 aoû 2009 à 03:19:27

Merci Mélanie de te pencher sur mon problème mais ta modification n'a pas l'effet souhaité. j'en suis toujours au même point snif!

Répondre à Wynan

4

melanie1324, le 9 aoû 2009 à 10:12:11

Bonjour,

Je ne m'y étais pas assez penché dessus :
essaie ca:
Sub transform_cellule()
Dim motaverif As String
Dim temp As String, alpha As String
Dim i As Long, j As Long, k As Long, posi As Long
alpha = Chr(10)
k = 1

motaverif = ActiveCell.Value
i = ActiveCell.Row
j = ActiveCell.Column

Do while k > Len(motaverif)

temp = Mid(motaverif, k, 1)
posi = InStr(temp, alpha)

Cells(i, j + 1).Value = Right(motaverif, Len(motaverif) - posi + 2)
motaverif = left(motaverif, Len(motaverif) - posi + 2) 'cest ca ki ne va pas tu prenais la droite alors qu'il faut prendre la gauche
j = j + 1
k = k + 1
Loop
end sub

Répondre à melanie1324

5

 Wynan, le 9 aoû 2009 à 15:19:26

Merci Mélanie effectivement j'ai oublié qu'il fallait aussi prendre à gauche. Je te donne le programme complet qui marche (combinaison de ton idée et de ce que j'avais fais). Merci encore!!!!!!

Sub transform_cellule()
Dim motaverif As String
Dim temp As String, alpha As String
Dim i As Long, j As Long, k As Long, posi As Long
Dim test As Boolean
alpha = Chr(10)
k = 1
test = False
motaverif = ActiveCell.Value
i = ActiveCell.Row
j = ActiveCell.Column

Do While k <= Len(motaverif)

temp = Mid(motaverif, k, 1)
posi = InStr(motaverif, alpha)
test = posi > 0
If test Then
Cells(i, j).Value = Left(motaverif, posi - 1)
Cells(i, j + 1).Value = Right(motaverif, Len(motaverif) - posi)
motaverif = Cells(i, j + 1).Value
k = 0
j = j + 1
End If

k = k + 1
Loop
End Sub

Répondre à Wynan