Se connecter avec
S'enregistrer | Connectez-vous

Tri d\'une feuille par date et copie vers une autre

Dernière réponse : dans Programmation

Bonjour

je suis depuis hier sur un programme pour trier un tableau par dates, et copier ce tri sur une autre feuille.
Voici mon code
  1. Sub Macro8()
  2.  
  3. 'lire les dates
  4.  
  5. Dim dat1#, dat2#, plage As Range
  6.  
  7. Sheets("page destination").Select
  8.  
  9.  
  10. dat1 = CDbl(Cells(5, 4))
  11.  
  12. dat2 = CDbl(Cells(5, 6))
  13.  
  14.  
  15. D = Sheets("page destination").UsedRange.Rows.Count
  16. If D > 10 Then
  17. Range(Cells(11, 1), Cells(D, 24)).Clear
  18. End If
  19.  
  20.  
  21. 'filtrer
  22. Sheets("page input").Select
  23.  
  24. c = Sheets("page input").UsedRange.Rows.Count
  25. Application.ScreenUpdating = False
  26. Sheets("page input").AutoFilterMode = False
  27. Set plage = Range("A7", [I65536].End(xlUp))
  28. plage.AutoFilter 9, ">=" & dat1, xlAnd, "<=" & dat2
  29. plage.Copy
  30.  
  31. Sheets("page destination").Select
  32. Range("a11").Select
  33. plage.PasteSpecial xlPasteFormats
  34. plage.PasteSpecial Paste:=xlPasteValues
  35.  
  36.  
  37. Call macro9
  38. Sheets("page destination").Select
  39. Range("a11").Select
  40.  
  41.  
  42. End Sub
  43.  
  44. Sub macro9()
  45. Sheets("page input").Select
  46. Range("a1:x6").Activate
  47. Sheets("page input").EnableAutoFilter = True
  48. Range("a7").Select
  49.  
  50. End Sub



J'ai plusierus fois tester des codes différents pour l'écriture de l'autofilter et j'ai à chaque fois la même erreur de compilation:
en allemand "Laufzeitfehler 1004". C'est en allemand, mais en gros la ligne d'autofilter est surlignée en jaune et dû à cette erreur, la macro ne marche pas.

C'es t pour le boulot, et je n'en peux plus de chercher.

Vous avez pas une idée

merci beaucoup

Autres pages sur : tri feuille date copie vers

Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

Attention les yeux, les commentaires désagréables vont fuser.
Mais c'est pour ton bien. Si, si...
  1. Sub Macro8()
  2. 'lire les dates
  3.  
  4. Dim dat1#, dat2#, plage As Range
  5.  
  6.  
  7. '// Utilise Worksheets. (oui, je sais, l'enregistreur ne le fait pas)
  8. '// Et ne fais pas de Select, ça ne sert à rien
  9. Sheets("page destination").Select
  10.  
  11. '// Mets devant chaque Cells/Range la feuille à laquelle on se rapporte.
  12. dat1 = CDbl(Cells(5, 4))
  13. dat2 = CDbl(Cells(5, 6))
  14.  
  15. '// Ah, tu vois que tu sais le faire !
  16. D = Sheets("page destination").UsedRange.Rows.Count
  17. If D > 10 Then
  18. Range(Cells(11, 1), Cells(D, 24)).Clear
  19. End If
  20. 'filtrer
  21.  
  22. '// Non
  23. Sheets("page input").Select
  24.  
  25. '// Oui
  26. c = Sheets("page input").UsedRange.Rows.Count
  27.  
  28. '// Qu'est-ce que ce truc-là vient-il faire là ?
  29. '// En plus, je ne vois pas de remise à True !
  30. Application.ScreenUpdating = False
  31.  
  32. Sheets("page input").AutoFilterMode = False
  33. Set plage = Range("A7", [I65536].End(xlUp))
  34. plage.AutoFilter 9, ">=" & dat1, xlAnd, "<=" & dat2
  35.  
  36. '// Arhhhhg x_X
  37. '// Interdis-toi l'utilisation du presse-papier. Il appartient à l'utilisateur, pas aux programmes.
  38. '// Imagine deux secondes que tous les programmes se permettaient de l'utiliser !!!
  39. '// T'imagine la pagaille ?
  40. plage.Copy
  41. Sheets("page destination").Select
  42.  
  43. '// Mets devant chaque Cells/Range la feuille à laquelle on se rapporte.
  44. Range("a11").Select
  45. plage.PasteSpecial xlPasteFormats
  46. plage.PasteSpecial Paste:=xlPasteValues
  47. Call macro9
  48. Sheets("page destination").Select
  49.  
  50. '// Mets devant chaque Cells/Range la feuille à laquelle on se rapporte.
  51. Range("a11").Select
  52. End Sub
  53.  
  54. Sub macro9()
  55. Sheets("page input").Select
  56. Range("a1:x6").Activate
  57. Sheets("page input").EnableAutoFilter = True
  58. Range("a7").Select
  59. End Sub


Quand il ne restera plus un seul select/activate, ta macro ne plantera plus.
Pour info, ce n'est pas la ligne "AutoFilter" qui plantait.
Pour t'en convaincre, exécute ta macro pas-à-pas (touche F8)
Lassé par la pub ? Créez un compte