filtre élaboré vba

  • Initiateur de la discussion Initiateur de la discussion anthonyhk
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 🙂
 
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
81
Réponses
32
Affichages
976
Réponses
4
Affichages
243
Réponses
40
Affichages
3 K
Réponses
12
Affichages
769
  • Question Question
Microsoft 365 Macro VBA - Excel
Réponses
12
Affichages
624
Retour