[Catégorie encor et encore et encore modifiée VB6 --> VBA] filtre et la selectio [Résolu]

Messages postés
113
Date d'inscription
mardi 14 septembre 2010
Statut
Membre
Dernière intervention
26 octobre 2014
- - Dernière réponse : cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 8 oct. 2010 à 14:53
Bonjour
J'ai un tableau excel qui commence de la colonne "A2" au "L2" mais la fin du tableau est toujours variable. Dans la colonne "G2" j'ai des nombres par exemple (1245-1295-1274-6598-4589-2574-1212.....................).
Je veux filtrer par exemple les nombres qui commencent par 12 et les mettre dans une autre feuil avec les valeurs qui ce trouvent dans toute la ligne ("A" ...... "L")
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
26551
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
22 octobre 2019
316
3
Merci
Bonjour,

Voila ce que je te propose :
' 1 - Je commence par ajouter dans une nouvelle colonne
' une formule me permettant de ne garder QUE les 2 premiers
' chiffres de la colonne à filtrer
'
' 2 - J'applique un filtre sur cette colonne pour ne prendre
' que les nombres "22"
'
' 3 - Je recopie le filtre dans un autre emplacement.
'
'-------------------------------------------------------------

et le code !

Sub Macro_filtre()
'-----------------------------------------------------
' Filre sur la colonne G pour ne garder que les nombres
' commençant par 22.
'-----------------------------------------------------

' Déclaration des variables.
'***************************
Dim Ecar
Dim Criter
Criter = "22"
' Colonne à Filtrer (ici la G)
Dim Col_F As Integer
Col_F = 7
' Dernière ligne du tableau à filtrer
Dim DernL As Integer
DernL = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
' colonne où sera placée la formule
Dim NewC As Integer
NewC = 13 'ici M
' Feuille où recopier le filtre
Dim NomF As String
NomF = "Feuil3"


' Début du programme
'***************************
' Feuille en cours..
Act_Sh = ActiveSheet.Name

' Mise en place de la formule
Ecar = Col_F - NewC
Cells(1, NewC).Activate
ActiveCell.FormulaR1C1 = "=LEFT(RC[" & Ecar & "],2)"
Cells(1, NewC).Select
Selection.AutoFill Destination:=Range(Cells(1, NewC), Cells(DernL, NewC))

' Mise en place du filtre automatique
Rows(1).Select 'filtre auto sur la ligne 1
Selection.AutoFilter
Selection.AutoFilter Field:=NewC, Criteria1:=Criter

' Recopie de la plage dans un autre emplacement
Selection.CurrentRegion.Select
Selection.Copy
Sheets(NomF).Activate
Sheets(NomF).Range("A1").Select
ActiveSheet.Paste

' Suppression de la colonne ajoutée pour la formule.
Sheets(Act_Sh).Activate
Columns(NewC).Delete
' j'enleve le filtre auto de la feuille
Range("A1").Select
Selection.AutoFilter
End Sub


Voila.
Bien sur il existe bien d'autres façons de procéder;
On aurait pu par exemple lire chaque ligne une par une via une boucle puis recopier celles dont la valeur en colonne G commence par 22 ..
Mais si ton tableau est "grand" . la boucle prend plus de temps que de faire directement en filtre.




Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 188 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jordane45
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
0
Merci
Quand tu mettras-tu dans la tête que tu fais du VBA, et pas du VB6 ?
Commenter la réponse de cs_Jack