Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
C

Compte Supprimé 979

Guest
Re : filtre élaboré vba

Bonjour Anthonyhk

Cela me parait normal, sachant que "Val d'Oise" est contenu dans "Val d'Oise 1", "Val d'Oise 2", "Val d'Oise 3"
 

DoubleZero

XLDnaute Barbatruc
Re : filtre élaboré vba

Bonjour, anthonyhk, BrunoM45 , le Forum,


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
399
Réponses
12
Affichages
284
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…