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


Tutoriel Excel filtrage et copie automatique des données sur un nouvel onglet



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 📅 :






Posts les plus consultés de ce blog

Suivi des stocks et inventaire avec alerte

Cases à cocher interactives sur Excel

Listes déroulantes multi-sélections