macro pour transposer lignes en colonnes

dermience

XLDnaute Junior
bien le bonjour

je suis professeur de sports et j'aimerais transformer un tableau en base de données
j'aimerais transposer de façon rapide les résultats en lignes en colonnes

le fichier attaché me semble assez explicite

je vous remercie pour votre collaboration
 

Pièces jointes

  • macro transposer.xls
    13.5 KB · Affichages: 589

job75

XLDnaute Barbatruc
Re : macro pour transposer lignes en colonnes

Bonsoir Dermience, Catrice,

Voici une macro à placer dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B2:D4]) Is Nothing Then Exit Sub
Set Target = ActiveCell
Application.ScreenUpdating = False
[B2:D2].Copy
[C7].PasteSpecial Paste:=xlPasteValues, Transpose:=True
[B3:D3].Copy
[C10].PasteSpecial Paste:=xlPasteValues, Transpose:=True
[B4:D4].Copy
[C13].PasteSpecial Paste:=xlPasteValues, Transpose:=True
Application.CutCopyMode = False
Target.Select
End Sub

La macro se déclanche quand on entre ou efface une valeur dans le 1er tableau.

Bonne nuit
 

job75

XLDnaute Barbatruc
Re : macro pour transposer lignes en colonnes

Re,

On ne pense pas toujours aux solutions les plus simples...

Nommer Tab la plage B2: D4 (menu Insertion-Nom-Définir), et entrer la macro suivante dans le code de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Cel As Range)
If Intersect(Cel, Range("Tab")) Is Nothing Then Exit Sub
i = 0
For Each Cel In Range("Tab")
[C7].Offset(i) = Cel
i = i + 1
Next
End Sub

L'intérêt de cette solution est qu'elle est générale, elle fonctionne quelles que soient les dimensions du 1er tableau. La seule chose qu'il faut adapter dans la macro, c'est la 1ère cellule du 2ème tableau : [C7]

Re bonne nuit.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : macro pour transposer lignes en colonnes

Bonjour dermience, le forum,

Après VBA, voici une solution par formule (beaucoup préfèrent).

Comme précédemment, nommer Tab la plage B2: D4.

En C7, entrer la formule :

Code:
=INDEX(Tab;1+ENT((LIGNE()-LIGNE(C$7))/COLONNES(Tab));1+MOD(LIGNE()-LIGNE(C$7);COLONNES(Tab)))

Sélectionner C7, clic droit : Copier, sélectionner la plage C7:C15, clic droit : Collage spécial-Formules (ne pas tirer la formule vers le bas à cause des formats couleurs).

Ici aussi la formule est générale : il suffit d'indiquer la 1ère cellule du 2ème tableau : C$7

Edition 1 : autre solution pour entrer la même formule dans toutes les cellules de la plage C7:C15. Sélectionner la plage, puis entrer la formule dans la barre de formule. Valider par Ctrl+Entrée.

Edition 2 : pour ne pas afficher les valeurs 0, mettre les cellules de la plage C7:C15 au format Nombre Personnalisé 0;;

A+
 
Dernière édition:

dermience

XLDnaute Junior
Re : macro pour transposer lignes en colonnes

bonjour
un tout grand merci pour votre collaboration Job et Catrice

les solutions me conviennent
toutefois, je bloque sur la 2° possibilité de Job
probablement un problème avec C1 que je me domine pas
donc pour pouvoir travailler sur un plus grand tableau 1, j'ai adapté le code de la 1° solution et tout va bien

encore merci et excellente journée
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 159
Membres
103 140
dernier inscrit
gwendoline.renou@hotmail.