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 :

Copier coller en utilisant le filtre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut Copier coller en utilisant le filtre
    Bonjour,

    Je suis débutant avec VBA, j'ai besoin de votre aide,
    J'ai un fichier Excel qui comporte 9 colonnes et plusieurs lignes, dans ce fichier on trouve des personnes avec leurs historiques de formations.
    Ce que je souhaite faire c'est de créer une macro qui permet:
    - en indiquant le code d'une formation (colonne D) me copie toutes les données dans un autre onglet que je nommerais au nom de la formation recherchée.
    je le fais déjà manuellement puisque dans le filtre de la colonne D je choisi ma formation ensuite je sélectionne tout et je le recopie dans un autre onglet donc mon souhait et d'automatiser cette fonction sachant que j'en ai pour 20 formations je souhaite les récupérer toutes dans d'autres onglets.

    Par avance merci.

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut
    Merci "rdurupt" pour la réponse, depuis tout à l'heure j'essaye d'adapter ce code sur ma base mais en vain, quand je l’exécute il passe mais au résultat il ne me copie rien du tout la page reste vide...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Poste ton code!

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Bonjour,

    à la place d'un filtre, utiliser un filtre avancé copiant directement les données …



    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut
    Voici le code,

    il ne marche pas il m'indique erreur d’exécution '9', il me crée un onglet et un nouveau classeur c'est pas bon aussi.

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Private Sub CommandButton1_Click()
     
     If Me.TextBox1.Text = "" Then
        MsgBox "Veuillez indiquer votre formation, merci."
        Me.TextBox1.SetFocus
    Exit Sub
    End If
     
     'création d'une feuille pour y copier les données
    Dim sh As Worksheet
    Set sh = Worksheets.Add
    sh.Name = TextBox1
     
    ' Rechercher dans la liste, Rapport1 voulu
     Dim LastLign As Long ' Dernière ligne de la liste dans la feuille Rapport1
     Dim Pcellule As Range 'Première cellule trouver
     Dim Num As String 'Code d'identification
     Dim WbActif As Workbook
     Dim WbFiltre As Workbook
     Set WbActif = ActiveWorkbook
     Set WbFiltre = Workbooks.Add
     WbFiltre.Sheets(Rapport1).Range("A1") = sh.Range("A1")
     
     LastLign = WbActif.Worksheets("Rapport1").UsedRange.Rows.count + 1
     FiltreActif sh.UsedRange, WbFiltre.Sheets(Rapport1).UsedRange, WbActif.Worksheets("Rapport1").Cells(LastLign, 1), False
        WbFiltre.Close False
     WbActif.Worksheets("Rapport1").Cells(LastLign, 1).EntireRow.Delete
     
    NewLign = 2
    Num = TextBox1
     
    With Worksheets("Rapport1").Range("B1:B" & LastLign)
        Set c = .Find(Num)
        Set Pcellule = c 'enregistre le premier élémént trouver
      If Not c Is Nothing Then
       Do
           c.EntireRow.copy Destination:=Worksheets(TextBox1).Range("B" & NewLign) 'copie la ligne dans l'autre feuille
           Set c = .FindNext(c) ' recherche si il y a un autre code dans la liste
           NewLign = NewLign + 1
       Loop While Not c Is Nothing And c <> Pcellule
    End If
    End With
     
     
     
    End Sub
    Function FiltreActif(RangeSource As Range, CriterRange As Range, CopyRange As Range, Optional Unique As Boolean = True) As Boolean
    FiltreActif = False
    On Error Resume Next
     RangeSource.AdvancedFilter Action:= _
            xlFilterCopy, CriteriaRange:=CriterRange _
            , CopyToRange:=CopyRange, Unique:=Unique
            DoEvents
            If Err = 0 Then FiltreActif = True
            MsgBox Err.Description
            On Error GoTo 0
    End Function
    ce que je souhaite faire: dans l'onglet rapport 1 j'ai beaucoup de formations pour beaucoup de personnes, une seule personne peut avoir plusieurs formations, donc manuellement sur la colonne 'D' (code formation) je sélectionne la formation souhaite et j'affiche l'effectif avec nom prénom matricule etc...
    Je veux automatiser tout ça avec VBA, je lui donne le code il me copie les données dans un autre onglet.

    Merci
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Filtre puis copier coller
    Par PAJGGG dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2012, 00h24
  2. [Toutes versions] Copier/Coller dans une zone filtrée
    Par damsmut dans le forum Excel
    Réponses: 3
    Dernier message: 14/12/2009, 13h37
  3. probleme copier coller de cellules filtrées vba
    Par nicola13 dans le forum Excel
    Réponses: 1
    Dernier message: 06/04/2009, 14h36
  4. [Excel 2007] Utilisation d objet au lieu du copier/coller
    Par wabo67 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/11/2007, 14h57

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