Copie entre 2 classeurs si conditions remplis

Bonjour,

merci pour ce forum qui permet de bien se perfectionner mais là je bloque :

Mon objectif est de copier les nom de salariés actifs sur un mois donné entre entre 2 documents.

L'objectif est donc d'avoir:

  • Staff List.xlsx avec la liste des salariés, date d'entrée et éventuellement de sortie
  • Master.xlsm dans lequel on entre une date dans F1 et basé sur cette dernière le macro génère une liste des personnes qui ont travaillé durant ce mois.

Pour le moment le macro fonctionne quand je reste dans le même classeur mais je n'arrive pas à le faire entre 2 classeurs.

Sub refresh_staff_list()

Dim DerniereLigne As Long 'dans la feuille à écrire
Dim LigneActive As Long 'dans la feuille à lire
Dim jourDeb As Date, jourFin As Date, FirstDayOfMonth As Date, LastDayOfMonth As Date

Sheets("Horaires").Select
Range("A2: E200").Select
Selection.ClearContents

 FirstDayOfMonth = DateSerial(Year(Range("F1")), Month(Range("F1")), 1) 'calcul la date de fin de mois
 LastDayOfMonth = DateSerial(Year(Range("F1")), Month(Range("F1")) + 1, 1) - 1 'calcul la date de fin de mois

Sheets("Liste Staff").Select
Range("A2").Select

While ActiveCell.Value <> Empty
LigneActive = ActiveCell.Row 'n° de la ligne "à lire"
If Cells(LigneActive, 4).Value <= LastDayOfMonth And (Cells(LigneActive, 5).Value >= FirstDayOfMonth Or Cells(LigneActive, 5).Value = Empty) Then 'calcul si toujours actif

'écriture dans la feuille "Horaires"
With Sheets("Horaires")
DerniereLigne = .Range("A65536").End(xlUp).Offset(1, 0).Row 'n° de la ligne "à écrire"
.Cells(DerniereLigne, 1).Value = Cells(LigneActive, 1).Value 'écrit dans la 1ère colonne la valeur trouvée dans la colonne A
.Cells(DerniereLigne, 2).Value = Cells(LigneActive, 2).Value 'écrit dans la 2è colonne la valeur trouvée dans la colonne B
.Cells(DerniereLigne, 3).Value = Cells(LigneActive, 4).Value 'écrit dans la 3è colonne la valeur trouvée dans la colonne D
.Cells(DerniereLigne, 4).Value = Cells(LigneActive, 5).Value 'écrit dans la 4è colonne la valeur trouvée dans la colonne E
End With

End If
ActiveCell.Offset(1, 0).Activate

Wend

End Sub

Merci d'avance et meilleurs voeux

23liste-staff-v2.xlsm (31.12 Ko)

Salut Mr Viny et bienvenue sur le Forum,

Tes deux fichiers séparés seraient placés dans le même dossier de ton arborescence (ce serait plus simple) ou dans des dossiers différents ?

A te relire.

Bonsoir Yvouille,

ils seront dans le même répertoire,

Re,

Alors je résume : tu dois avoir un fichier nommé ‘Liste Staff’ dans lequel tu n’as qu’une seule feuille nommée également ‘Liste Staff’. Ce fichier peut être ouvert ou fermé au moment où tu lances ta macro, il sera par contre refermé à la fin.

Tu prends ensuite le fichier ‘Master’ ci-joint que tu places dans le même dossier que ton autre fichier et tu lances la macro qu'il contient par ton bouton déjà en place ; tout devrait alors fonctionner comme tu le désires.

Ton code semble comporter passablement de lignes inutiles ou améliorables, mais ça c’est une autre histoire.

Amicalement.

36master.xlsm (21.40 Ko)

Impeccable !!!

merci

Rechercher des sujets similaires à "copie entre classeurs conditions remplis"