Macro Excel : Filtrage de tableau
Fermé
bicpryde
Messages postés
31
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
24 mars 2014
-
Modifié par bicpryde le 21/03/2014 à 00:07
bicpryde Messages postés 31 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 24 mars 2014 - 24 mars 2014 à 16:12
bicpryde Messages postés 31 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 24 mars 2014 - 24 mars 2014 à 16:12
A voir également:
- Macro Excel : Filtrage de tableau
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
2 réponses
bicpryde
Messages postés
31
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
24 mars 2014
184
21 mars 2014 à 18:10
21 mars 2014 à 18:10
Bonjour,
petit up, je suis parvenu à avancer ma macro. en fait le plus simple visiblement serai de copier le tableau filtrer dans un nouvel onglet.
Seul problème avec le code ci-dessous c'est qu'il ne fonctionne pas très bien.
Mon tableau à trier ce trouve dans l' onglet Plannig a la taille suivante A1:L11. Le résultat obtenu par ma macro est de ne copier que la ligne 1 de mon tableau en ligne 12 de la feuille de destination appeller Export
Sub Filtrer()
Dim Derlig As Long, Lig As Long
Dim LigCopie As Long
Dim DateDuJour As Date
Dim Selection As Date
DateDuJour = Date
'Set Condition = .Cells(Lig, 1) < DateDuJour
If DateDuJour < Range("G2").Value Then
With Sheets("Planning")
For Lig = 0 To 200 'pour pas avoir la ligne des titres
.Columns("A:L").AutoFilter
Derlig = .Range("A65536").End(xlUp).Row
LigCopie = Sheets("Planning").Range("A65536").End(xlUp).Row + 1
.Range("$A$1:$L$1").AutoFilter Field:=1, Criteria1:=Condition, Operator:=xlAnd
.Range("A1:L" & Derlig).Copy Sheets("Export").Range("A" & LigCopie)
Next Lig
End With
End If
End Sub
petit up, je suis parvenu à avancer ma macro. en fait le plus simple visiblement serai de copier le tableau filtrer dans un nouvel onglet.
Seul problème avec le code ci-dessous c'est qu'il ne fonctionne pas très bien.
Mon tableau à trier ce trouve dans l' onglet Plannig a la taille suivante A1:L11. Le résultat obtenu par ma macro est de ne copier que la ligne 1 de mon tableau en ligne 12 de la feuille de destination appeller Export
Sub Filtrer()
Dim Derlig As Long, Lig As Long
Dim LigCopie As Long
Dim DateDuJour As Date
Dim Selection As Date
DateDuJour = Date
'Set Condition = .Cells(Lig, 1) < DateDuJour
If DateDuJour < Range("G2").Value Then
With Sheets("Planning")
For Lig = 0 To 200 'pour pas avoir la ligne des titres
.Columns("A:L").AutoFilter
Derlig = .Range("A65536").End(xlUp).Row
LigCopie = Sheets("Planning").Range("A65536").End(xlUp).Row + 1
.Range("$A$1:$L$1").AutoFilter Field:=1, Criteria1:=Condition, Operator:=xlAnd
.Range("A1:L" & Derlig).Copy Sheets("Export").Range("A" & LigCopie)
Next Lig
End With
End If
End Sub
bicpryde
Messages postés
31
Date d'inscription
vendredi 13 avril 2007
Statut
Membre
Dernière intervention
24 mars 2014
184
24 mars 2014 à 16:12
24 mars 2014 à 16:12
Petit Up, j' ai encore avancé. Finalement j'ai choisi la copie de ligne plutôt que le filtrage. J'ai encore quelques erreurs dans le code ci-dessous.
Le code fonctionne quand j' envoie le résultat dans une feuille de mon classeur puis que j' envoie cette feuille via la création automatique d'un classeur temporaire.
Mais ce que j' essaie de faire maintenant c'est de coller le résultat directement dans un classeur temporaire. Si vous avez des idées je suis preneur.
Sub SuiviPilotage2()
Dim DateDuJour As Date
Dim IndexLigne As Integer
Dim NouveauTableau As Excel.Workbook
Dim NouvelleFeuille As Excel.Worksheet
'COPIE DU TABLEAU FILTRE
DateDuJour = Date
IndexLigne = 2
Sheets("Planning").Rows(1).Copy Sheets("Export").Cells(IndexLigne - 1, 1)
Do While Sheets("Planning").Cells(IndexLigne, 1).Value <> ""
If Sheets("Planning").Cells(IndexLigne, 7).Value < DateDuJour Then
NouveauTableau = Workbook.Add
NouvelleFeuille = NouveauTableau.Worksheets(1)
Sheets("Planning").Rows(IndexLigne).Copy NouvelleFeuille
End If
IndexLigne = IndexLigne + 1
Loop
'ENVOIE DU MAIL
NouveauTableau.SendMail "damien.delhaye@orange.com", "Export Bacara"
NouveauTableau.Quit
End Sub
Le code fonctionne quand j' envoie le résultat dans une feuille de mon classeur puis que j' envoie cette feuille via la création automatique d'un classeur temporaire.
Mais ce que j' essaie de faire maintenant c'est de coller le résultat directement dans un classeur temporaire. Si vous avez des idées je suis preneur.
Sub SuiviPilotage2()
Dim DateDuJour As Date
Dim IndexLigne As Integer
Dim NouveauTableau As Excel.Workbook
Dim NouvelleFeuille As Excel.Worksheet
'COPIE DU TABLEAU FILTRE
DateDuJour = Date
IndexLigne = 2
Sheets("Planning").Rows(1).Copy Sheets("Export").Cells(IndexLigne - 1, 1)
Do While Sheets("Planning").Cells(IndexLigne, 1).Value <> ""
If Sheets("Planning").Cells(IndexLigne, 7).Value < DateDuJour Then
NouveauTableau = Workbook.Add
NouvelleFeuille = NouveauTableau.Worksheets(1)
Sheets("Planning").Rows(IndexLigne).Copy NouvelleFeuille
End If
IndexLigne = IndexLigne + 1
Loop
'ENVOIE DU MAIL
NouveauTableau.SendMail "damien.delhaye@orange.com", "Export Bacara"
NouveauTableau.Quit
End Sub