Transposer colonne en ligne

CBO1973 -  
franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai une seule colonne A avec 505 lignes que j'aimerais transposer en 10 colonnes (parfois la 10e colonne sera vide). La case qui devrait déclencher le passage à la ligne contient toujours le mot "parcelle". J'ai commencé à le faire manuellement avec la fonction collage spécial-transposer mais c'est franchement pénible... Est-ce qu'il y a moyen d'automatiser ce "transposage" en ligne avec une macro? Je vais devoir le faire régulièrement avec des données différentes. A savoir que je n'ai jamais fais de Macro en Excell avant...... :-/

Merci d'avance pour vos bons conseils
A voir également:

13 réponses

franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
 
Bonjour
la cellule qui contient "parcelle" doit elle être recopiée et où…
Ci joint ma proposition sans parcelle
https://www.cjoint.com/c/KApn3xSd8hz
A+ François
0
CBO1973
 
Bonjour. Merci d'avoir pris le temps de me répondre. La cellule avec Parcelle ne doit pas être recopiée. Je vois bien votre fichier, mais je fais quoi avec cela? Je recopie mes données dedans? et il fait la transposition?
0
franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
 
Bonjour,
la macro se lance en double cliquant sur la feuille

A+ François
0
CBO1973
 
tout se transpose en 1 seule ligne. Je dois faire autre chose?
https://www.cjoint.com/c/KAsrkgoSrZ8
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
 
Pour le fichier que tu as joint voici la macro correspondante
Clic droit sur le nom de la feuille
Choisir Visualiser le code et recopier cette macro
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Long, dl As Long, col As Integer, lig As Long
dl = Cells(1, Columns.Count).End(xlToLeft).Column 'Range("A" & Rows.Count).End(xlUp).Row
col = 1: lig = 5
For i = 1 To dl
If Cells(1, i).Value Like "*Parcelle*" Then
lig = lig + 1: col = 1
Else
Cells(lig, col).Value = Cells(1, i).Value
col = col + 1
End If
Cells(1, i).Value = ""
Next
End Sub

A+ François
0
CBO1973
 
désolée de vous embêter mais cela ne fonctionne tjr pas. soit je ne sauve pas correctement les modifications soit je fais qlq chose de travers mais je n'arrive pas au résultat. J'ai même l'impression qu'en fait, cela efface le contenu de la première cellule et puis fini...
0
franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
 
Fait moi suivre ton fichier avec des données bidon ...
Quelle version d' excel? windows ou mac?
A+ François
0
CBO1973
 
Bonjour,

Désolée, je n'avais pas vu votre réponse.
Je travaille sous Excel 2016- Windows 10.
Voici le fichier
https://www.cjoint.com/c/KAwmtQkPUj8
Merci bcp pour votre aide en tout cas.

Belle fin de journée.
0
franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
 
Bonjour
Moi ça marche très bien…
Double clic sur la feuille "Feuil1" dans n'importe quelle case
https://www.cjoint.com/c/KAwop4NJ7Az

A+ François
0
CBO1973
 
Bonjour,

Ah oui, là c'est bon... je ne touche plus a rien! Merci.
Et donc pour les suivants, je copie dans la première colonne et double click, c'est cela?

Bon weekend à vous.
0
franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
 
Exact
Tu efface les données existantes (ou tu les copies sur une autre feuille)
tu colle tes nouvelles données en A1 et tu double clic

A+ François
0
CBO1973
 
bon l'idéal maintenant serait de comprendre ce que vous avez fait pour pouvoir le refaire. Mais ça cela va être une autre paire de manches :-(.
Encore merci
0
franc38 Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   38
 
Cette macro tu la retrouve en cliquant sur l'onglet de la feuille concernée
clic droit choisir visualiser le code

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Long, dl As Long, col As Integer, lig As Long 'déclaration des variables
dl = Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne de la colonne A
col = 2: lig = 2
For i = 1 To dl 'boucle qui analyse toutes les cellules de la colonne A
If Cells(i, 1).Value Like "*Parcelle*" Then 'recherche si il y a le mot Parcelle
lig = lig + 1: col = 2 ' si oui ajout d'une ligne, colonne remis à 2
Else 'si pas de mot Parcelle
Cells(lig, col).Value = Cells(i, 1).Value 'la cellule correspondant à la valeur lig et la colonne col reprend la valeur de la cellule analysée
col = col + 1 'on augmente la colonne de 1
End If 'fin de la condition
Cells(i, 1).Value = "" 'on efface la cellule analysée
Next 'fin de la boucle
End Sub

J'ai ajouté des explications
A+ François
0