Bonjour !
Je travaille sur ma première macro et je suis confronté à un petit problème...
Ma macro parcours plusieurs colonnes dans différents fichiers et liste les cellules qui correspondent à celles de ma colonne de référence. Tout se passait très bien jusqu'à ce que je multiplie le nombre de fichiers à partir desquels elle doit importer les données à comparer, mais là je me retrouve avec une erreur "incompatibilité de type" (aux lignes 125 et 128) que je n'arrive pas à résoudre. J'ai pourtant l'impression que mes variables sont homogènes, j'ai essayé avec des .value sur mes plages, j'ai modifié le format par défaut des cellules, etc. rien n'y fait...
Voici mon code
Je suis sur que c'est un truc tout bête...
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147 Sub listerFluxUtilisateursDonnee() Dim dataDico As Range 'donnée du dico en cours de comparaison avec les fichiers de contrôle Dim dataCtrl As Range 'donnée courante comparée dans le fichier de contrôle courant Dim CodifDicoCentral As Range 'Liste des données à comparer avec les fichiers de contrôle Dim fluxControle As String 'flux utilisateur de la donnée dans le fichier de contrôle Dim fluxUserData As String 'flux déjà répertoriés au dico comme étant urlisateurs de la donnée Dim titi As String Dim nbFich As Integer 'Nombre de fichiers de contrôle de cohérence de flux à traiter nbFich = (Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("Z1").End(xlToLeft).Column) / 3 '============================================================================================================ ' Initialisation de la feuille "données fichers de contrôle" ' 'ATTENTION : Les imports sont paramétrés jusqu'à la ligne 3000 des fichiers de contrôle de flux. ' ' Import colonne codifications du fichier de contrôle ANR With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("C2:C3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[ANR - référentiel contrôle flux.xls]DICTIONNAIRE PROJET'!R[2]C3" .Value = .Value End With ' Import colonne flux du fichier de contrôle ANR With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("B2:B3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[ANR - référentiel contrôle flux.xls]DICTIONNAIRE PROJET'!R[2]C2" .Value = .Value End With ' Import colonne codifications du fichier de contrôle AUTOMATE With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("E2:E3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[AUTOMATE - Référentiel controle flux - LNS.xls]DICTIONNAIRE PROJET'!R[2]C2" .Value = .Value End With ' Import colonne flux du fichier de contrôle AUTOMATE With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("F2:F3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[AUTOMATE - Référentiel controle flux - LNS.xls]DICTIONNAIRE PROJET'!R[2]C3" .Value = .Value End With ' Import colonne codifications du fichier de contrôle BOE With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("H2:H3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[BOE - référentiel contrôle flux TP.xls]DICTIONNAIRE PROJET'!R[2]C2" .Value = .Value End With ' Import colonne flux du fichier de contrôle BOE With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("I2:I3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[BOE - référentiel contrôle flux TP.xls]DICTIONNAIRE PROJET'!R[2]C3" .Value = .Value End With ' Import colonne codifications du fichier de contrôle BOA With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("K2:K3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[BOA - référentiel contrôle flux.xls]DICTIONNAIRE PROJET'!R[2]C2" .Value = .Value End With ' Import colonne flux du fichier de contrôle BOA With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("L2:L3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[BOA - référentiel contrôle flux.xls]DICTIONNAIRE PROJET'!R[2]C3" .Value = .Value End With ' Import colonne codifications du fichier de contrôle SAE With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("N2:N3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[SAE - référentiel contrôle flux.xls]DICTIONNAIRE PROJET'!R[2]C2" .Value = .Value End With ' Import colonne flux du fichier de contrôle SAE With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("O2:O3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[SAE - référentiel contrôle flux.xls]DICTIONNAIRE PROJET'!R[2]C3" .Value = .Value End With ' Import colonne codifications du fichier de contrôle BOE 8.5/8.6 With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("Q2:Q3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[BOE - Référentiel de controle flux lot 8.5.xls]DICTIONNAIRE PROJET'!R[2]C2" .Value = .Value End With ' Import colonne flux du fichier de contrôle BOE 8.5/8.6 With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("R2:R3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[BOE - Référentiel de controle flux lot 8.5.xls]DICTIONNAIRE PROJET'!R[2]C3" .Value = .Value End With ' Import colonne codifications du fichier de contrôle GDPA With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("T2:T3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[GDPA - référentiel contrôle flux.xls]DICTIONNAIRE PROJET'!R[2]C2" .Value = .Value End With ' Import colonne flux du fichier de contrôle GDPA With Workbooks("TestMacro6-11-12.xls").Sheets("données fichers de contrôle").Range("U2:U3000") .FormulaR1C1 = "='\\Atlas\Asi\Asi\Dictionnaire des données\Référentiel données\[GDPA - référentiel contrôle flux.xls]DICTIONNAIRE PROJET'!R[2]C3" .Value = .Value End With '============================================================================================ 'Nommage des plages de cellules : ' - la colonne "Codification" du dictionnaire central doit être nommée "CodifDicoCentral" ' - la colonne "Flux Utilisateurs de la donnée" du dictionnaire central doit être nommée "FluxDicoCentral" ' - Les colonnes "Codification dans le flux" des différents fichiers de contrôles doivent être nommées "codifFluxi" ' - Les colonnes "Flux" des différents fichiers de contrôles doivent être nommées "Fluxi"Set toto = Sheets("Feuil1").Range([B2], [B2]) For i = 4 To nbFich 'MsgBox i & "/" & nbFich Set CodifDicoCentral = Sheets("Feuil1").Range([A2], [A2].End(xlDown)) Sheets("Feuil1").Range("CodifDicoCentral").Select 'Parcours de la colone " codification " dans le dico central For Each dataDico In Sheets("Feuil1").Range("CodifDicoCentral") If dataDico = "" Then 'MsgBox "Par ici" Exit For End If 'parcours de la colone " codification dans le flux " d'un fihier de contrôle de cohérence For Each dataCtrl In Sheets("données fichers de contrôle").Range("codifFlux" & i) 'For Each dataCtrl In Sheets("données fichers de contrôle").Range([L2], [L2].End(xlDown)) If dataCtrl = "0" Then Exit For End If If dataDico = dataCtrl Then 'MsgBox (dataCtrl & "+++" & dataDico) 'on vérifie que le contenu de la colone " flux " du fichier de contrôle n'est pas déjà présent dans la colone " flux " du dictionnaire fluxControle = Sheets("données fichers de contrôle").Range("Flux" & i).Range("A" & dataCtrl.Row) fluxUserData = Sheets("Feuil1").Range("FluxDicoCentral").Range("A" & dataDico.Row) titi = InStr(fluxUserData, fluxControle) If titi = 0 Then Sheets("Feuil1").Range("FluxDicoCentral").Range("A" & dataDico.Row) = fluxUserData & vbCrLf & fluxControle End If End If Next Next Next i End Sub
Quelqu'un aurait une idée ?
Soyez indulgents, je débute
Merci d'avance
Partager