Transformer une liste en tableau avec condition

Bonjour à tous,

En introduction, je tiens à préciser que je ne connais rien à VBA (il faudra indulgent à mes questions bêtes ! Mais comme le dit le sage "il n'y pas de questions bêtes, seules les réponses peuvent l'être !" )

Voilà mon problème : j'ai des données sous forme d'une colonne (car je les ai récupéré d'un pdf ou d'un doc word) que je voudrais présenter sous forme de tableau. Le problème est qu'il n'y a pas forcément le même nombre de ligne pour chaque plage. Ca se présente comme ça :

TRUCMUCHE A

aaaaa

bbbbbb

ccccc

TRUMUCHE B

zzzzzz

ddddd

eeeeee

ffffff

gggggg

TRUCMUCHE C

ssss

nnnnnn

etc... etc... une seule colonne et pleins de ligne

Vous voyez donc que pour chaque plage le nombre de ligne varie (4 pour la première plage, 6 pour la seconde et 3 pour la troisième).

Ce que je voudrais, c'est récupérer les données qui m'intéressent soit (par exemple) les 4 premières lignes (TRUCMUCHE + les 3 lignes qui suivent) et les transformer en tableau du style :

TRUCMUCHE A TRUCMUCHE B TRUCMUCHE C

aaaa zzzzzzz ssssss

bbbb ddddd nnnnn

cccc eeeee

Comment faire ?

Petit détail qui peut aider TRUCMUCHE est écrit toujours en lettres capitales (et / ou en gras). Je dis ça au cas où il y ait un test logique à faire.

Voilà, c'est pas simple tout ça (enfin... pour moi du moins...)

Quelqu'un a-t-il une idée ?

Merci

Laul

Bonjour

Pour simplifier la résolution de ton problème, il serait très utile d'avoir un fichier de test à disposition

D'un coté ce que tu as et clairement et à part ce que tu veux

A suivre

Bonjour à tous

Voici un essai fait avec mes modestes connaissances.

Edit: nouveau fichier (il y avait un bug de compatibilité: les colonnes ZZ n'existant pas en version 97, elles sont remplacées par les colonnes IV)

59trie-colonne.zip (13.36 Ko)

Bravo ! Ce fichier fonctionne. Par contre petit soucis, ça ne me prend pas toutes les données (seulement 150 si j'ai bien compté). Peut-être est-ce du au fait qu'il y a trop de colonne possible par rapport à ce que peut en contenir excel (c'est même sûr que c'est ça car je doit avoir environ 4822 colonne). Peut-être en gardant les données en ligne :

TRUCMUCHE A aaa bbbb

TRUCMUCHE B ddd zzz

Re-bonjour !

La donne a un peu changé : j'ai traité mes données pour que chaque bloc à séparer soit de 3 lignes. Donc, j'ai rédigé la macro comme ça :

Sub classement()

'

' Classement Macro

' chaque bloc de données est transposé en ligne

'

Application.ScreenUpdating = False

For i = 1 To 7000

For j = 1 To 3

Sheets(1).Range("A" & i + j).CurrentRegion.Copy

Sheets(2).Range("A65536").End(xlUp)(2).PasteSpecial Transpose:=True

Next j

Next i

End Sub

Mais en fait, il faudrait que le i s'incrémenter de de trois et non de 1 à la fin mais je ne sais pas comment faire (next i+3 marche pas, ni i=I+3). Un coup de main ?

Merci !

Re.

N'ayant pas ton fichier, je me base sur le mien.

Le même code qui met les valeurs en lignes au lieu de colonne sest sur le fichier joint

Sinon, pour sauter 3 lignes à ta boucle "For" tu mets ceci:

For i = 1 to 7000 step 3

39trie-colonne.zip (12.70 Ko)

Désolé réponse hyper tardive ! J'ai trouvé le bon code. Pour info :

Sub classement()

'

' Classement Macro

' chaque bloc de données est transposé en ligne

'

Application.ScreenUpdating = False

For i = 1 To 7000

Dim J As Integer

J = i + 2

Sheets(1).Range("A" & i & ":A" & J).Copy

Sheets(2).Range("A65536").End(xlUp)(2).PasteSpecial Transpose:=True

i = J

Next i

End Sub

J'ai mis i+2 pour un step de 3, ça peut changer suivant l'envie.

@+ Sébastien

Bonsoir,

juste pour info, une feuille excel est composées de :

16 384 lignes sur 256 colonnes (version 95)

65 536 lignes sur 256 colonnes (jusqu'à version 2003)

1 048 576 lignes sur 16 384 colonnes (versions 2007 et 2010)

Depuis la version 2002 le nombre de feuilles est de 256 par classeur.

Rechercher des sujets similaires à "transformer liste tableau condition"