Bonjour,
à l'aide d'une macro je tente de recopier une valeur d'un fichier excel à un autre (les deux ont la même structure) à partir d'un numéro qu'ils ont en commun (sur la première colonne) et qui sert de référence.
C'est un bout de code que j'avais déjà utilisé tel quel sans souci et pourtant j'obtiens une erreur 1004 "la propriété Range de l'objet worksheet a échoué".
Voici le code:
Mon erreur 1004 sur la propriété Range apparaît à cet endroit:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 Sub Copieinfos() Dim FL1 As Worksheet Dim FL2 As Worksheet Dim NoLigneF2 As Integer Dim DerniereLigneF2 As Integer DerniereLigneF1 As Integer Dim identifiant As String Dim PlageFL1 As Range Dim c As Range Set FL2 = ThisWorkbook.ActiveSheet 'nom du classeur secondaire Set FL1 = Workbooks("Classeur2.xls").Worksheets("Feuil1") 'test si le filtre du fichier Classeur2 est actif If FL1.FilterMode Then 'si c'est le cas on l'enlève FL1.ShowAllData End If 'Plage de recherche de l'identifiant dans FL1 DerniereLigneF1 = FL1.Range("A65535").End(xlUp).Row MsgBox DerniereLigneF1 Set PlageFL1 = FL1.Range(Cells(2, 1), Cells(DerniereLigneF1, 1)) 'Dernière ligne renseignée dans FL2 DerniereLigneF2 = FL2.Range("A65535").End(xlUp).Row 'Lecture de la cellule ds Classeur A (noligne commence à 2 car en-tête) For NoLigneF2 = 2 To DerniereLigneF2 'on a un affaire alors on lit l'identifiant identifiant = FL2.Cells(NoLigneF2, 1).Value 'la recherche de l'identifiant lu dans FL2 se fait dans FL1 With PlageFL1 Set c = .Find(identifiant, LookIn:=xlValues, Lookat:=xlWhole) If Not c Is Nothing Then 'donnée trouvée 'on colle les infos dans FL1 'Récupération de l'info FL2.Activate FL2.Cells(NoLigneF2, 47).Select Selection.Copy FL1.Activate FL1.Cells(c.Row, 47).Select End If Set c = Nothing End With Next Set PlageFL1 = Nothing End SubD'ou peut provenir cette erreur sachant que, comme je l'ai dit au-dessus, j'ai déjà utilisé de nombreuses fois le même code sans aucun problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set PlageFL1 = FL1.Range(Cells(2, 1), Cells(DerniereLigneF1, 1))
Merci pour vos remarques,
M
Partager