Transposer colonne à feuilles Excel à l’aide VBA
Scénario
Supposons que vous disposez d’un classeur Excel. Il a 3 feuilles. Une feuille contient 5 colonnes. Chaque colonne contient les données d’une ville différente. Chaque feuille contient 5 colonnes similaires avec des données différentes des mêmes villes.
Défi:
Nous devons créer un fichier contenant différentes feuilles pour chaque colonne unique. Chaque feuille doit contenir les données de leur colonne respective. Au final, nous aurons 5 feuilles de 3 colonnes chacune. D’une certaine manière, il transpose des colonnes en feuilles.
Logique:
Tout d’abord, nous devons créer un classeur contenant différentes feuilles pour chaque colonne. Nous pouvons le faire en regardant les en-têtes de la première feuille de notre fichier d’origine.
Ensuite, nous devons parcourir chaque feuille de la feuille d’origine pour copier chaque colonne dans les feuilles correspondantes du nouveau classeur.
Code VBA pour transposer les colonnes en feuilles.
Voyons d’abord le code VBA pour transposer les feuilles. Je l’explique ci-dessous.
Sub TransposeColsToSheets() 'varibles Dim wb As Workbook Dim twb As Workbook Dim lstRw As Integer Dim lstCl As Integer Dim cols As Range With Application .DisplayAlerts = False .ScreenUpdating = False End With 'creating new file Set wb = Workbooks.Add 'saving the file. Replace the path with your destination. wb.SaveAs "C:\Users\Manish Singh\Desktop\Excel Tip\result.xlsx" Set twb = ThisWorkbook twb.Sheets(1).Activate lstCl = Cells(1, Columns.Count).End(xlToLeft).Column 'identfying headers for city names Set cols = Range(Cells(1, 1), Cells(1, lstCl)) 'loop to create sheets For x = 1 To cols.Count wb.Sheets.Add.Name = "page" & x Next 'loop to transpose columns to sheets For Each sh In twb.Sheets For x = 1 To cols.Count sh.Activate lstRw = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(1, x), Cells(lstRw, x)).Copy wb.Sheets("page" & x).Activate lstCl = Cells(1, Columns.Count).End(xlToLeft).Column + 1 Range(Cells(1, lstCl), Cells(1, lstCl)).PasteSpecial xlPasteAll Next x Next sh 'saving and closing the result workbook wb.Save wb.Close With Application .DisplayAlerts = True .ScreenUpdating = True End With End Sub
Vous pouvez télécharger le fichier ci-dessus pour l’utiliser immédiatement ou copier le code pour le personnaliser selon vos besoins.
Une fois que vous exécutez le code, il créera immédiatement un fichier Excel qui aura 5 feuilles, chaque feuille contenant 3 colonnes des données de la même ville.
`lien: /wp-content-uploads-2019-12-Transpose-Column-To-sheets.xls [
Transpose Column To Sheets]
Comment ça marche?
Dans l’exemple de code ci-dessus, nous avons supposé que le fichier commence à partir de la première cellule de chaque feuille et que chaque feuille contient le même nombre de colonnes.
Dans les premières lignes de code, nous avons déclaré les variables dont nous aurons besoin dans la procédure. Nous avons enregistré les en-têtes des colonnes dans une variable nommée cols.Nous avons également créé un fichier .xlsx, nommé result.xlsx *.
Ensuite, nous avons utilisé une boucle pour créer le même nombre de feuilles dans result.xlsx que dans header incols.
'loop to create sheets For x = 1 To cols.Count wb.Sheets.Add.Name = "page" & x Next
Ensuite, nous avons utilisé une boucle imbriquée. La première boucle consiste à parcourir les feuilles dans le fichier d’origine. Boucle suivante pour copier chaque colonne et la coller dans chaque feuille dans le fichier results.xlsx.
En fin de compte, nous enregistrons le classeur result.xlsx et le fermons. Et c’est fait.
Alors oui les gars, voici comment copier chaque colonne dans une nouvelle feuille dans Excel en utilisant VBA. Cela a été demandé par notre utilisateurMahmood dans la section commentaires.
J’ai pensé qu’il méritait un article pour qu’il soit disponible pour nous tous. Ici vous l’avez. J’espère que c’était suffisamment explicatif. Si vous avez encore des doutes ou toute autre question, demandez dans la section commentaires ci-dessous.
Articles liés:
Téléchargez le fichier de travail.
lien: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Désactiver les messages d’avertissement à l’aide de VBA dans Microsoft Excel 2016]
| Pour désactiver les messages d’avertissement qui interrompent l’exécution du code VBA, nous utilisons la classe Application.
link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Ajouter et enregistrer un nouveau classeur à l’aide de VBA dans Microsoft Excel 2016]
| Pour ajouter et enregistrer des classeurs à l’aide de VBA, nous utilisons la classe Workbooks. Workbooks.Add ajoute facilement un nouveau classeur, cependant …
Articles populaires:
lien: / clavier-formule-raccourcis-50-excel-raccourcis-pour-augmenter-votre-productivité [50 raccourcis Excel pour augmenter votre productivité]
| Accélérez votre tâche. Ces 50 raccourcis vous permettront de travailler encore plus rapidement sur Excel.
lien: / formules-et-fonctions-introduction-de-vlookup-function [La fonction RECHERCHEV dans Excel]
| C’est l’une des fonctions les plus utilisées et les plus populaires d’Excel qui est utilisée pour rechercher la valeur de différentes plages et feuilles. lien: / tips-countif-in-microsoft-excel [COUNTIF dans Excel 2016]
| Comptez les valeurs avec des conditions en utilisant cette fonction étonnante.
Vous n’avez pas besoin de filtrer vos données pour compter une valeur spécifique. La fonction Countif est indispensable pour préparer votre tableau de bord.
lien: / excel-formule-et-fonction-excel-sumif-function [Comment utiliser la fonction SUMIF dans Excel]
| C’est une autre fonction essentielle du tableau de bord. Cela vous aide à résumer les valeurs sur des conditions spécifiques.