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

Macros et VBA Excel Discussion :

Exporter une liste de données sans doublons après un filtre sur une deuxième feuille [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Par défaut Exporter une liste de données sans doublons après un filtre sur une deuxième feuille
    Bonjour à tous,

    Après plusieurs jours de recherches (google et ici même), je me résouds à poser ma question.

    Je possède un classeur avec deux feuilles et je souhaite imposer un filtre sur la première. Suite à ce filtre j'aimerais obtenir la liste sans doublons des noms qui se trouvent en colonne B et l'importer sur la feuille 2.

    Autrement dit je cherche à faire une extraction sans doublon avec exportation sur une autre feuille. J'ai fouillé les sujets de ce forum qui pouvaient ressembler à cette demande mais je n'ai rien trouvé de concluant.

    Quelqu'un sait-il le faire ou quelqu'un a t-il une idée pour arriver au même résultats?

    Merci pour votre aide à tous!

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Penses a utiliser l'enregistreur de macro, ça peut rendre de grand service

    Ici on filtre la plage A2 à A27, on copie les données sans doublons dans la colonne F puis on fait un couper/coller de la colonne F en colonne A dans l'onglet Feuil3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A2:A27").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
            "F1"), Unique:=True
    Range("F:F").Cut Sheets("Feuil3").Range("A:A")

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Par défaut
    Bonjour, tout d'abord merci d'avoir pris le temps de me répondre, j'ai malheureusement eu moins de temps dispo ces derniers jours pour regarder de près mon problème.

    J'utilise l'éditeur de macro pour m'inspirer quand je suis en panne, c'est pas mal mais le codze n'est pas toujours optimun

    En ce qui concerne la solution proposée, je la connais mais j'aimerais aller plus loin, c'est à dire sans passer par une étape de collage et couper coller de cette même zone.

    En résumé ne pas passer par une zone intermédiaire, cela est-il possible?

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Essai cette macro

    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
     
    Sub filtre()
    Dim iSource As Long
    Dim iDest As Long
    Dim rg As Range
     
    iDest = 1
    For iSource = 1 To Range("A:A").End(xlDown).Row
        'Recherche dans la feuil3
        Set rg = Sheets("Feuil3").Range("A:A").Find(Range("A" & iSource).Value, LookIn:=xlValues)
        If rg Is Nothing Then
            Sheets("Feuil3").Range("A" & iDest).Value = Range("A" & iSource).Value
            iDest = iDest + 1
        End If
     
    Next iSource
     
    End Sub

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Par défaut
    Bonjour, mercipour cette petite macro qui marche vraiment bien!

    J'ai juste encore quelques questions afin de bien comprendre et de pouvoir la réutiliser sur d'autres fichiers

    1. Que représente les variables iDest et iSources?

    2. A quoi sert la variable rg?

    3. Est-il possible d'avoir une brève description des deux ou trios étapes importantes de la macro (pour vérifier si j'ai bien compris la philosophie de la macro... )

    4. Dernier point si je veux coller la sélection sur la feuille 3 mais que à partir de A8 comment le noter dans la macro, j'ai essayé mais j'ai du me tromper dans mon écriture...

    Merci beaucoup!

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    J'ai légèrement amélioré
    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
    Sub filtre()
    Dim iSource As Long 'Ligne feuille Source
    Dim iDest As Long ' ligne feuille destination
     
    iDest = 8 'ligne de démarrage de l'ajout dans la feuille destination
    'Boucle sur les lignes de la feuille source
    For iSource = 1 To Range("A:A").End(xlDown).Row
        'Recherche dans la feuil3
        If Sheets("Feuil3").Range("A:A").Find(Range("A" & iSource).Value, LookIn:=xlValues) Is Nothing Then
            'Si pas trouvé ajoute la données dans la feuille Cible
            Sheets("Feuil3").Range("A" & iDest).Value = Range("A" & iSource).Value
            iDest = iDest + 1
        End If
     
    Next iSource
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. extraction d'une liste de données sans doublons et triées
    Par lps02 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/04/2012, 22h51
  2. [SP-2010] Autoriser l'approbation sur une liste de tâches sans l'ajout
    Par Gond63 dans le forum SharePoint
    Réponses: 0
    Dernier message: 09/05/2011, 10h36
  3. Filtre sur une liste box
    Par Dereck07 dans le forum Débuter
    Réponses: 8
    Dernier message: 31/01/2010, 21h49
  4. Réponses: 4
    Dernier message: 19/10/2006, 17h19
  5. Filtre sur une liste de valeurs
    Par Death83 dans le forum Débuter
    Réponses: 3
    Dernier message: 07/05/2006, 00h39

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