IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Extraire des valeurs filtrées d'un tableau vers une nouvelle feuille automatiquement


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Extraire des valeurs filtrées d'un tableau vers une nouvelle feuille automatiquement
    Bonjour,

    Je débute sur Excel aussi bien qu'en Visual basic mais je cherche à extraire les données de plusieurs lignes d'un tableau sur une autre feuille de façon automatique.

    J'ai un tableau à 4 colonnes avec respectivement : des marques de voitures, leurs modèles, la ville et leurs plaques d'immatriculation.
    En passant par une macro VBA, mon but est de récupérer toutes les Peugeot et Citroën immatriculées dans le 05. Je veux donc que sur ma feuille 2, ma première colonne soit la marque du véhicule et la deuxième sa plaque d'immatriculation (uniquement en 05).
    L'idéal pour moi serait de créer une condition de recherche sur la colonne "Marque" pour identifier les "Peugeot" et "Citroën" et de les afficher dans une nouvelle feuille avec uniquement la colonne plaque d’immatriculation associée (mais imposer une recherche sur le critère "05" de cette colonne).
    Pour finir, l'autre difficulté que j'ai et que ma macro doit être adaptable à n'importe quel tableau de n'importe quelle taille (il n'y aurait que les noms de colonnes identiques).

    Est-ce possible et si oui, quelqu'un aurait-il une solution pour m'aider ?

    En vous remerciant par avance.

    PS : - Vous trouverez en pièce jointe un fichier avec le tableau en question.
    - J'ai adapté mon tableau pour le forum mais ce sur quoi je travaille est bien plus complexe. C'est pour ça qu'il faudrait que je passe obligatoirement par une macro avec appui sur un bouton pour transférer automatiquement les infos qui m’intéresse sur une autre feuille (avoir une syntaxe VBA que je pourrais adapter).
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,

    Le fichier
    Pièce jointe 516902

    Le code utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Recopie_zone_filtree()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim DerLig_f1 As Long
        Application.ScreenUpdating = False
        Set f1 = Sheets("Feuil1")
        Set f2 = Sheets("Feuil2")
        f2.Cells.Clear 'Efface les précédents résultats de la feuille 2
        DerLig_f1 = f1.Range("A" & Rows.Count).End(xlUp).Row 'Dernière ligne de la feuille 1
        NbCol = f1.[XFD1].End(xlToLeft).Column 'Dernière colonne de la feuille 1
        'Récupération de la zone filtrée et copie dans la feuille 2
        f1.Range("_FilterDataBase").Resize(, NbCol).SpecialCells(xlCellTypeVisible).Copy Destination:=f2.[A1]
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Cdlt

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci Arturo83 pour ta réponse,

    cependant, ce que je cherche à faire est un peu plus complexe.

    Je voudrais que lors de l'appui sur le bouton en page 2, que l'importation du filtre se face à ce moment là. En fait le plus dûr est d'imposer plusieurs critères (ici peugeot et citroën) et de n'importer que les colonnes voulue associées à ces deux critères.

    Est-il possible lors d'une copie d'une colonne sur une autre feuille d'imposer de ne récupérer que les lignes qui comprennent "Peugeot" et Citroën et que certaines des colonnes associées ?

    Merci d'avance pour ta réponse.

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    As-tu essayer en utilisant les filtres avancés ?
    Lire ça : http://philippetulliez.developpez.co...dvancedfilter/
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Oui, j'ai lu le tuto sur les filtres avancés mais je n'arrive pas à l'adapter à mon cas.

    Sur le tuto une zone de critère est ajoutée pour pouvoir filtrer. Moi il faudrait que je puisse ajouter mon critère directement à la macro sans passer par une zone de critère à rajouter manuellement.

    Juste que lors de la copie de ma colonne sur l'autre feuille, je lui indique qu'en plus je ne veux que les lignes comprenant spécifiquement citroën et peugeot.
    (une sorte de recherchev dans une macro vba).

  6. #6
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Je voudrais que lors de l'appui sur le bouton en page 2, que l'importation du filtre se face à ce moment là
    C'est bien ce que fait la macro. voir le fichier en exemple
    Pièce jointe 516934

    Dans le cas présent, toutes les colonnes sont recopiées. Si vous ne voulez que certaines colonnes et pas d'autres, quelles sont-elles?

    Cdlt

  7. #7
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    bonjour
    toujours 2 critères ou non
    voila un exemple à tester
    il suffit de choisir critère 1 dans une liste déroulante et critère 2 puis cliquer sur le bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub test()
     
    Application.ScreenUpdating = False
    Dim sh As Worksheet
     On Error Resume Next
    For Each sh In Sheets
        sh.ShowAllData
    Next sh
     
      Dim derlig As Long
      Dim derlig2 As Long
      Dim F1 As Worksheet
      Dim F2 As Worksheet
      Set F1 = Sheets("Feuil1")
      Set F2 = Sheets("Feuil2")
    derlig = F2.Range("A" & Rows.Count).End(xlUp).Row
    derlig2 = F1.Range("A" & Rows.Count).End(xlUp).Row
      F2.Range("A2:D" & derlig).ClearContents
    F2.Range("A1") = F1.Range("A1")
    F2.Range("B1") = F1.Range("B1")
    F2.Range("C1") = F1.Range("C1")
    F2.Range("D1") = F1.Range("D1")
    Dim C1 As String
    Dim C2 As String
    C1 = F2.Range("G1").Value
    C2 = F2.Range("J1").Value
     
    F1.Range("A1", "D" & F1.Range("A" & F1.Rows.Count).End(xlUp).Row).AutoFilter Field:=1, Criteria1:=C1, Operator:=xlOr, Criteria2:=C2
    F1.Range("A2:H" & derlig2).SpecialCells(xlCellTypeVisible).Copy Destination:=F2.Range("A2")
    Application.ScreenUpdating = True
    End Sub
    à tester
    Fichiers attachés Fichiers attachés
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  8. #8
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    En fait le critère de recherche sera toujours le même : Peugeot et Citroën.

    Je pensais utiliser une formule de ce type pour extraire les critère que je veux en feuille 2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Range("A:A").AutoFilter Field:=2, Criteria1:="Peugeot", Criteria2:"Citroën"
    Le problème c'est que je ne maîtrise pas super bien et je ne sais pas si la syntaxe est bonne.

    L'idée est que quand j'appui sur un bouton en feuille 2, il me récupère sur cette même feuille la colonne 1 filtrée avec uniquement les Citroën et les Peugeot ainsi que les plaques d'immatriculation associée. Il ne faudrait pas que je touche à la feuille 1.

  9. #9
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Sub test()
     
    Application.ScreenUpdating = False
    Dim sh As Worksheet
     On Error Resume Next
    For Each sh In Sheets
        sh.ShowAllData
    Next sh
     
      Dim derlig As Long
      Dim derlig2 As Long
      Dim F1 As Worksheet
      Dim F2 As Worksheet
      Set F1 = Sheets("Feuil1")
      Set F2 = Sheets("Feuil2")
    derlig = F2.Range("A" & Rows.Count).End(xlUp).Row
    derlig2 = F1.Range("A" & Rows.Count).End(xlUp).Row
      F2.Range("A2:B" & derlig).ClearContents
    F2.Range("A1") = F1.Range("A1")
    F2.Range("B1") = F1.Range("D1")
    F1.Range("A1", "D" & F1.Range("A" & F1.Rows.Count).End(xlUp).Row).AutoFilter Field:=1, Criteria1:="=Peugeot", Operator:=xlOr, Criteria2:="=Citroën"
    F1.Range("A2:A" & derlig2).SpecialCells(xlCellTypeVisible).Copy Destination:=F2.Range("A2")
    F1.Range("D2:D" & derlig2).SpecialCells(xlCellTypeVisible).Copy Destination:=F2.Range("B2")
    Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  10. #10
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Merci BENNASR,

    ça à l'air d'être exactement ce que je voulais faire.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Novembre 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2019
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    J'ai réussi à adapter la macro à mon tableau et ça semble fonctionner.

    Mais est-il possible de rajouter dans la colonne plaque d’immatriculation un critère pour ne sortir que les plaque immatriculées en "05" des citroën et des peugeot ?

    J'imagine que je devrais modifier la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    F1.Range("A1", "I" & F1.Range("C" & F1.Rows.Count).End(xlUp).Row).AutoFilter Field:=3, Criteria1:="=*I-SS*", Operator:=xlOr, Criteria2:="=*MOP*"
    afin d'y rajouter un critère mais comment définir ce critère sur ma colonne H en plus des critère sur la colonne C ?

    Merci d'avance.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Extraire des valeurs filtrées d'un tableau vers une nouvelle feuille
    Par Gex-88 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/11/2019, 08h42
  2. Réponses: 7
    Dernier message: 13/11/2019, 08h58
  3. Réponses: 16
    Dernier message: 17/02/2016, 16h34
  4. Réponses: 1
    Dernier message: 30/05/2012, 15h42
  5. macros pour trier un tableau vers une nouvelle feuille excel
    Par argaz01 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/05/2010, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo