Note: The other languages of the website are Google-translated. Back to English

Comment transposer des colonnes en lignes et insérer de nouvelles lignes pour remplir des données dans Excel?

Dans cet article, j'introduis un code VBA pour transposer les colonnes en lignes et insérer de nouvelles lignes pour remplir les données comme illustré ci-dessous, si vous êtes intéressé par cette opération, veuillez consulter ci-dessous pour plus de détails.
doc transposer insérer des lignes 1

Transposer et insérer des lignes avec VBA


flèche bleue bulle droite Transposer et insérer des lignes avec VBA

Il n'y a pas de moyen direct de transposer une plage et d'insérer des lignes pour remplir les mêmes données, mais ici, je peux introduire un code VBA pour résoudre rapidement cette tâche.

1. presse Alt + F11 clés pour ouvrir Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Moduleet collez ci-dessous le code VBA dans la fenêtre Module. Voir la capture d'écran:

VBA: transposez et insérez des lignes.

 Sub TransposeInsertRows()
'UpdatebyExtendoffice20161125
    Dim xRg As Range
    Dim i As Long, j As Long, k As Long
    Dim x As Long, y As Long
    Set xRg = Application.InputBox _
    (Prompt:="Range Selection...", _
    Title:="Kutools For Excel", Type:=8)
    Application.ScreenUpdating = False
    x = xRg(1, 1).Column + 2
    y = xRg(1, xRg.Columns.Count).Column
    For i = xRg(xRg.Rows.Count, 1).Row To xRg(1, 1).Row Step -1
        If Cells(i, x) <> "" And Cells(i, x + 1) <> "" Then
            k = Cells(i, x - 2).End(xlToRight).Column
            If k > y Then k = y
            For j = k To x + 1 Step -1
                Cells(i + 1, 1).EntireRow.Insert
                With Cells(i + 1, x - 2)
                    .Value = .Offset(-1, 0)
                    .Offset(0, 1) = .Offset(-1, 1)
                    .Offset(0, 2) = Cells(i, j)
                End With
                Cells(i, j).ClearContents
            Next j
        End If
    Next i
    Application.ScreenUpdating = True
End Sub

 

doc transposer insérer des lignes 2

3. presse F5 pour exécuter le code, puis sélectionnez la plage de données que vous souhaitez transposer et insérer des lignes dans la boîte de dialogue contextuelle. Voir la capture d'écran:
doc transposer insérer des lignes 3

4. Cliquez OK. Et la plage sélectionnée a été convertie comme illustré ci-dessous.
doc transposer insérer des lignes 4

Notes: avant d'exécuter le code, il vaut mieux enregistrer une copie des données d'origine.

Pointe.Si vous souhaitez transposer rapidement un tableau croisé en tableau de liste ou vice versa, essayez d'utiliser Kutools for Excel's Transposer les dimensions de la table comme indiqué dans la capture d'écran suivante. C'est une fonction complète sans limitation en 30 jours, s'il vous plaît télécharger et avoir un essai gratuit maintenant.

doc transposer la croix dans la liste

Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtrée...
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammes...
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellules...
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDF...
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (8)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Si les informations de mon tableau croisé proviennent de formules, ces formules ne suivent pas toujours lorsque la macro est appliquée. Comment pourrais-je résoudre ce problème pour m'assurer que les formules sont conservées dans les cellules?
Chales
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, merci pour votre message. Pour résoudre votre problème, vous pouvez appliquer Convertir la formule en texte de Kutools avant d'exécuter la macro, puis après avoir transposé le tableau, appliquer Convertir le texte en formule de Kutools. S'il vous plaît laissez-moi savoir si cela fonctionne. Merci.
Maison ensoleillé
Ce commentaire a été minimisé par le modérateur sur le site
comment changer le code VBA pour qu'il garde plus de colonnes identiques? par exemple, au lieu que les deux premières colonnes restent les mêmes, ce seront les 4 premières ?
vague
Ce commentaire a été minimisé par le modérateur sur le site
Je ne suis pas sûr, vous pouvez peut-être essayer de changer x = xRg(1, 1).Column + 2 en x = xRg(1, 1).Column + 4.
Maison ensoleillé
Ce commentaire a été minimisé par le modérateur sur le site
comment puis-je faire en sorte que les données 3 et 4 restent dans la même colonne :


l'exercice initial est :

Classe1 | Nom | Nancy | Judie | Lys | Daniel
Classe2 | Nom | Bruce | Uee | Perter | Daniel
Classe3 | Nom | kate | Kelly | Wendy | Daniel

je dois le transposer comme ça

Classe1 | Nom | Nancy | Judy
Classe1 | Nom | Lys | Daniel
Classe 2 | Nom | Bruce | Uee
Classe 2 | Nom | Perter | Daniel
Classe3 | Nom | kate | Kelly
Classe3 | Nom | Wendy | Daniel
Daniela
Ce commentaire a été minimisé par le modérateur sur le site
Comment puis-je transposer les données toutes les deux cellules

L'exercice initial est :


Classe1 | Nom | Nancy | Judie | Lys | Daniel
Classe2 | Nom | Bruce | Uee | Perter | Daniel
Classe3 | Nom | kate | Kelly | Wendy | Daniel

et j'ai besoin qu'il ressemble à ceci:

Classe1 | Nom | Nancy | Judy
Classe1 | Nom | Lys | Daniel
Classe 2 | Nom | Bruce | Uee
Classe 2 | Nom | Perter | Daniel
Classe3 | Nom | kate | Kelly
Classe3 | Nom | Wendy | Daniel
RIOS RIVERA DANIELA DEL MAR
Ce commentaire a été minimisé par le modérateur sur le site
Le code ci-dessus fonctionne très bien. Il conserve les deux premières colonnes. Comment changer le code pour qu'il ne conserve que la première colonne ?
Brandon
Ce commentaire a été minimisé par le modérateur sur le site
Erreur du compilateur Erreur de syntaxe
Dim xRg As Range
Dim i As Long, j As Long, k As Long
Dim x As Long, y As Long

farhan814
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0  Personnages
Emplacements suggérés