Passer au contenu principal

Comment copier des lignes de plusieurs feuilles de calcul en fonction de critères dans une nouvelle feuille?

Auteur : Xiaoyang Dernière modification: 2019-09-10

Supposons que vous ayez un classeur avec trois feuilles de calcul qui ont la même mise en forme que la capture d'écran ci-dessous. Maintenant, vous voulez copier toutes les lignes de ces feuilles de calcul dont la colonne C contient le texte «Terminé» dans une nouvelle feuille de calcul. Comment pouvez-vous résoudre ce problème rapidement et facilement sans les copier et les coller un par un manuellement?

Copiez les lignes de plusieurs feuilles de calcul en fonction de critères dans une nouvelle feuille avec le code VBA


Copiez les lignes de plusieurs feuilles de calcul en fonction de critères dans une nouvelle feuille avec le code VBA

Le code VBA suivant peut vous aider à copier des lignes spécifiques de toutes les feuilles de calcul du classeur en fonction d'une certaine condition dans une nouvelle feuille de calcul. Veuillez faire comme ceci:

1. Maintenez le ALT + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2Cliquez sur insérer > Moduleet collez le code suivant dans la fenêtre Module.

Code VBA: Copiez les lignes de plusieurs feuilles en fonction de critères dans une nouvelle feuille

Public Sub CopyRows_ValuesAndNumberFormats()
Dim xWs As Worksheet
Dim xCWs As Worksheet
Dim xRg As Range
Dim xStrName As String
Dim xRStr As String
Dim xRRg As Range
Dim xC As Integer
On Error Resume Next
Application.DisplayAlerts = False
xStr = "Kutools for Excel"
xRStr = "Completed"
Set xCWs = ActiveWorkbook.Worksheets.Item(xStr)
If Not xCWs Is Nothing Then
    xCWs.Delete
End If
Set xCWs = ActiveWorkbook.Worksheets.Add
xCWs.Name = xStr
xC = 1
For Each xWs In ActiveWorkbook.Worksheets
    If xWs.Name <> xStr Then
        Set xRg = xWs.Range("C:C")
        Set xRg = Intersect(xRg, xWs.UsedRange)
        For Each xRRg In xRg
            If xRRg.Value = xRStr Then
               xRRg.EntireRow.Copy
               xCWs.Cells(xC, 1).PasteSpecial xlPasteValuesAndNumberFormats
               xC = xC + 1
            End If
        Next xRRg
    End If
Next xWs
Application.DisplayAlerts = True
End Sub

Notes: Dans le code ci-dessus:

  • Le texte "Complété" dans ce xRStr = "Terminé" script indique la condition spécifique sur laquelle vous souhaitez copier des lignes;
  • C: C dans ce Définissez xRg = xWs.Range ("C: C") script indique la colonne spécifique où se situe la condition.

3. Puis appuyez F5 clé pour exécuter ce code, et toutes les lignes avec la condition spécifique ont été copiées et collées dans une nouvelle feuille de calcul nommée Kutools for Excel dans le classeur actuel. Voir capture d'écran :


Plus d'articles relatifs d'extraction ou de copie de données:

  • Copier les données dans une autre feuille de calcul avec un filtre avancé dans Excel
  • Normalement, nous pouvons appliquer rapidement la fonction de filtre avancé pour extraire des données des données brutes dans la même feuille de calcul. Mais, parfois, lorsque vous essayez de copier le résultat filtré dans une autre feuille de calcul, vous obtenez le message d'avertissement suivant. Dans ce cas, comment pourriez-vous gérer cette tâche dans Excel?
  • Copier les lignes si la colonne contient du texte / une valeur spécifique dans Excel
  • Supposons que vous souhaitiez trouver des cellules contenant du texte ou une valeur spécifique dans une colonne, puis copier la ligne entière où se trouve la cellule trouvée, comment pourriez-vous y faire face? Ici, je vais présenter quelques méthodes pour trouver si la colonne contient du texte ou une valeur spécifique, puis copier la ligne entière dans Excel.

  • 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 et conservation des données; Contenu des cellules divisées; Combiner les lignes en double et la somme / moyenne... 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 ...
  • Formules favorites et insérer rapidement, Plages, graphiques et images; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • 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
  • Regroupement du tableau croisé dynamique par numéro de semaine, jour de la semaine et plus encore ... Afficher les cellules déverrouillées et verrouillées par différentes couleurs; Mettre en évidence les cellules qui ont une formule / un nom
onglet kte 201905
  • 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
Comments (2)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Hi,

thank you very much for the code. I have a question: the code runs smoothly on some of my sheets, but looks like enters an infinite loop in some other ones which makes excel crash. What could the reason be?
This comment was minimized by the moderator on the site
Hello there, thank you so much for the code above, it solved me a problem with a complex file; a solution I have been looking for a while now. Thank you..I have one question. How do I change the code so that it copies the rows but only from colum A to colum Q, so not Entire.Row?Thank you in advance and great work!
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations