Transposer en plusieurs lignes une colonne avec séparateur

Bonjour,

J’ai une colonne avec des données de la forme suivante :

?BEGIN_SITE
s_alias=‘TITI’
s_proto_ident=‘TITI’
s_local_site=‘Y’
s_comments=‘Site Local flux TITI’
s_param1=’’
s_param2=’’
s_dir_path=’’
s_mail_address=’’
s_auth_obj_type=‘NONE’
s_auth_obj_name=’’
s_auth_obj_password=’’
?END_SITE
?BEGIN_SITE
s_alias=‘TOTO’
s_proto_ident=‘TOTO’
s_local_site=‘Y’
s_comments=‘Site Local flux TOTO’
s_param1=’’
s_param2=’’
s_dir_path=’’
s_mail_address=’’
s_auth_obj_type=‘NONE’
s_auth_obj_name=’’
s_auth_obj_password=’’
?END_SITE

Je sais transposer un ensemble de données de la colonne en une ligne avec la fonction TRANSPOSE ou avec le copier/collage spéciale.

Par contre, j’aimerai transposer en plusieurs ligne l’ensemble des données en prenant en compte un séparateur comme la valeur ?BEGIN_SITE.

Après transposage, j’obtiens cela:
LINE 1 |?BEGIN_SITE|s_alias=‘TITI’|s_proto_ident=‘TITIX’|s_local_site=‘Y’|s_comments=‘Site Local flux TITI’|s_param1=’’|s_param2=’’|s_dir_path=’’|s_mail_address=’’|s_auth_obj_type=‘NONE’|s_auth_obj_name=’’|s_auth_obj_password=’’|?END_SITE|

LINE 2 |?BEGIN_SITE|s_alias=‘TOTO’|s_proto_ident=‘TOTOX’|s_local_site=‘Y’|s_comments=‘Site Local flux TOTO’|s_param1=’’|s_param2=’’|s_dir_path=’’|s_mail_address=’’|s_auth_obj_type=‘NONE’|s_auth_obj_name=’’|s_auth_obj_password=’’|?END_SITE|
Etc

Ma deuxième question (qui n’est pas dans le titre ).
Comment sortir d’une cellule une partie du texte pour la coller sur une autre cellule ?
En schématisant :
COL 1 COL2
LINE 1 s_alias s_proto_ident …
LINE 2 TITI TITIX …
LINE 3 s_alias s_proto_ident …
LINE 4 TOTO TOTOX …

Merci d’avance pour votre aide
Je joins un fichier
test.xlsx (8,3 Ko)

Bonjour

A tester pour la 1ère question
nickybut.xlsm (16,3 Ko)

Pour la 2ème question, j’ai pas tout compris la demande

Bonjour Mimimathy,

Merci pour la réponse et ce début de solution.
Pour cette première solution, en me relisant je n’ai pas été clair.
Tu as bien transposé la colonne en 2 lignes avec un séparateur. Mais, je souhaitais garder le principe de la fonction TRANSPOSE. C’est à dire :

                **COL1**          **COL2**      **COL3**                    **COL4** .......etc

LINE 1 |?BEGIN_SITE|s_alias=‘TITI’|s_proto_ident=‘TITIX’|s_local_site=‘Y’|s_comments=‘Site Local flux TITI’|s_param1=’’|s_param2=’’|s_dir_path=’’|s_mail_address=’’|s_auth_obj_type=‘NONE’|s_auth_obj_name=’’|s_auth_obj_password=’’|?END_SITE|

LINE 2 |?BEGIN_SITE|s_alias=‘TOTO’|s_proto_ident=‘TOTOX’|s_local_site=‘Y’|s_comments=‘Site Local flux TOTO’|s_param1=’’|s_param2=’’|s_dir_path=’’|s_mail_address=’’|s_auth_obj_type=‘NONE’|s_auth_obj_name=’’|s_auth_obj_password=’’|?END_SITE|
Etc

COL1,2,3,4 … correspondent à chaque ligne de la colonne initiale.
Suis-je plus précis ?

Pour le deuxième, l’objectif est de garder uniquement la valeur présente ente ‘ValeurX’ de chacune des COL1,2,3,4 …

Merci encore beaucoup pour ton aide et ton temps

Re,

Alors comme tu as du mal à reproduire verbalement ta demande
fais un test sur une feuille excel avec ton résultat souhaité, ça ira plus vite

test.xlsx (10,1 Ko)

Exact c’est plus parlant. Ci-joint en pièce jointe

Bonsoir,

Une petite solution :
test.xlsx (11,2 Ko)

Cordialement

Re

A tester avec tes boutons
test (20).xlsm (17,2 Ko)

Merci mickeyrun et mimimathy

Vos 2 solutions, certes différentes l’une de l’autre fonctionnent.
J’ai compris la distinction générale entre les 2 solutions :

  • mickeyrun opte pour une solution TRANSPOSE(INDIRECT)
  • alors que mimimathy part sur une solution VB

Comme l’objectif est aussi d’apprendre. Pouvez vous m’expliquer synthétiquement vos solutions ?
le TRANSPOSE(INDIRECT) ?
les spécifications du code VB

Merci pour mon apprentissage
Merci pour votre temps et le partage de vos connaissances

Bonjour mimimathy

J’ai erreur lorsque j’utilise la première fonction (cf fichier joint)
J’ai dans la colonne de départ 16844 lignes à transposerexcel
une idée ?

Merci d’avance

Re,

Normal

  • de 16 384 lignes sur 256 colonnes jusqu’à la version 95
  • de 65 536 lignes sur 256 colonnes jusqu’à la version 2003
  • de 1 048 576 lignes sur 16 384 colonnes depuis la version 2007

donc tu as dépassé les limites, et entre nous, quel est l’intérêt de cette manœuvre ??

2016
J’ai refait un test avec moins de donnée dans la colonne A
La fonction test a réussi sauf qu’elle a transposé toutes les données sur 1 ligne

Ola la
L’intérêt est de pouvoir lire les fichiers de paramétrage d’un composant système.
L’export du paramétrage est un fichier texte avec 133 paramètres. Multiplier par le nombre de site, tu arrives à plus de 16000 lignes

Exact mimimathy
j’attends la limite du nombre de colonne
Mais en limitant les données de la colonne A à 16000 lignes, la fonction test ne génère pas d’erreur.
Par contre, la fonction transpose la colonne A en une seule ligne.

Re,

Place ton classeur

Je te joins le fichier de donnée initial.
J’ai mis volontairement juste que 2 BEGIN_SITE (j’ai bien compris la limite de colonne lié à la version excel. Je m’arrangerai pour les lignes restantes)
Il y a par contre pour les 2 BEGIN_SITE, le nombre exact de donnée : 135 lignestest.xlsx (13,9 Ko)

Re,

Un peu normal que cela reste sur une seule ligne
la majorité des tes données ont des espaces “insécables” à la fin
Je vais regarder cela plus tard, je vais à la soupe

Re

A tester
test (22).xlsm (21,2 Ko)

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.