Sélection d'un collage via un filtre automatique

Sélection d'un collage via un filtre automatique - VB/VBA/VBS - Programmation

Marsh Posté le 13-08-2012 à 16:30:13    

Bonjour,
 
Je rencontre 2 soucis dans mon code :
 

Code :
  1. Sub Construire_fiches()
  2. FinTableauMapping = Sheets("Mapping" ).Range("A" & "65535" ).End(xlUp).Row
  3. For i = 2 To FinTableauMapping
  4. CodePole = Workbooks("FICHES_SYNTHETIQUES_DRH_par_pôle.xls" ).Sheets("Mapping" ).Range("a" & i).Value
  5. ' Déterminer les différents tableaux
  6. Sheets("3580" ).Select
  7. LigneDebut1 = WorksheetFunction.Match("1. Effectifs", Range("C:C" ), 0) + 2
  8. LigneFin1 = WorksheetFunction.Match("TOTAL POCPBU", Range("C:C" ), 0) - 1
  9. LigneDebut2 = WorksheetFunction.Match("2. Absences longues prévisionnelles (AT/LM/LD/MAT/MPRO)", Range("C:C" ), 0) + 2
  10. LigneFin2 = WorksheetFunction.Match("3. Entrées prévisionnelles", Range("C:C" ), 0) - 2
  11. LigneDebut3 = WorksheetFunction.Match("3. Entrées prévisionnelles", Range("C:C" ), 0) + 2
  12. LigneFin3 = WorksheetFunction.Match("4. Sorties prévisionnelles", Range("C:C" ), 0) - 2
  13. LigneDebut4 = WorksheetFunction.Match("4. Sorties prévisionnelles", Range("C:C" ), 0) + 2
  14. LigneFin4 = Range("C" & Rows.Count).End(xlUp).Row + 1
  15. ' Effacer les anciennes données
  16. Range("C" & LigneDebut2 & ":L" & LigneFin2).ClearContents
  17. Range("C" & LigneDebut3 & ":K" & LigneFin3).ClearContents
  18. Range("C" & LigneDebut4 & ":K" & LigneFin4).ClearContents
  19. ''' ABSENTEISME PREVISIONNEL
  20. ' Filtrer sur le pôle en question dans le fichier Abs prev
  21. Workbooks.Open ("I:\DRH\EFFECTIF\Fiches_synthétiques_par_pôle\Abs_ longues_prev_pour_fiche_synth.xls" )
  22. Selection.AutoFilter Field:=1, Criteria1:=CodePole 'field 1 = colonne A, pôle XXXX
  23. ' Copier cette sélection
  24. Range("c2" ).Select
  25. Range(Selection, Selection.End(xlToRight)).Select
  26. Range(Selection, Selection.End(xlDown)).Select
  27. Selection.Copy
  28. ' Coller cette sélection dans le bon tableau
  29. Windows("FICHES_SYNTHETIQUES_DRH_par_pôle.xls" ).Activate
  30. Range("C" & LigneDebut2).Activate
  31. Selection.PasteSpecial Paste:=xlValues
  32. ''' ENTREES PREVISIONNELLES
  33. ' Filtrer sur le pôle en question dans le fichier Abs prev
  34. Workbooks.Open ("I:\DRH\EFFECTIF\Fiches_synthétiques_par_pôle\Entr ées-prev_pour_fiche_synth.xls" )
  35. Selection.AutoFilter Field:=1, Criteria1:=CodePole 'field 1 = colonne A, pôle XXXX
  36. ' Copier cette sélection
  37. Range("c2" ).Select
  38. Range(Selection, Selection.End(xlToRight)).Select
  39. Range(Selection, Selection.End(xlDown)).Select
  40. Selection.Copy
  41. ' Coller cette sélection dans le bon tableau
  42. Windows("FICHES_SYNTHETIQUES_DRH_par_pôle.xls" ).Activate
  43. Range("C" & LigneDebut3).Activate
  44. Selection.PasteSpecial Paste:=xlValues
  45. ''' SORTIES PREVISIONNELLES
  46. ' Filtrer sur le pôle en question dans le fichier Abs prev
  47. Workbooks.Open ("I:\DRH\EFFECTIF\Fiches_synthétiques_par_pôle\Sort ies-prev_pour_fiche_synth.xls" )
  48. Selection.AutoFilter Field:=1, Criteria1:=CodePole 'field 1 = colonne A, pôle XXXX
  49. ' Copier cette sélection
  50. Range("c2" ).Select
  51. Range(Selection, Selection.End(xlToRight)).Select
  52. Range(Selection, Selection.End(xlDown)).Select
  53. Selection.Copy
  54. ' Coller cette sélection dans le bon tableau
  55. Windows("FICHES_SYNTHETIQUES_DRH_par_pôle.xls" ).Activate
  56. Range("C" & LigneDebut4).Activate
  57. Selection.PasteSpecial Paste:=xlValues
  58. Next
  59. ' Fermer les classeurs d'export
  60. Windows("Abs_longues_prev_pour_fiche_synth.xls" ).Activate
  61. ActiveWorkbook.Close False
  62. Windows("Entrées-prev_pour_fiche_synth.xls" ).Activate
  63. ActiveWorkbook.Close False
  64. Windows("Sorties-prev_pour_fiche_synth.xls" ).Activate
  65. ActiveWorkbook.Close False
  66. End Sub


 
 
Problème n°1
Lorsque je filtre par exemple le fichier Entrées_prévisionnelles et que sur le pôle en question il n'y a pas d'entrée prévisionnelle, le "collage spécial" plante car bien sûr la plage est trop grande
comment tester et dire qqch comme "si le filtre ne donne rien sauter l'étape collage"
(lignes 32-45-59)
 
Problème n°2
Au tout début du code (ligne 6)
sheets"3580".Select
comment variabiliser cela et dire de sélectionner l'onglet de la variable CodePole (pour la boucle)
 
Merci d'avance,


Message édité par Profil supprimé le 13-08-2012 à 16:31:38
Reply

Marsh Posté le 13-08-2012 à 16:30:13   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed