Rechercher : dans
Par :

Macro qui transpose un tableau

Dernière réponse le 26 aoû 2009 à 17:21:47 delub, le 9 mar 2009 à 19:53:19 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « macro qui transpose un tableau » dans :
Décaler les éléments d'un tableau (Rotation) -Récursivité- VoirVoici une procédure récursive qui permet de décaler tous les éléments d’un tableau d’une position à droite à partir de la position p Procedure Decaler (Var t : Tab; p, n : integer); Begin If p
Trier un tableau sans utiliser la fonction sort VoirTrier un tableau sans utiliser la fonction sort D'abord on initialise une variable $max avec la 1ère valeur de tableau. Ensuite on va faire une boucle tant que le tableau contient encore des éléments. C'est avec la fonction splice qui a le rôle...
Inverser les éléments d'un tableau -Récursivité- VoirVoici une procédure récursive qui permet d’inverser les éléments d’une partie d’un tableau compris entre la position p et n : Procedure Inverser (Var t : Tab; p, n : Integer); Var aux : Real; Begin If p < n Then ...
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
Télécharger Super Macro VoirSuper Macro est un logiciel gratuit qui permet de créer des macros sous Windows afin de déclencher diverses actions automatiques. En plus d’être gratuit, ce logiciel est facile à utiliser et ne requiert aucune connaissance en programmation. On doit...
Tableau de bord VoirNotion de tableau de bord Un tableau de bord est une représentation graphique synthétique d'un ensemble d'indicateurs donnant à un responsable tous les éléments lui permettant de prendre visuellement et rapidement des décisions. Compte-tenu de sa...
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...
Cryptage par transposition VoirLes méthodes de chiffrement par transposition consistent à réarranger les données à chiffrer de façon à les rendre incompréhensibles. Il s'agit par exemple de réordonner géométriquement les données pour les rendre visuellement inexploitables. La...

1

pilas31, le 10 mar 2009 à 00:07:42

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+ Cordialement,

Répondre à pilas31

2

arrial, le 14 mar 2009 à 10:31:02

 






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 …






 

Répondre à arrial

3

pilas31, le 14 mar 2009 à 16:30:27

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,

Répondre à pilas31

4

christ69fr, le 30 jui 2009 à 14:11:05

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

Répondre à christ69fr

5

pilas31, le 31 jui 2009 à 14:59:16

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+ Cordialement,

Répondre à pilas31

6

christ69fr, le 24 aoû 2009 à 11:34:04

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.

Répondre à christ69fr

7

 pilas31, le 26 aoû 2009 à 17:21:47

Bonjour,

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

A+ Cordialement,

Répondre à pilas31