Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1681 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sélection d'un collage via un filtre automatique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sélection d'un collage via un filtre automatique

n°2153205
Profil sup​primé
Posté le 13-08-2012 à 16:30:13  answer
 

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
mood
Publicité
Posté le 13-08-2012 à 16:30:13  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sélection d'un collage via un filtre automatique

 

Sujets relatifs
Comment désactiver la fonction de lecture automatique de la playlist ?l'indice n'appartient pas à la sélection
APEX Filtre d'arbreFiltre à partir d'une liste
Extraction automatique d'info dans l'obs d'évenements windowstransposition de donnée sur une feuille et menu de selection
jquery et selection de div a partir de leur nomMacro VBA Actualisation automatique Formule mensuelle
[VB2010] deplacement dans un textbox sélection toujours visiblela selection dans JListe
Plus de sujets relatifs à : Sélection d'un collage via un filtre automatique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR