Macro qui transpose un tableau

Fermé
Utilisateur anonyme - 9 mars 2009 à 19:53
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 26 août 2009 à 17:21
Bonjour,
je suis une vraie débutante en macro dans excel.
j'ai le tableau suivant :

test 1 test 2 ................................... test 12
personne testée 1 51 26 47
personne testée 2 22 104 17
personne testée 3 74 20 61
personne testée 4 60 93 54

je dois faire une macro me permettant de mettre les lignes a la place des colonnes et les colonnes a la place des lignes (transposée).
et j'y arrive pas, est ce que qn pourrait m'aider?
merci d'avance
A voir également:

4 réponses

arrial Messages postés 1753 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 décembre 2023 251
14 mars 2009 à 10:31
 






Sub TRANSPOSITION()
Range("A1:M20").Select
Selection.Copy
Sheets("Feuil2").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, TRANSPOSE:=True
End Sub





Il s'agit d'une copie suivie d'un collage spécial transposé.

Pas vérifié, mais ça ne devrait pas marcher, le copiage spécial ne pouvant pas se faire sur partie de la zone copiée. Je pense qu'il faut un peu chiader en collant hors de la zone, puis en supprimant ensuite la zone copiée. Cela se fait facilement par enregistrement automatique …






 
1
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
14 mars 2009 à 16:30
Bonjour Arrial,

Oui, tu as raison on ne peux pas copier et coller sur la même zone c'est pour celà que j'ai proposé dans mon post de copier depuis la feuille courante et de coller dans une autre feuille .

A+

Cordialement,
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
10 mars 2009 à 00:07
Bonjour,

Voici un exemple de macro qui copie la plage A1:M20 de la feuille courante et colle la transposée dans la feuille "Feuil2" :
Sub TRANSPOSITION()
    Range("A1:M20").Select
    Selection.Copy
    Sheets("Feuil2").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, TRANSPOSE:=True
End Sub


A+
0
Bonjour,

moi, j'ai un souci avec ce code, c'est que VBA ne valide pas mon code
Operation:=x1None, il me dit Erreur de compilation et attendu expression

voici mon code :

Sub transpose_dans_tableau()
Sheets("Formulaire").Select
Range("B2:B28").Select
Selections.Copy

Sheets("Bases de données").Select
valeurA3 = Range("A3").Value
If valeurA3 = "" Then
Range("A3").Select
Else
Range("A2").Select
Selection.End(x1Down).Select
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base + 1).Select
End If
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base).Select
Selection.PasteSpecialPaste = x1PasteallExceptBorders
Operation:=x1None,SkipBlanks:=False, TRANSPOSE:=True
Sheets("Formulaire").Select
Range("B2:B28").Select
Selection.ClearContents
Range("B2").Select
Sheets("Bases de données").Select
Range("A2").Select
End Sub

Aidez moi
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
31 juil. 2009 à 14:59
Bonjour,

J'ai relevé quelques erreurs de syntaxe.
Attention les constantes Excel commencent par xl... la lettre L pas le chiffre 1
Ensuite dans la ligne en erreur il manque un espace entre PasteSpecial et Paste et des virgules et := à la place de =
Enfin, quand la ligne est trop longue en VBA on peut continuer l'instruction sur la ligne suivante mais en finissant la ligne précédente par Espace souligné ( _)

Voila un code qui est syntaxiquement correct (je n'ai analysé que la syntaxe pas le contenu)

Sub transpose_dans_tableau()
Sheets("Formulaire").Select
Range("B2:B28").Select
Selection.Copy
Sheets("Bases de données").Select
valeurA3 = Range("A3").Value
If valeurA3 = "" Then
    Range("A3").Select
Else
    Range("A2").Select
    Selection.End(xlDown).Select
    ligne_active_base = ActiveCell.Row
    Range("A" & ligne_active_base + 1).Select
End If
ligne_active_base = ActiveCell.Row
Range("A" & ligne_active_base).Select
Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Sheets("Formulaire").Select
Range("B2:B28").Select
Selection.ClearContents
Range("B2").Select
Sheets("Bases de données").Select
Range("A2").Select
End Sub


A+
0
j'ai été un peu long, ta syntaxe m'a l'air pas mal, mais maintenant, il me mets un pop-up avec écrit dessus 400.
d'où peut bien venir l'erreur.
0
pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
26 août 2009 à 17:21
Bonjour,

C'est curieux car je viens de retester mon code, il fonctionne.
Qu'elle est la ligne qui pose problème ?

A+
0