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 :

Trier et exporter des données en VBA [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Par défaut Trier et exporter des données en VBA
    Bonjour,

    voici mon problème,

    Dans une premiere feuille nommée "feuil1" j'ai dans la colonne B des noms d'appareils; j'aimerai pouvoir, dans une autre feuille nommée "feuil2" récupérer toutes les lignes qui contiennent le même nom d'appareil et les copiers dedans (juste en cliquant sur un bouton si possible). Il me faudrait une feuille différente pour chaque appareils ayant un nom différent.

    Je suis plus que débutant en VBA et donc j'ai beaucoup de mal,
    merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    J'ai supposé que les feuilles n'étaient pas créées. La macro utilise un dictionnaire pour éliminer les doublons et un filtre automatique pour sélectionner les appareils :

    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
    Sub Nesta09()
        Dim Plage As Range, Dico As Object, C As Range, Sh As Worksheet
        Set Dico = CreateObject("Scripting.Dictionary")
        With Sheets("Feuil1")
            Set Plage = .Range(.[B2], .Cells(.Rows.Count, 2).End(xlUp))
            For Each C In Plage
                If Not Dico.exists(C.Value) Then
                    Dico.Add C.Value, C.Value
                End If
            Next C
            For Each Item In Dico.items
                Set Plage = .Range(.[B1], .Cells(.Rows.Count, 2).End(xlUp))
                .AutoFilterMode = False
                Plage.AutoFilter 1, Item
                Set Plage = Plage.SpecialCells(xlCellTypeVisible).EntireRow
                Set Sh = Sheets.Add(after:=Sheets(Sheets.Count))
                Sh.Name = Item
                Plage.Copy Sh.[A1]
            Next Item
            .AutoFilterMode = False
        End With
    End Sub
    N'hésite pas à poser des questions.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Par défaut
    Merci infiniment ton code marche parfaitement et j'ai reussi à le comprendre, c'est parfait pour moi, je pouvais pas avoir mieux je crois, merci encore.

    Bonjour,

    finalement j'ai parlé un peu trop vite le code marche bien mais si je change la colonne de recherche et le nom de la feuille de depart (renomée ECR) j'ai une erreur qui survient à ce niveau : Sh.Name = Item (erreur 1004) je ne comprends pas pourquoi... dans mon véritable tableau les noms des appareils commence à la colonne AK17 avant se sont les intitulés.

    merci de votre aide

    Je peux envoyer le fichier si besoin...

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Oui, mets-le en pièce jointe; efface au préalable les données confidentielles.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Par défaut
    feuille calculs.xlsx


    voila ma feuille, les données sont fausses, les noms des appareils a trier sont dans la colonne AK (du type LLB LLC ...).

    merci

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Voici la macro modifiée :

    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
    Sub Nesta09()
        Dim Plage As Range, Dico As Object, C As Range, Sh As Worksheet
        Set Dico = CreateObject("Scripting.Dictionary")
        With Sheets("ECR")
            Set Plage = .Range(.[K17], .Cells(.Rows.Count, 11).End(xlUp))
            For Each C In Plage
                If Not Dico.exists(C.Value) Then
                    If C.Value <> "" Then Dico.Add C.Value, C.Value
                End If
            Next C
            For Each Item In Dico.items
                Set Plage = .Range(.[K17], .Cells(.Rows.Count, 11).End(xlUp))
                .AutoFilterMode = False
                Plage.AutoFilter 1, Item
                Set Plage = Plage.Offset(1).Resize(Plage.Rows.Count - 1)
                Set Plage = Plage.SpecialCells(xlCellTypeVisible).EntireRow
                Set Sh = Sheets.Add(after:=Sheets(Sheets.Count))
                Sh.Name = Item
                Plage.Copy Sh.[A1]
            Next Item
            .AutoFilterMode = False
        End With
    End Sub

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

Discussions similaires

  1. [VBA-E] Exporter des données Excel dans Word
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/08/2007, 19h25
  2. [VBA-E]Exporter des données d'Excel vers Access
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/06/2006, 15h57
  3. Réponses: 2
    Dernier message: 15/04/2005, 15h51
  4. importer et exporter des données
    Par denza1 dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/12/2004, 16h34
  5. Exporter des données sous forme de requetes
    Par Pasiphae dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/10/2004, 17h27

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