Transposition de deux colonnes en ligne, macro

Bonjour à tous,

le sujet a déjà était partiellement traité dans un précédent forum, sur ce même site, et une solution avait alors était apporté par "ours". Je vous réexplique l'objectif de la macro : il s'agissait de transposer des données issues de 2 colonnes, en lignes.

Exemple :

Colonne 1 Colonne 2

PE01 Brouette

PE01 bougie

PE01 Camion

PE02 Brouette

PE01 Fleur

PE03 Vélo

PE02 pizza

etc

Transposition :

Colonne 1 Colonne 2 Colonne 3 Colonne 4

PE01 Brouette Camion Fleur

PE02 Brouette pizza

PE03 Vélo

etc

Le fichier joint avait alors était proposé par "ours", mais la macro était limitée à 4 colonne après transposition. Or, j'aurais besoin de la même macro, mais avec aucune limite de traitement de lignes et de colonnes (mon fichier brut peut comporter 7000 lignes sur les deux colonnes et former, après transposition, 900 lignes sur 400 colonnes...).

Je précise que je suis sur Mac, je travaille sur excel 2011, et je n'ai aucune compétence dans la programmation de macro, d'ou mon besoin d'aide. Si une personne pouvait m'aider à modifier la macro pour la rendre "illimité" et exploitable sur mac excel 2011, je lui en serait EXTREMEMENT reconnaissant !!!!

Je vous remercie par avance de vos réponses !

Pierre

35boufon.zip (9.87 Ko)

Bonjour et bienvenue

Peux-tu tester ce fichier :

Amicalement

Nad

WAHOU !!! Dis donc, quelle efficacité !! Impressionnant ! Je ne pensais pas obtenir un résultat parfait, du premier coup, aussi rapidement !!

Ca fonctionne à merveille, merci beaucoup !!

Est-ce que je peux me permettre de te demander une toute petite chose en plus ? est-il simplement possible d'afficher le résultat sur une nouvelle feuille excel ? Là, ça serait vraiment parfait (j'avais oublié de la préciser dans mon premier message) !! Enfin, je ne veux pas non plus abuser...

En tout cas, merci beaucoup à toi, le résultat de la transpo est parfait !

Re

Comme ceci ?

Amicalement

Nad

Absolument parfait !!

Merci énormément pour ton aide, ça m'évite un grand nombres de main !!

bonjour

je suis à la recherche d'une macro de ce type , mais pour mon cas précis.

je précise que je ne connais pas grand chose aux macros.

j'ai donc 2 colonnes dans mon fichier

la forme est , un "nom" suivi de "x" et "y" dans la 1ere colonne

en 2eme colonne en face des "x" et "y" , on a des "valeurs"

ensuite on a un "blanc" , puis un autre "nom"

ensuite même chose qu'avant

on change de "nom" sur 1 "blanc"

le fichier s'arrête sur "2 blancs"

bien sur , pas de fichier type , et la longueur des colonnes 1 et 2 change à chaque fois.

ce qui est figer est la trame

j'aimerais avoir en sortie , dans un autre onglet

le "nom" à cote "x" et "y" , et sous "x" et "y" les valeurs transposées

puis le 2eme "nom" et ainsi de suite

je joins en attaché un exemple de mon fichier

merci d'avance pour votre aide

phil

11mon-fichier.xlsx (10.79 Ko)

Bonjour phil911, le forum

Pas sûr d'avoir bien compris le résultat souhaité.

Résultat dans la 2ème feuille de ton classeur.

Option Explicit

Sub test()
Dim myAreas As Areas, myArea As Range, i As Long, n As Long
    Application.ScreenUpdating = False
    On Error Resume Next
    Set myAreas = Sheets(1).Columns(2).SpecialCells(2).Areas
    On Error GoTo 0
    If myAreas Is Nothing Then Exit Sub
    n = 1
    For Each myArea In myAreas
        With Sheets(2)
            .Cells(n, 1).Value = myArea.Cells(1)(0, 0).Value
            .Cells(n, 2).Value = "x"
            .Cells(n, 3).Value = "y"
            For i = 1 To myArea.Rows.Count Step 2
                n = n + 1
                myArea.Cells(i).Resize(2).Copy
                .Cells(n, 2).PasteSpecial Transpose:=True
            Next
            n = n + 1    'ou n = n + 2
        End With
    Next
    Set myAreas = Nothing
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

klin89

merci pour la réponse

par contre j'ai pas l'impression que ca marche...

je modifie mon fichier de sortie pour qu'il soit plus explicite

en fait je veux juste que le nom se répète en face de chaque ligne des valeurs x et y dans la feuille 2.

nom1 0.21 0.15

nom2 1.2 1.32

nom2 2.1 2.1

nom2 1.1 1.1

nom3 0.2 0.2

nom3 1.1 1.1

un truc comme ca en sortie

merci

Bonjour,

autre version

Bonne journée

12pierreparis8.xlsm (23.49 Ko)

Re phil911,

Bonjour patrick1957,

Comme ceci :

Ça serait plus simple de passer par une variable tableau.

Option Explicit

Sub test()
Dim myAreas As Areas, myArea As Range, i As Long, n As Long
    Application.ScreenUpdating = False
    On Error Resume Next
    Set myAreas = Sheets(1).Columns(2).SpecialCells(2).Areas
    On Error GoTo 0
    If myAreas Is Nothing Then Exit Sub
    n = 1
    With Sheets(2)
        .Cells(n, 2).Value = "x"
        .Cells(n, 3).Value = "y"
        For Each myArea In myAreas
            For i = 1 To myArea.Rows.Count Step 2
                n = n + 1
                .Cells(n, 1).Value = myArea.Cells(1)(0, 0).Value
                myArea.Cells(i).Resize(2).Copy
                .Cells(n, 2).PasteSpecial Transpose:=True
            Next
        Next
    End With
    Set myAreas = Nothing
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
End Sub

klin89

merci à vous 2....Patrick , la transpo se fait en horizontale et pas comme je le voudrais ...seulement sur 2 colonnes....

klin89....merci !!!!! ca fonctionne nickel...c'est ce qu'il me fallait

un grand grand merci à toi

comme quoi j'avais bien posté ma 1ere demande sur le mauvais site

je vais continuer de développer mon appli.. mais je pense que ca va bien le faire...

bonne semaine à tous

re Phil911,

mon code s'adressait à pierreparis8

je n'ai pas regardé ta demande mais Klin89 est d'un niveau qui te permettra d'avoir la bonne issue

P.

Rechercher des sujets similaires à "transposition deux colonnes ligne macro"