Bonjour,
A partir de 2 classeurs (Calendrier et Contact contenant les feuilles WsCalendrier et WsContact) je veux créer un nouveau classeur Fusion contenant la feuille WsFusion.
Dans chacun de mes 2 fichiers sources j'ai une même colonne identifiant mes enregistrements qui va me servir de clé de fusion.
Je commence par copier les colonnes du calendrier qui m'intéressent dans le classeur de fusion. Je parcours ensuite la colonne d'identifiant et pour chaque valeur trouvée, je vais copier les infos correspondantes du même enregistrement depuis le classeur contact.
Voici ce que ça donne (librement inspiré d'une réponse apportée sur le forum) :
Je crois que je comprends mal l'utilisation de Cel_Dest ou Cel_Src. La copie de plusieurs cellules adjaceintes (ligne 26) ne pose aucun problème. Par contre je n'arrive pas à trouver comment copier une seule cellule (ligne 27). J'ai l'impression que je ne maitrise pas suffisamment l'objet Cel_Dest ou Cel_Src. Je vois ça un peu comme une référence de cellule (notamment avec le Range(Cel_Src.Offset(0, -3), Cel_Src.Offset(0, -1)).Copy. Or avec le debuggeur, il apparait qu'on fait plus référence au contenu de la cellule.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 ' Copie dans la feuille de fusion des données souhaitées de la feuille calendrier de l'étude WsCalendrier.Columns("B:B").Copy WsFusion.Columns("A:A") WsCalendrier.Columns("D:E").Copy WsFusion.Columns("F:G") WsCalendrier.Columns("H:J").Copy WsFusion.Columns("H:J") ' Pour les personnes concernées par les prochains appels téléphonique, on recopie dans la nouvelle feuille ' les infos de la feuille contact ' Détermination de la dernière ligne du fichier de contact DerLigContact = WsContact.Range("D" & WsContact.Rows.Count).End(xlUp).Row ' Détermination de la dernière ligne du fichier de calendrier DerLigCal = WsCalendrier.Range("B" & WsCalendrier.Rows.Count).End(xlUp).Row ' Plage des identifiants dans la feuille de fusion --> A ' (il s'agit des mêmes que dans le fichier calendrier) Set NumPat_Dest = WsFusion.Range("A2:A" & DerLigCal) ' Plage des identifiants dans la feuille contact --> D Set NumPat_Contact = WsContact.Range("D2:D" & DerLigContact) ' Copie dans le fichier de fusion des informations du fichier de contact ' dont l'identifiant est identique à celui du fichier calendrier For Each Cel_Dest In NumPat_Dest Set Cel_Src = NumPat_Contact.Find(Cel_Dest) 'Si l'ID correspondant est trouvé, on complète la ligne de référence If Not Cel_Src Is Nothing Then WsContact.Range(Cel_Src.Offset(0, -3), Cel_Src.Offset(0, -1)).Copy WsFusion.Range(Cel_Dest.Offset(0, 1), Cel_Dest.Offset(0, 3)) WsContact.Range(Cel_Src.Offset(0, 1)).Copy WsFusion.Range(Cel_Dest.Offset(0, 4)) Else ' Autres instructions End If Next Cel_Dest
Pouvez-vous m'éclairer sur mon erreur et comment réussir à copier la cellule située juste à droite de ma cellule de référence ?
Merci d'avance pour votre aide !
Bonne journée
Laurent
Partager