Excel VBA Copier une plage vers une autre feuille (8 façons les plus simples)

  • Partage Ça
Hugh West

Chaque fois que vous en avez besoin, vous pouvez copier une plage d'une feuille à une autre ou à un autre classeur. Il existe différents types de copier-coller. Dans cet article, vous découvrirez les différentes façons d'utiliser le VBA Excel pour copier une plage dans une autre feuille.

Pour rendre l'explication plus vivante, je vais utiliser un exemple d'ensemble de données qui représente les informations personnelles de certaines personnes. L'ensemble de données comporte 4 colonnes. Ces colonnes sont les suivantes Nom, Prénom, Nom de famille, Nom complet, et Courriel : .

Télécharger le cahier d'exercices pour s'entraîner

VBA Copier une plage vers une autre feuille.xlsm

8 façons de copier une plage dans une autre feuille avec Excel VBA

1. copier une plage vers une autre feuille avec le format

Chaque fois que vous voulez Copie une plage d'une feuille à l'autre avec Format vous pouvez simplement le faire en utilisant l'option VBA .

Tiens, je vais Copie une gamme allant de Ensemble de données feuille pour AvecFormat feuille.

Commençons la procédure,

Tout d'abord, ouvrez le Développeur onglet>> ; sélectionner Visual Basic

Vous pouvez également utiliser le ALT + F11 pour ouvrir le VBA éditeur.

Ensuite, il ouvrira une nouvelle fenêtre nommée Microsoft Visual Basic pour les applications.

De là, ouvrez Insérer >> ; sélectionner Module .

A Module s'ouvrira, puis tapez le code suivant dans la fenêtre ouverte. Module .

 Sub Copy_Range_withFormat_ToAnother_Sheet() Range("B1:E10").Copy Worksheets("WithFormat").Range("B1:E10") End Sub 

Ici, j'ai déclaré le Sous-procédure Copier_Gamme_avec_format_vers_une_autre_feuille

J'ai pris la gamme B1:E10 pour copier de la feuille existante au nom de la feuille AvecFormat .

Ici, j'ai utilisé le Copie pour copier la plage sélectionnée, Copie copie toute plage avec Format .

Enfin, Sauvez le code et retourner à la feuille de travail.

Ensuite, ouvrez le Voir onglet>> ; de Macros >> ; sélectionner Afficher les macros

➤ A boîte de dialogue s'affichera.

Maintenant, de la Nom de la macro sélectionnez le Copier_Gamme_avec_format_vers_une_autre_feuille sélectionner également le classeur dans Macros dans .

Enfin, Exécuter l'élu Macro .

Par conséquent, il Copie la gamme sélectionnée avec Format à la nouvelle feuille que j'ai sélectionnée ( WithFormat) .

2. VBA Copier une plage vers une autre feuille sans formatage

Il est également possible de Copie une plage vers une autre feuille sans Format en utilisant le VBA .

Tiens, je vais Copie une gamme allant de Ensemble de données feuille pour WithoutFormat feuille.

Commençons la procédure,

Maintenant, ouvrez le Développeur onglet>> ; sélectionner Visual Basic ( utiliser le ALT + F11)

Ensuite, il ouvrira Microsoft Visual Basic pour les applications.

Ensuite, ouvrez Insérer >> ; sélectionner Module .

A Module s'ouvrira, puis tapez le code suivant dans la fenêtre ouverte. Module .

 Sub Copy_Range_WithoutFormat_Toanother_Sheet() Range("B1:E10").Copy Sheets("WithoutFormat").Range("B1").PasteSpecial _ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub 

Ici, j'ai déclaré le Sous-procédure Copier_Gamme_sans_format_dans_une_autre_feuille

J'ai pris la gamme B1:E10 pour copier de la feuille existante vers le nom de la feuille WithoutFormat .

Ici, j'ai utilisé le Copie pour copier la plage sélectionnée, mais a également mentionné Coller:=xlPasteValues dans le PasteSpecial pour qu'elle colle uniquement Valeurs de la plage sélectionnée, et non le format.

