Filtrage copie automatique Excel
Tutoriel Excel : Filtrage et Copie Automatique des Données
sur un Nouvel Onglet
🎯 Dans ce tutoriel Excel, je vous montre comment filtrer et copier automatiquement des données sur un nouvel onglet.
✅ Ce procédé peut être utilisé dans divers contextes professionnels et facilite l'analyse de vos données.
👍 Ainsi, vous allez gagner du temps pour identifier les tendances, les variations, les anomalies en fonction d'un critère spécifique.
Voir la vidéo pour découvrir les différentes étapes
Pour vous entraîner et répéter les étapes de ce tutoriel :
-> Télécharger le fichier Excel utilisé dans la vidéo
👇
Après avoir ouvert le lien :
- vous cliquez sur "Fichier",
- puis sur "Enregistrer sous", ou sur "Créer une copie"
- et sur "Télécharger une copie".
📌↪️→ Code VBA à utiliser pour filtrer et copier vos données automatiquement sur un nouvel onglet :
Sub CopierDonneesSelonCritere()
Dim ws As Worksheet
Dim rng As Range, row As Range, cell As Range
Dim critere As Variant
Dim nomOnglet As Variant
Dim nouvelleFeuille As Worksheet
Dim nextRow As Long
Dim correspond As Boolean
Dim ongletExistant As Boolean
' Définir la feuille de travail et la plage de données
Set ws = ThisWorkbook.Sheets("Suivi formation")
Set rng = ws.Range("A2:F100") ' Définir la plage de données à analyser
' Demander le critère à l'utilisateur
critere = Application.InputBox("Entrez le critère recherché :", "Critère")
If critere = False Then Exit Sub ' Annuler si l'utilisateur clique sur "Annuler" ou ferme la boîte de dialogue
' Boucle pour demander un nom d'onglet valide
Do
nomOnglet = Application.InputBox("Entrez le nom du nouvel onglet :", "Nouvel onglet")
If nomOnglet = False Then Exit Sub
' Vérifier si le nom de l'onglet est valide
If Len(nomOnglet) > 31 Then
MsgBox "Le nom de l'onglet ne peut pas dépasser 31 caractères.", vbExclamation
nomOnglet = ""
GoTo Redemande
End If
If nomOnglet Like "*[\/*?[]:*""<>]*" Then
MsgBox "Le nom de l'onglet contient des caractères non autorisés (\\ / ? * [ ] : "" < >).", vbExclamation
nomOnglet = ""
GoTo Redemande
End If
' Vérifier si le nom de l'onglet existe déjà
On Error Resume Next
Set nouvelleFeuille = Sheets(nomOnglet)
ongletExistant = Not nouvelleFeuille Is Nothing
On Error GoTo 0
If ongletExistant Then
MsgBox "L'onglet '" & nomOnglet & "' existe déjà.", vbExclamation
Set nouvelleFeuille = Nothing
End If
Redemande:
Loop While ongletExistant Or nomOnglet = ""
' Vérifier si l'utilisateur a cliqué sur Annuler ou a fermé la boîte de dialogue
If nomOnglet = False Then Exit Sub
' Créer le nouvel onglet seulement si nomOnglet est valide
Set nouvelleFeuille = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
nouvelleFeuille.Name = nomOnglet
' Copier les en-têtes de colonne
ws.Range("A1:F1").Copy Destination:=nouvelleFeuille.Range("A1") ' Adapter la plage selon vos besoins
nouvelleFeuille.Rows(1).RowHeight = 30
' Initialiser le numéro de la prochaine ligne dans le nouvel onglet
nextRow = 2
' Parcourir chaque ligne dans la plage de données
For Each row In rng.Rows
correspond = False
' Parcourir chaque cellule dans la ligne
For Each cell In row.Cells
If LCase(CStr(cell.Value)) = LCase(CStr(critere)) Then
correspond = True
Exit For
End If
Next cell
If correspond Then
row.Copy Destination:=nouvelleFeuille.Cells(nextRow, 1)
nextRow = nextRow + 1
End If
Next row
' Ajuster la largeur des colonnes dans le nouvel onglet
nouvelleFeuille.Columns("A:F").AutoFit ' Adapter également cette indication de plage selon vos besoins
' Désélectionner les cellules
Application.CutCopyMode = False
End Sub
👍 Un autre tutoriel qui pourrait vous intéresser 📅 :