macro pour filtrer les donnes avec de faire un Tranferts

knl2

XLDnaute Nouveau
Bonjour,
J'ai un fichier qui fait 50 mega et c'est pour cette raison que jveux pas copier-coller les données directement dans mon fichier de travail.
J'ai écrit une macro qui:
-ouvre le fichier concerné
-compte le nombre de ligne du ficheir et l'enregistre dans compteur_ligne
-je parcours la colonne a trier(je commence de AE1 jusqua AE&compteurligne
-si la valeur d'une cellule de la colonne AE - date d'aujourd'hui >0 alors
je copie la ligne entière dans mon fichier
je la copie dans la ligne une en premier ensuite 2eme 3 4 ,....
la variable r m'aide à faire cela.
Mais le code ne fonctionne pas.voici le code:
Code:
 Dim données_Svehic As Workbook
Set données_Svehic = GetObject("C:\Bureau\Svehic.xls")
données_Svehic.Activate


compteur_Ligne = ActiveSheet.UsedRange.Rows.Count
r = 1
For i = 1 To compteur_Ligne

If ActiveSheet.Range("AE" & i) - Date >= 10 Then

    données_Svehic.Worksheets(1).Rows(i).Select
    Selection.Copy
End If
    

  
ThisWorkbook.Worksheets("Feuil1").Activate
Sheets("Feuil1").Range("A" & r).Select

        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

 r = r + 1
Next i
Close Object
End Sub
j'ai l'erreur incompatibilité de type
si quelqu'un a une idée merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re : macro pour filtrer les donnes avec de faire un Tranferts

Bonjour à tous

knl2
Essayes ton code en déclarant toutes tes variables pour commencer.

Avec un fichier exemple allégé joint à ta question, nous pourrions faire des tests...

Par curiosité, j'ai testé sous XL 2003, et j'ai un problème
Code:
Sub test()
Dim données_Svehic As Workbook
Set données_Svehic = GetObject("C:\temp\test.xls")
données_Svehic.Activate
données_Svehic.Sheets(1).Select
End Sub

Le fichier est bine ouvert mais il est invisible et dans VBA Afficher l'objet est grisé ???

C'est pareil chez vous ? avec une version supérieure d'Excel ?

PS: D'ailleurs, knl2 pourquoi ne pas simplement passé par WorkBooks.Open ?
Code:
Sub Macro1()
Dim données_Svehic As Workbook
Set données_Svehic = Workbooks.Open("C:\temp\test.xls")
données_Svehic.Activate
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : macro pour filtrer les donnes avec de faire un Tranferts

Re

Personnellement , j'utiliserai plutôt un filtre élaboré (en VBA), qu'une boucle
et comme le titre de ta question parle de filtrer ça tombe bien ;)

Test OK chez moi avec le code ci-dessous (je te laisse faire les adaptations nécessaires pour coller à la réalité de tes fichiers)
Code:
Sub Macro1()
Dim données_Svehic As Workbook, plgf As Range, ACOPIER As Range
Set données_Svehic = Workbooks.Open("C:\temp\test.xls")
With données_Svehic.Sheets(1)
    .Range("AF2").FormulaR1C1 = "=(RC[-1]-TODAY())>=10"
    .Range("A1:AE21").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
    .Range("AF1:AF2"), Unique:=False
Set plgf = .Range("_FilterDataBase")
Set ACOPIER = plgf.Offset(1, 0).Resize(plgf.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
End With
ACOPIER.Copy ThisWorkbook.Sheets(1).Range("A65536").End(xlUp)(2)
données_Svehic.Close False
End Sub
 

knl2

XLDnaute Nouveau
Re : macro pour filtrer les donnes avec de faire un Tranferts

Je te remercie infiniement pour ton aide staple1600. Si ta le temps pourra tu mexpliquer ces morceau stp
.Range("AF2").FormulaR1C1 = "=(RC[-1]-TODAY())>=10"
.Range("A1:AE21").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
.Range("AF1:AF2"), Unique:=False
J'ai jamais utilisé formulaR1C1
je te remercie encore une fois
 

Staple1600

XLDnaute Barbatruc
Re : macro pour filtrer les donnes avec de faire un Tranferts

Bonjour

Pour les explications, premier réflexe à acquérir avant le 21/12/2012, la touche magique dans Excel: F1

Si tu ne trouves pas dans l'aide réponses à tes questions sur FormulaR1C1 (ou sur le net d'ailleurs), je repasserai ici t'en donner ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 500
Messages
2 089 010
Membres
104 004
dernier inscrit
mista