Bonjour,

J'ai écrit une macro qui me permet de copier, sous condition, le contenu de cellules et de les coller dans un autre fichier excel.

Exemple de ce que fait la macro :

Dans le fichier2.xls => si je modifie les données de la cellule F12, je copie les données des cellules A12 et D12, puis j'ouvre le fichier1.xls

Dans le fihier1.xls je "cherche" la première ligne dispo et j'y colle le contenu des données A12 et D12 du fichier1.xls. Si la première ligne libre était la ligne 20, les données sont copiées dans les cellules A20 et B20.

Ce que je voudrais :
Pouvoir coller les données en C20 et E20.

Je n'y arrive pas du tout... Est-ce que l'un(e) d'entre vous pourrait m'aider ?

Merci d'avance !
Alfred

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
Sub Worksheet_change(ByVal Target As Range)
 
'On déclare les variables ligneLong et ligneCourt
Dim ligneLong, ligneCourt
 
If Target.Column = 12 Then
    'On récupère l'adresse de la ligne modifiée
    ligneLong = Target.Address
    'On coupe l'adresse pour ne garder que le numéro de la ligne
    ligneCourt = Mid(ligneLong, 4)
    'On copie les cellules dont on a besoin dans la ligne précédement sélecionnée
    Range("A" & ligneCourt & ",D" & ligneCourt).Copy
 
    'On ouvre le fichier dans lequel on veut coller les données copiées
    Workbooks.Open ThisWorkbook.Path & "\Fichier1.xls"
    'On sélectionne la première ligne libre (sans données)
    With Sheets("Feuil1").UsedRange: NoDeLaDernLig = .Cells(.Rows.Count, .Columns.Count).Row: End With
    Sheets("Feuil1").Cells(NoDeLaDernLig + 1, 1).Select
 
    'On colle les données dans la page active
    ActiveSheet.Paste
 
    'On enregistre et on ferme la page active
    ActiveWorkbook.Save
    ActiveWorkbook.Close
 
End If
 
End Sub