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

13 réponses

  1. 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
  2. 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
  3. 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
  4. CBO1973
     
    tout se transpose en 1 seule ligne. Je dois faire autre chose?
    https://www.cjoint.com/c/KAsrkgoSrZ8
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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