Enfin, Sauvez le code et retourner à la feuille de travail.

Ensuite, ouvrez le Voir onglet>> ; de Macros >> ; sélectionner Afficher les macros

➤ A boîte de dialogue s'affichera.

Maintenant, de la Nom de la macro sélectionnez le Copier_Gamme_sans_format_dans_une_autre_feuille et sélectionnez également le classeur dans Macros dans .

Enfin, Exécuter l'élu Macro .

Ainsi, il Copie la gamme sélectionnée uniquement avec Valeurs pas de Format .

3. copier une plage dans une autre feuille avec le format et la largeur de colonne

Parfois, vous pouvez vouloir Copie n'importe quelle plage sélectionnée telle quelle, pour cela vous pouvez Copie une gamme avec Format et Largeur de la colonne .

Tiens, je vais Copie une gamme allant de Ensemble de données feuille pour Format & ; Largeur des colonnes feuille.

Pour voir la procédure à suivre pour effectuer la tâche en utilisant VBA ,

Tout d'abord, ouvrez le Développeur onglet>> ; sélectionner Visual Basic

Vous pouvez également utiliser le ALT + F11 pour ouvrir le VBA éditeur.

Ensuite, il ouvrira une nouvelle fenêtre de Microsoft Visual Basic pour les applications.

Là, ouvrez Insérer >> ; sélectionner Module .

A Module s'ouvrira, puis tapez le code suivant dans la fenêtre ouverte. Module .

 Sub Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth() Range("B1:E10").Copy Destination:=Sheets("Format & ; ColumnWidth").Range("B1") Range("B1:E10").Copy Sheets("Format & ; ColumnWidth").Range("B1").PasteSpecial Paste:=xlPasteColumnWidths, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Ici, j'ai déclaré le Sous-procédure Copier_la_plage_vers_une_autre_feuille_avec_format_et_largeur_de_colonne

J'ai pris la gamme B1:E10 pour copier de la feuille existante vers le nom de la feuille de destination Format & ; Largeur des colonnes .

Ici, j'ai utilisé le Copie pour copier la plage sélectionnée. J'ai également utilisé la méthode PasteSpecial où j'ai mentionné Coller:=xlPasteColumnWidths de sorte qu'il colle la plage sélectionnée avec Format et Largeur de la colonne .

Enfin, Sauvez le code et retourner à la feuille de travail.

Ensuite, ouvrez le Voir onglet>> ; de Macros >> ; sélectionner Afficher les macros

➤ A boîte de dialogue s'affichera.

Maintenant, de la Nom de la macro sélectionnez le Copier_la_plage_vers_une_autre_feuille_avec_format_et_largeur_de_colonne et sélectionnez également le classeur dans Macros dans .

Enfin, Exécuter l'élu Macro .

Par conséquent, il Copie la gamme sélectionnée avec Format et Largeur de la colonne .

4. VBA Copier une plage vers une autre feuille avec une formule

Si vous avez une formule dans votre jeu de données que vous voulez copier, pas de problème, vous pouvez copier la plage contenant Formule vers une autre feuille en gardant la formule intacte.

Tiens, je vais Copie une gamme allant de Ensemble de données feuille pour AvecFormule feuille

Commençons la procédure,

Pour commencer, ouvrez le Développeur onglet>> ; sélectionner Visual Basic ( vous pouvez également utiliser le ALT + F11 clavier)

Ensuite, il ouvrira Microsoft Visual Basic pour les applications.

De là, ouvrez Insérer >> ; sélectionner Module .

A Module s'ouvrira, puis tapez le code suivant dans la fenêtre ouverte. Module .

 Sub Copy_Range_withFormula_ToAnother_Sheet() Range("B1:E10").Copy Sheets("WithFormula").Range("B1").PasteSpecial Paste:=xlPasteFormulas, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False End Sub 

Ici, j'ai déclaré le Sous-procédure Copier_Gamme_avec_formule_dans_une_autre_feuille

