Lier deux classeurs avec intégrations de donnée si date commune trouvée.

funcky222

XLDnaute Junior
Bonjour à toutes et à tous,

je reviens vers vous concernant une question de mes collègues sur leurs fichiers excels !!

La problématique :

Je gère une équipe d'une 40aine de personnes.

- Dans un fichier excel intitulé "Congés", les absences des agents sont enregistrés via un onglet par mois.
- Dans un fichier "TRA", est enregistré le planning des agents avec leur activité de la semaine.

Le but est en ouvrant le fichier TRA vierge, d'un clic de bouton (ou pas) j'importe les absences des agents via le marquage d'un"X" dans la case correspondante du fichier "Congés".

Mais tout n'est pas aussi simple :p :

Le fichier "TRA" n'a pas de date précise, puisqu'il s'agit du fichier de la semaine suivante, donc je mets simplement le n° de la semaine en haut. De plus, les congés ne doivent apparaître que dans la 1ère catégorie (via un "X" dans la case), colonnes C à G intitulé TEL.

Le fichier "Congés" lui fonctionne mois par mois, avec un onglet = un mois.


J'ai bien trouvé une formule qui me permet de savoir si la case dans l'onglet octobre du fichier congés est occupé alors mettre X dans le fichier TRA. Mais je ne sais pas étendre cette formule à l'ensemble du classeur, d'où l'idée de passer plutôt en VBA.

Pour la formule j'utilise "EQUIV combiné à un SI".

Les fichiers sont trop gros pour le forum, du coup je les postes via Ci-joint.fr !

Merci d'avance à ceux qui m'aideront à me creuser les méninges... :)

  • Fichier Congés : Cijoint.fr - Service gratuit de dépôt de fichiers
  • Fichier TRA : Cijoint.fr - Service gratuit de dépôt de fichiers
 

funcky222

XLDnaute Junior
Re : Lier deux classeurs avec intégrations de donnée si date commune trouvée.

Bonjour à tous,

je pense que ma demande est un peu extravangante, elle n'attire pas les foules ! :p Pô grave, je continue de chercher ! ;)

Voici ce que j'ai tenté :


Code:
Sub import_conges(ByVal Target As Range)


'On Error GoTo 1:

'Range B6:B20 correspond à un petit pavé de test, la zone sera plus grande au final

Set Target = Application.Intersect(Target, Range("B6:B20"))



If Target Is Nothing Then Exit Sub

Dim plage As Range, ref As Range

Set plage = Sheets(Array("janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "decembre")).Select
        Range("B8:X8").Select

For Each Target In Target

  Set ref = plage.Find(Target, LookIn:=xlValues, LookAt:=xlWhole)

  If ref Is Nothing Then

  Else
    

ref.Offset(, 1).Resize(, 13).Value = "X"
    
  End If
Next

'1:
'MsgBox Err.Description

End Sub

Si une bonne âme passe par là et a du temps à perdre, je suis preneur !

A très bientôt... :eek:
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 676
Messages
2 090 803
Membres
104 670
dernier inscrit
Djnic30