Couper/coller un résultat sur un filtre sous EXCEL en macro.

windhunter56 Messages postés 16 Date d'inscription jeudi 23 octobre 2008 Statut Membre Dernière intervention 5 mai 2013 - 17 avril 2009 à 17:13
windhunter56 Messages postés 16 Date d'inscription jeudi 23 octobre 2008 Statut Membre Dernière intervention 5 mai 2013 - 17 avril 2009 à 22:53
Windhunter56

Bonjour à tous,
je solicite une aide pour mon problème sous Excel pour élaborer ma macro.
J'ai une feuille1 (données) sur laquelle il y a deux colonnes (noms et prénoms).
Une feuille2 avec la cellulle A1 (le nom que je recherche)qui doit servir de référence et la feuille3 sur laquelle doit être copier le résultat de mon extraction de la feuille1.
Quand je dis extraction, je veux dire couper le résultat de la feuille1 et le copier dans la feuille3.
J'ai essayé plusieurs réponse sur divers sites mais sans arriver à mon but final.
La version ,je le fais manuellement en même temps que j'enregistre ne régle pas le problème de la sélection du résultat.
J'espère qu'une personne pourra m'aider.
Merci.

2 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
17 avril 2009 à 17:39
Salut,

j'ai utilisé cette methode pour creer un snippet qui permet d'obtenir une liste sans doublon.

le snippet est ici : http://www.codyx.org/snippet_supprimer-doublons-combobox_374.aspx

Voici le code:

Sub ListeSansDoublon(ByRef MaPlage As Range, ByRef MaCombobox As ComboBox)
    ' on commence par verifier ce qui a été passé en parametre
    If Not MaCombobox Is Nothing And Not MaPlage Is Nothing Then
        If TypeOf MaCombobox Is ComboBox Then
            Application.ScreenUpdating = False
            ' utilisation du filre de donnée élaboré
            MaPlage.AdvancedFilter Action:=xlFilterInPlace, Unique:=True
            ' le filtre élaboré a besoin d'un colonne de donnée avec etiquette
            ' donc pour ne pas mettre cette etiquette dans la liste on se decale d'une ligne vers le bas
            Set MaPlage = MaPlage.Offset(1, 0).Resize(MaPlage.Rows.Count - 1, 1)
            ' les données en doubles on été cachées par le filtre
            ' il suffit donc de ne recupérer que ce qui est visible
            Set MaPlage = MaPlage.SpecialCells(xlCellTypeVisible)
            ' comme on ne peut pas attribuer les valeurs d'une plage composée de plusieurs area a une combobox
            ' on vas contourner le probleme par un copy paste des valeurs sur une plage temporaire
            MaPlage.Copy
            Range("Z1").PasteSpecial Paste:=xlPasteValues ' ici la plage temporaire est la colonne Z
            MaCombobox.List() = Selection.Value
            ' on desactive le filtre
            ActiveSheet.ShowAllData
            ' on efface la zone temporaire
            Selection.ClearContents
            ' on centre l'affichage sur la plage d'origine
            MaPlage.Cells(1, 1).Activate
            Application.ScreenUpdating = True
        End If
    End If
End Sub

Evidemment il te faudrat l'adapter a ton besoin mais tout y est.

La seul chose d'on tu n'as pas besoin est la partie copy/paste dans une zone temporaire
0
windhunter56 Messages postés 16 Date d'inscription jeudi 23 octobre 2008 Statut Membre Dernière intervention 5 mai 2013
17 avril 2009 à 22:53
Windhunter56

Euh....! T'as pas plus simple?
Je voulais simplement couper la ligne de ma recherche vers une autre feuille.
Je vois pas comment la celluleA1de la feuille2 trouve sa place dans ta macro. Et pour le peu que j'ai réussi à utiliser ta macro (en supposant avoir fait ce qu'il faut) je n'arrive qu'a copier une ligne dans le feuil3 et qui ne correspond pas à mon critère.
Peux-tu m'indiquer où je dois placer mes donnéess dans ta macro.
Désolé pour mon petit niveau en VBA.
Merci
0
Rejoignez-nous