Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Macro pour transposé un fichier en colonne en ligne
Re : Macro pour transposé un fichier en colonne en ligne
Bonsoir le fil
Un coup de pouce en forme de conseil "chartique"
1) Ne jamais envoyer de fichier original
2) Créer un fichier "light" : 1 à 2 feuilles sans formatage (pas de couleurs, pas de bordures, pas d'images)
3) Synthétiser la question en problèmes simples avec :
Ce que l'on a : (AVANT LA MACRO OU LA FORMULE)
Ce que l'on souhaite : (APRES LA MACRO OU LA FORMULE)
Ici il s'agit de transposition
Donc quelle est la plage source ?
Quelle est la plage Destination ?
PS: Ce sujet transposition colonnes/lignes et son inverse sont des sujets de nombreuses fois évoqués sur XLD.
Chercher dans les fils de discussions existants permet de trouver des indices de résolutions, des exemples.
L'as-tu fait?
PS2: Salutations Job75
EDITION: En attendant la suite, un exemple simple (avec Array) qui évite de passer par le Copier/Colle/Transposer (A TESTER sur un classeur vierge, pour comprendre comment se déroule la macro)
VB:
Sub M_tcl()
Dim tl, tc
Cells.Clear
With Application
.ScreenUpdating = False
[A1:A5].Formula = "=ROW()": tl = [A1:A5].Value
'col -> lig
[B1].Resize(, UBound(tl)) = .Transpose(tl)
'lig -> col
tc = [B1:F1].Value
[H1].Resize(5) = .Transpose(tc)
.ScreenUpdating = True
End With
End Sub
Re : Macro pour transposé un fichier en colonne en ligne
Bonjour,
Ahhh des réponses
Quelques explications s’impose (c’est vrai que je n’en avais mis aucunes)
Je cherche à importer le fichier test (qui contrairement à ce qu’il parait à été nettoyé pour ne laisser que les choses qui me posent soucis (le fichier de base pèse 3mo) dans le fichier nommé importation.
J’ai toujours le même nombre d’onglet à importer (de 3 à 9 pour être précis)
A la base je suis parti sur un comptage de cellule et colonne pour avoir ma plage rempli, mais dans chaque onglet il y a des conditions partout.
J’ai donc fait une petite macro (via l’enregistreur) pour enlever toutes formules, mais idem la plage prise en compte était toujours plus grande que la réalité (et fixe surtout) (EZ57 à F4)
Je suis donc partit d’un autre principe, cette fois ci en copiant (valeur uniquement et transposé) la plage EZ57 à F4 dans mon fichier d’importation, en partant de la dernière cellule non vide de la colonne A +1 (pour la ligne), de passer au 2éme onglet, de reprendre la même plage, et la copié à la dernière cellule non vide de la colonne A + 1 (pour la ligne) et ainsi de suite.
Ensuite je pensais éliminer l’ensemble des cellules et colonnes non vides, et mettre en page mon nouveau tableau.
Dans le fichier d’importation, dans l’onglet NSI, il y a un exemple de résultat, dans l’onglet import il y a ce à quoi j’aimerais que cela ressemble).
PS Job75 : Effectivement pas assez détaillé, merci pour la remarque constructive
Et le fichier à été nettoyé, l’original est rempli de graphique, formules et autre……
Ps Staple1600 :
1)Ce fichier n’est pas l'original, même s'il y ressemble grandement.
2) Ce fichier à été allégé au max, mais j’ai tout de même laissé les choses qui me posait soucis.
Oui j’ai cherché dans les fils de discutions, sinon je n’aurais jamais su qu’il fallait transposer pour coller des colonnes en lignes et vice versa (je suis autocadien pas excelien)
3) Synthétiser, ok, mon problème (enfin l’un des problème) ce situe ici je pense, ma variable ligne_debut est mal définie selon moi
Code:
For compteur = 3 To 9
ligne_debut = A & Destination.Worksheets(NSI).Range("A65536").End(xlUp).Row + 1 'je defini la variable ligne_debut qui correspond la plage de de commencement
Source.Worksheets(compteur).Activate ' j active les onglets du fichier source
Range("F4:EZ56").Copy
Destination.Worksheets(NSI).Activate
Destination.Range("ligne_debut").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Merci beaucoup, j’espère cette fois ci ne pas avoir trop détaillé justement…
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.