filtre

  • Initiateur de la discussion nanard
  • Date de début
N

nanard

Guest
Bonjour à tous.
voici mon pb:
Une première feuille contient des renseignements concernat nom, prenom et nnée de naissance , j'aimerais copier vers une autre feuille toutes les personnes (nom et prenom) nées en 60 dans une feuille , celles nées en 70 dans une autre feuille etc..
Si une ame cahritable pouvait me venir en aide.
MCI par avance
 
H

Hervé

Guest
En admettant que l'année de naissance des gens soit dans la colonne A, tu peux essayer avec ca, et tu recommence avec d'autre feuille et conditions (c'est un code que thierry m'avait filé que j'ai essayé d'adapter), il te créé une feuille où il te recolle ce que tu lui demande. si par exemple tu veux les gens nés dans les années 60, tu mets
If (Mid(PlageSource(i, ColToScan), 3, 1) = '6')

tu verras ca plus bas. Pour changer le colonne des données (si c'est pas la colonne A), tu changes juste le ColToScan, etc...



Const ColToScan As Byte = 1 '<= Soit la colonne 'A'...

Option Explicit
Option Base 1

Sub Filtre()
Dim PlageSource As Variant
Dim PlageCible() As Variant
Dim i As Long, x As Long
Dim NbCol As Byte
Dim C As Byte



x = 1

With ActiveSheet
NbCol = .Range('A1').End(xlToRight).Column
PlageSource = .Range(Cells(1, 1), Cells(.Range('A65536').End(xlUp).Row, NbCol))
End With

For i = 1 To UBound(PlageSource)
If (Mid(PlageSource(i, ColToScan), 1, 4) = '1960') Then
ReDim Preserve PlageCible(UBound(PlageSource), NbCol)
For C = 1 To NbCol
PlageCible(x, C) = PlageSource(i, C)
Next
x = x + 1
End If
Next i

Worksheets.Add 'Ici on crée un nouvelle feuille à la volée
ActiveSheet.Name = 'Nés_en_60'
Range(Cells(1, 1), Cells(x, NbCol)) = PlageCible



End Sub


dis moi si ca marche.
 
N

nanard

Guest
salut Hervé
désolé mais je n'ai pas compris le déroulement de cette procédure et n'ai pas réussi à l'adapter à me s besoinsqui sont:
transfert après filtre de la feuill1 des colonnes nom (col a) et prénom (col b) habitant la provence dans la feuil2 puis ceux habitant en savoie dans la feuil3.
Merci par avance A+
 
H

Hervé

Guest
Salut nanard, le forum,

je vais essayer de t'expliquer...
tout d'abord, copie/colles ce code dans une macro (ici je l'ai appelée 'filtre')


le chiffre après ColToScan est celui de la colonne que tu veux trier (région, année de naissance ou que sais-je), si c'est la colonne C, tu mets '3', D tu mets '4', etc...selon la colonne que tu veux trier

C'est cette ligne qui te permet de faire le tri:

If (Mid(PlageSource(i, ColToScan), 1, 4) = '1960')

ici ca veut dire que si les 4 caractères, en partant du 1er, dans la colonne que tu veux trier sont '1960', alors il va garder la ligne.

Bref, finalement il va garder toutes les lignes qui correspondent au critère, et va les coller dans une nouvelle feuille (qu'il crée plus bas), que tu appelles comme tu veux (ici 'nés_en_1960')


Si tu veux les gens qui viennent de provence (je sais pas trop comment est organisé ton tableau, mais...), tu mets par ex:

If (Mid(PlageSource(i, ColToScan), 1, 8) = 'provence')

ou

If (Mid(PlageSource(i, ColToScan), 1, 4) = 'prov')

ensuite t'as plus qu'à recoller le code plus bas avec une autre condition, et un autre nom de feuille, en oubliant pas en haut du code de mettre

Sheets('nom_de_ta_feuille_de_base').Activate


oki?

voilou, bonne journée

Hervé.
 

Discussions similaires

Réponses
15
Affichages
1 K
Compte Supprimé 979
C

Membres actuellement en ligne

Statistiques des forums

Discussions
314 017
Messages
2 104 584
Membres
109 084
dernier inscrit
mizab