[VBA] Sléection via pour un collage via un filtre automatique

nat54

XLDnaute Barbatruc
Bonjour,

Je pense que ré-ouvrir un fil ne sera pas mal vu.. voire même bien vu !

C'est la suite d'ici : https://www.excel-downloads.com/threads/vba-effacer-une-plage-qui-varie-selon-les-onglets.190183/

Super la méthode d'Eric S, je rencontre tout de même un souci (enfin 2..)

Code vba:
Sub Construire_fiches()
FinTableauMapping = Sheets("Mapping").Range("A" & "65535").End(xlUp).Row
For i = 2 To FinTableauMapping
CodePole = Workbooks("FICHES_SYNTHETIQUES_DRH_par_pôle.xls").Sheets("Mapping").Range("a" & i).Value
' Déterminer les différents tableaux
Sheets("3580").Select
LigneDebut1 = WorksheetFunction.Match("1. Effectifs", Range("C:C"), 0) + 2
LigneFin1 = WorksheetFunction.Match("TOTAL POCPBU", Range("C:C"), 0) - 1
LigneDebut2 = WorksheetFunction.Match("2. Absences longues prévisionnelles (AT/LM/LD/MAT/MPRO)", Range("C:C"), 0) + 2
LigneFin2 = WorksheetFunction.Match("3. Entrées prévisionnelles", Range("C:C"), 0) - 2
LigneDebut3 = WorksheetFunction.Match("3. Entrées prévisionnelles", Range("C:C"), 0) + 2
LigneFin3 = WorksheetFunction.Match("4. Sorties prévisionnelles", Range("C:C"), 0) - 2
LigneDebut4 = WorksheetFunction.Match("4. Sorties prévisionnelles", Range("C:C"), 0) + 2
LigneFin4 = Range("C" & Rows.Count).End(xlUp).Row + 1
' Effacer les anciennes données
Range("C" & LigneDebut2 & ":L" & LigneFin2).ClearContents
Range("C" & LigneDebut3 & ":K" & LigneFin3).ClearContents
Range("C" & LigneDebut4 & ":K" & LigneFin4).ClearContents

