filtre élaboré vba

anthonyhk

XLDnaute Junior
Bonjour,

Suite à une macro avec un filtre élaborée, je rencontre un problème.

La macro crée de nouveaux onglets en fonction du département grâce au filtre. puis copie colle les lignes correspondant au critère dans l'onglet correspondant.

Hors le filtre, n'arrive pas à faire la distinction pour certain critères.
Ex : J'ai les départements Val D'Oise, Val D'Oise 1, Val D'oise 2 et Val D'oise 3.
La macro me crée les onglets Val D'Oise, Val D'Oise 1, Val D'oise 2 et Val D'oise 3 avec le copier/coller.
Hors dans l'onglet Val D'oise, je retrouve des lignes de Val D'Oise 1, Val D'oise 2 et Val D'oise 3.

Comment faire ?

Merci de votre aide :)
 

Pièces jointes

  • agenda HE_E.xls
    309.5 KB · Affichages: 28
  • agenda HE_E.xls
    309.5 KB · Affichages: 36
  • agenda HE_E.xls
    309.5 KB · Affichages: 29

DoubleZero

XLDnaute Barbatruc
Re : filtre élaboré vba

Bonjour, anthonyhk, BrunoM45 :), le Forum,

... Hors le filtre, n'arrive pas à faire la distinction pour certain critères.
Ex : J'ai les départements Val D'Oise, Val D'Oise 1, Val D'oise 2 et Val D'oise 3.
La macro me crée les onglets Val D'Oise, Val D'Oise 1, Val D'oise 2 et Val D'oise 3 avec le copier/coller.
Hors dans l'onglet Val D'oise, je retrouve des lignes de Val D'Oise 1, Val D'oise 2 et Val D'oise 3...

Cf. ceci et cela.

A bientôt :)
 

laurent950

XLDnaute Accro
Re : filtre élaboré vba

Bonsoir,

Vite fait en passant avec une petite astuce :

Un bout de code + une procédure et le tour et joué

Source :

VB:
Option Compare Text
Sub nettoyage_fichier()

Worksheets("extract").Activate
    Range("A11", "Y5000").Select
        Selection.Delete
                      
          
End Sub

Sub filtre_elab()

Dim tab1() As Variant
' Procedure
'----------
test tab1

' Creation des feuilles
'----------------------
For i = 1 To UBound(tab1, 1)
    If tab1(i, 9) <> "x" Then
        Sheets("template").Copy after:=Sheets(Sheets.Count) 'on copie la feuille template en dernier
        Sheets(Sheets.Count).Name = tab1(i, 8) 'on la renomme avec le nom du département
    End If
Next i
i = Empty

' Remplissage selon condiction (on renvoie toutes les personnes du departement)
'------------------------------------------------------------------------------

For i = 1 To UBound(tab1, 1)
    For k = 1 To UBound(tab1, 2) - 1
        Sheets(tab1(i, 8)).Cells(Sheets(tab1(i, 8)).Cells(65536, k).End(xlUp).Row + 1, k) = tab1(i, k)
    Next k
Next i

End Sub

VB:
Sub test(tab1() As Variant)
' Procedure ci-dessous
'---------------------
Dim Fextract As Worksheet
Set Fextract = Worksheets("extract")

tab1 = Fextract.Range(Fextract.Cells(11, 1), Fextract.Cells(Fextract.Cells(65536, 1).End(xlUp).Row, 8))
ReDim Preserve tab1(1 To UBound(tab1, 1), 1 To 9)

For i = 1 To UBound(tab1, 1)
    For j = i + 1 To UBound(tab1, 1)
        If tab1(i, 8) = tab1(j, 8) Then
            tab1(j, 9) = "x"
        End If
    Next j
Next i
i = Empty
j = Empty

End Sub

Laurent
 

Pièces jointes

  • Astuce agenda HE_E.xls
    235.5 KB · Affichages: 24
Dernière édition:

Discussions similaires

Réponses
12
Affichages
333
Réponses
12
Affichages
248

Statistiques des forums

Discussions
312 347
Messages
2 087 503
Membres
103 564
dernier inscrit
Paul 1