J'ai pris la gamme B1:E10 pour copier de la feuille existante vers le nom de la feuille de destination AvecFormule .

Ici, j'ai utilisé le Copie pour copier la plage sélectionnée. J'ai également utilisé la méthode PasteSpecial où j'ai mentionné Coller:=xlPasteFormulas afin qu'il porte le Formules ainsi que la gamme sélectionnée.

Enfin, Sauvez le code et retourner à la feuille de travail.

Ensuite, ouvrez le Voir onglet>> ; de Macros >> ; sélectionner Afficher les macros

➤ A boîte de dialogue s'affichera.

Maintenant, de la Nom de la macro sélectionnez le Copier_Gamme_avec_formule_dans_une_autre_feuille sélectionner également le classeur dans Macros dans .

Enfin, Exécuter l'élu Macro .

Ainsi, il Copie toutes les plages de cellules sélectionnées avec Formules .

Lectures similaires :

  • Comment utiliser le décalage de plage de VBA (11 façons)
  • VBA pour chaque cellule d'une plage dans Excel (3 méthodes)
  • Comment utiliser l'objet Range de VBA dans Excel (5 propriétés)

Copier une plage avec AutoFit vers une autre feuille

Alors que Copie de d'une plage à une autre feuille, vous pouvez également utiliser la fonction AutoFit dans le VBA à AutoFit la plage copiée dans la nouvelle feuille.

Tiens, je vais Copie une gamme allant de Ensemble de données feuille pour AutoFit feuille

Commençons la procédure,

Tout d'abord, ouvrez le Développeur onglet>> ; sélectionner Visual Basic

Vous pouvez également utiliser le ALT + F11 pour ouvrir le VBA éditeur.

Ensuite, il ouvrira une fenêtre de Microsoft Visual Basic pour les applications.

Ensuite, ouvrez Insérer >> ; sélectionner Module .

A Module s'ouvrira, puis tapez le code suivant dans la fenêtre ouverte. Module .

 Sub Copy_Range_withFormat_AutoFit() Sheets("Dataset").Select Range("B1:E10").Copy Sheets("AutoFit").Select Range("B1").Select ActiveSheet.Paste Columns("B:E").AutoFit End Sub 

Ici, j'ai déclaré le Sous-procédure Copier_Range_avec_format_AutoFit

D'abord, j'ai sélectionné la feuille de calcul Ensemble de données . puis pris la gamme B1:E10 pour copier de la feuille existante vers la feuille de destination nommée AutoFit .

Ici, j'ai utilisé le Copie pour copier la plage sélectionnée et la méthode AutoFit la méthode autofit les colonnes données B:E .

Enfin, Sauvez le code et retourner à la feuille de travail.

Ensuite, ouvrez le Voir onglet>> ; de Macros >> ; sélectionner Afficher les macros

➤ A boîte de dialogue s'affichera.

Maintenant, de la Nom de la macro sélectionnez le Copier_Range_avec_format_AutoFit sélectionner également le classeur dans Macros dans .

Enfin, Exécuter l'élu Macro .

Par conséquent, il Copie la plage sélectionnée vers une nouvelle feuille et aussi AutoFit les colonnes.

6. VBA Copier une plage dans un autre classeur

Si vous voulez, vous pouvez aussi Copie une plage d'une feuille à une autre feuille d'un classeur différent.

Tiens, je vais Copie une gamme allant de Ensemble de données feuille pour Feuille 1 de Livre 1 cahier d'exercices.

Commençons la procédure,

Tout d'abord, ouvrez le Développeur onglet>> ; sélectionner Visual Basic (y Vous pouvez également utiliser le ALT + F11 clavier)

Ensuite, il s'ouvrira Microsoft Visual Basic pour les applications.

Ensuite, ouvrez Insérer >> ; sélectionner Module .

A Module s'ouvrira, puis tapez le code suivant dans la fenêtre ouverte. Module .

 Sub Copy_Range_WithFormat_Toanother_WorkBook() Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset").Range("B3:E10"). _ Copy Workbooks("Book1").Worksheets("Sheet1").Range("B3") End Sub 

Ici, j'ai déclaré le Sous-procédure Copier_Gamme_avec_format_vers_un_autre_livre_de_travail

J'ai pris la gamme B3:E10 à partir du nom de la feuille Ensemble de données pour copier de la feuille existante au nom du nouveau classeur Livre 1 et le nom de la feuille Feuille 1 .

Ici, j'ai utilisé le Copie pour copier la plage sélectionnée dans le nouveau classeur.

Enfin, Sauvez le code et retourner à la feuille de travail.

Ensuite, ouvrez le Voir onglet>> ; de Macros >> ; sélectionner Afficher les macros

➤ A boîte de dialogue s'affichera.

Maintenant, de la Nom de la macro sélectionnez le Copier_Gamme_avec_format_vers_un_autre_livre_de_travail sélectionner également le classeur dans Macros dans .

Enfin, Exécuter l'élu Macro .

Maintenant, il va Copie la gamme sélectionnée dans le Ensemble de données vers un autre classeur.

Copier une plage sur la dernière ligne d'une autre feuille.

En tout cas, si vous voulez Copie une plage vers une autre feuille à partir d'une cellule particulière ou de la dernière cellule, vous pouvez le faire en utilisant la fonction VBA .

Avant d'entrer dans la procédure, je veux vous dire que, j'ai pris deux nouvelles feuilles consistant Nom complet, courriel, et Adresse .

Observons le Dataset2 feuille d'abord.

Voici le Sous la dernière cellule feuille.

Tiens, je vais Copie une gamme allant de Dataset2 feuille pour Sous la dernière cellule mais à partir de la première cellule non vide.

Pour commencer, ouvrez le Développeur onglet>> ; sélectionner Visual Basic

Ensuite, il ouvrira Microsoft Visual Basic pour les applications.

Ensuite, ouvrez Insérer >> ; sélectionner Module .

A Module s'ouvrira, puis tapez le code suivant dans la fenêtre ouverte. Module .

 Sub Copy_Range_BelowLastCell_AnotherSheets() Sheets("Dataset2").Select lr = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Range("A2:C" & lr).Copy Sheets("Below Last Cell").Select lrAnotherSheet = Cells.Find("*", Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False).Row Cells(lrAnotherSheet + 1, 1).Select ActiveSheet.Paste Columns("A:C").AutoFit EndSous 

Ici, j'ai déclaré le Sous-procédure Copier_Range_BelowLastCell_AnotherSheets

D'abord, j'ai sélectionné la feuille Dataset2 et a ensuite utilisé le Rangée pour compter les Dernière rangée et a gardé la ligne comptée dans lr .

Ensuite, on prend la gamme A2:C & ; lr pour copier de la feuille existante vers le nom de la feuille de destination Sous la dernière cellule .

Encore une fois, j'ai utilisé le Rangée pour compter les Dernière rangée d'une autre feuille nommée Sous la dernière cellule et a gardé la ligne comptée dans lrAnotherSheet .

Ici, j'ai utilisé le Copie pour copier la plage sélectionnée et la méthode AutoFit la méthode autofit les colonnes données A:C .

Enfin, Sauvez le code et retourner à la feuille de travail.

Ensuite, ouvrez le Voir onglet>> ; de Macros >> ; sélectionner Afficher les macros

➤ A boîte de dialogue s'affichera.

Maintenant, de la Nom de la macro sélectionnez le Copier_Range_BelowLastCell_AnotherSheets sélectionner également le classeur dans Macros dans .

Enfin, Exécuter l'élu Macro .

Par conséquent, il Copie la gamme sélectionnée et Pâte à partir de la dernière ligne d'une autre feuille.

8. VBA Copier une plage à la dernière ligne d'un autre classeur

Si vous voulez Copie une plage à la dernière ligne d'une autre feuille de classeur, vous pouvez également utiliser la fonction VBA .