''' ABSENTEISME PREVISIONNEL
' Filtrer sur le pôle en question dans le fichier Abs prev
Workbooks.Open ("I:\DRH\EFFECTIF\Fiches_synthétiques_par_pôle\Abs_longues_prev_pour_fiche_synth.xls")
Selection.AutoFilter Field:=1, Criteria1:=CodePole 'field 1 = colonne A, pôle XXXX
' Copier cette sélection
Range("c2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
' Coller cette sélection dans le bon tableau
Windows("FICHES_SYNTHETIQUES_DRH_par_pôle.xls").Activate
Range("C" & LigneDebut2).Activate
Selection.PasteSpecial Paste:=xlValues
''' ENTREES PREVISIONNELLES
' Filtrer sur le pôle en question dans le fichier Abs prev
Workbooks.Open ("I:\DRH\EFFECTIF\Fiches_synthétiques_par_pôle\Entrées-prev_pour_fiche_synth.xls")
Selection.AutoFilter Field:=1, Criteria1:=CodePole 'field 1 = colonne A, pôle XXXX
' Copier cette sélection
Range("c2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
' Coller cette sélection dans le bon tableau
Windows("FICHES_SYNTHETIQUES_DRH_par_pôle.xls").Activate
Range("C" & LigneDebut3).Activate
Selection.PasteSpecial Paste:=xlValues

''' SORTIES PREVISIONNELLES
' Filtrer sur le pôle en question dans le fichier Abs prev
Workbooks.Open ("I:\DRH\EFFECTIF\Fiches_synthétiques_par_pôle\Sorties-prev_pour_fiche_synth.xls")
Selection.AutoFilter Field:=1, Criteria1:=CodePole 'field 1 = colonne A, pôle XXXX
' Copier cette sélection
Range("c2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
' Coller cette sélection dans le bon tableau
Windows("FICHES_SYNTHETIQUES_DRH_par_pôle.xls").Activate
Range("C" & LigneDebut4).Activate
Selection.PasteSpecial Paste:=xlValues


Next
' Fermer les classeurs d'export
Windows("Abs_longues_prev_pour_fiche_synth.xls").Activate
ActiveWorkbook.Close False
Windows("Entrées-prev_pour_fiche_synth.xls").Activate
ActiveWorkbook.Close False
Windows("Sorties-prev_pour_fiche_synth.xls").Activate
ActiveWorkbook.Close False
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"

Problème n°2
Au tout début du code
sheets"3580".Select
comment variabiliser cela et dire de sélectionner l'onglet de la variable CodePole (pour la boucle)

Merci d'avance,
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] Sléection via pour un collage via un filtre automatique

Bonsoir

Je pense que ré-ouvrir un fil ne sera pas mal vu.. voire même bien vu !
Tu es sur ?

Pourquoi doubler un fil ?

PS: La réponse à ma question se trouve dans la charte du forum ;)

Personnellement , je lis trop de Select dans ton code pour aller plus loin pour le moment
(Puis je reste sur mon idée suggérée dans ton premier fil : plages nommées dynamiques
-> cf exemple de code VBA dans l'autre fil.
 
Dernière édition:

nat54

XLDnaute Barbatruc
Re : [VBA] Sléection via pour un collage via un filtre automatique

Re,

La dernière fois on m'a reproché de partir sur un autre problème que celui initial.
D'où la création de ce fil (qui aurait évité à ChTi60 de prendre du temps pour créer un code pour l'effacement qui marche finalement).

Là je demande "uniquement" une condition IF.. sur une copie à partir d'un filtre automatique

Trop de select peut-être mais je débute donc je fais ce que je peux... :(
et ton code est bien trop complexe pour moi comme je te l'ai déjà dit
je ne vois pas comment y intégrer des tableaux variables
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : [VBA] Sléection via pour un collage via un filtre automatique

Re salut Nat
Bonsoir le fil
Bonsoir le Forum

arff il y a trop de choses que je n'ai pas (tout ces fichiers qui doivent être ouvert , puis fermés)
pas possible de reproduire ,et travailler en aveugle pas évident (mais fil intéressant)
Bonne fin de Soirée
Amicalement
Jean Marie
 

nat54

XLDnaute Barbatruc
Re : [VBA] Sléection via pour un collage via un filtre automatique

Bonjour,

Comme promis, ci-joint les 4 fichiers anonymisés.

La macro fonctionne bien tant que dans les 3 fichiers d'export (absence/entrées/sorties) il y a un résultat pour le pôle en question (3580 ou 3945 dans mes exemples).
Exemple : pas d'entrée prévisionnelle au 3580, la macro plante.

Merci d'avance de votre aide,

Nat
 

Pièces jointes

  • Abs_longues_prev_pour_fiche_synth.xls
    13.5 KB · Affichages: 39
  • Entrées-prev_pour_fiche_synth.xls
    14 KB · Affichages: 34
  • FICHES_SYNTHETIQUES_DRH_par_pôle.xls
    271.5 KB · Affichages: 41
  • Sorties-prev_pour_fiche_synth.xls
    14 KB · Affichages: 37
  • Abs_longues_prev_pour_fiche_synth.xls
    13.5 KB · Affichages: 38
  • Entrées-prev_pour_fiche_synth.xls
    14 KB · Affichages: 36
  • FICHES_SYNTHETIQUES_DRH_par_pôle.xls
    271.5 KB · Affichages: 36
  • Sorties-prev_pour_fiche_synth.xls
    14 KB · Affichages: 38
  • Abs_longues_prev_pour_fiche_synth.xls
    13.5 KB · Affichages: 38
  • Entrées-prev_pour_fiche_synth.xls
    14 KB · Affichages: 37
  • FICHES_SYNTHETIQUES_DRH_par_pôle.xls
    271.5 KB · Affichages: 35
  • Sorties-prev_pour_fiche_synth.xls
    14 KB · Affichages: 40

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 217
Messages
2 086 352
Membres
103 195
dernier inscrit
martel.jg