Tiens, je vais Copie une gamme allant de Dataset2 feuille pour Feuille 1 de Livre 2 mais à partir de la première cellule non vide.

Pour démarrer la procédure,

Tout d'abord, ouvrez le Développeur onglet>> ; sélectionner Visual Basic

Vous pouvez également utiliser le ALT + F11 pour ouvrir le VBA éditeur.

Ensuite, il ouvrira une nouvelle fenêtre de Microsoft Visual Basic pour les applications.

De là, ouvrez Insérer >> ; sélectionner Module .

A Module s'ouvrira, puis tapez le code suivant dans la fenêtre ouverte. Module .

 Sub Copy_Range_BelowLastCell_To_Another_Workbook() Dim wsCopy As Worksheet Dim wsDestination As Worksheet Dim lCopyLastRow As Long Dim lDestLastRow As Long Set wsCopy = Workbooks("Excel VBA Copy Range to Another Sheet.xlsm").Worksheets("Dataset2") Set wsDestination = Workbooks("Book2.xlsx").Worksheets("Sheet1") lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row lDestLastRow =wsDestination.Cells(wsDestination.Rows.Count, "A").End(xlUp).Offset(1).Row wsCopy.Range("A2:C" & ; lCopyLastRow).Copy wsDestination.Range("A" & ; lDestLastRow) End Sub 

Ici, j'ai déclaré le Sous-procédure Copier la plage inférieure à la dernière cellule dans un autre classeur. wsCopy et wsDestination sont Feuille de travail type, lCopyLastRow et lDestLastRow sont Long type.

D'abord, utilisé Définir pour définir des variables pour la feuille à copier et la feuille de destination.

Ensuite, on a utilisé le Rangée pour trouver la dernière ligne en se basant sur les données de la colonne A dans le domaine de la copie.

Encore une fois, j'ai utilisé le Rangée méthode permettant de trouver la première ligne vierge sur la base des données de la colonne A dans la gamme de destination également utilisée Décalage pour descendre d'une propriété.

Enfin, Copié les données de Dataset2 feuille du Excel VBA Copier une plage vers une autre feuille.xlsm vers la destination Feuille 1 du cahier d'exercices Livre2.xlsx .

Maintenant, Sauvez le code et retourner à la feuille de travail.

Ensuite, ouvrez le Voir onglet>> ; de Macros >> ; sélectionner Afficher les macros

➤ A boîte de dialogue s'affichera.

Maintenant, de la Nom de la macro sélectionnez le Copier la plage inférieure à la dernière cellule dans un autre classeur. sélectionner également le classeur dans Macros dans .

Enfin, Exécuter l'élu Macro .

Par conséquent, il Copie la plage sélectionnée de la feuille existante à la dernière ligne d'un autre classeur.

Section pratique

J'ai fourni une feuille d'exercice dans le cahier d'exercices pour pratiquer ces méthodes expliquées d'Excel. VBA copier la plage vers une autre feuille.

Conclusion

Dans cet article, j'ai expliqué 8 différents types de méthodes faciles et rapides d'Excel. VBA copier une plage vers une autre feuille. Ces différentes méthodes vous aideront à copier une plage d'une feuille à l'autre et également d'une feuille à un autre classeur. Enfin, si vous avez des suggestions, des idées et des commentaires, n'hésitez pas à les formuler ci-dessous.

Hugh West est un formateur et analyste Excel très expérimenté avec plus de 10 ans d'expérience dans l'industrie. Il est titulaire d'un baccalauréat en comptabilité et finance et d'une maîtrise en administration des affaires. Hugh a une passion pour l'enseignement et a développé une approche pédagogique unique qui est facile à suivre et à comprendre. Sa connaissance approfondie d'Excel a aidé des milliers d'étudiants et de professionnels du monde entier à améliorer leurs compétences et à exceller dans leur carrière. Grâce à son blog, Hugh partage ses connaissances avec le monde, offrant des tutoriels Excel gratuits et une formation en ligne pour aider les particuliers et les entreprises à atteindre leur plein potentiel.