Bonjour à tous et meilleurs voeux pour 2016
Je suis en train de modifier une macro en utilisant des tableaux à deux dimensions afin d’optimiser mon temps de traitement, actuellement 144,6 sec…
Dans un premier temps j’ai déclaré mes deux tableaux
Puis j’ai chargé mes tableaux :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Dim Table1() As String 'Declaration du tableau 1 Dim Table2() As String 'Declaration du tableau 2
L’objectif de ma macro est de comparer certaines valeurs des deux tableaux pour modifier l’un d’entre eux et ensuite aller modifier mon fichier Excel avec le tableau mis à jour.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ReDim Table1(0 To NbLine, 18) '18 etant le Nb de Col du fichier avec les donnees detaillees ReDim Table2(0 To NbLine1, 20) '20 etant le Nb de Col du fichier qui doit être importe For i = 0 To UBound(Table1, 1) For j = 0 To 18 Table1(i, j) = Up.Offset(i, j) Next j Next i For i2 = 0 To UBound(Table2, 1) For j2 = 0 To 18 Table2(i2, j2) = Tsk.Offset(i2, j2) Next j2 Next i2
Le problème est que j’obtiens une erreur “Type Mismatch” sur la ligne suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 For i = 0 To NbLine1 For j = 0 To NbCol1 Tsk.Offset(i, j) = Table1(i, j) Next j Next i
J’ai mis un espion sur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 If ((Table2(i2, 12) = 0 Or Table2(i2, 12) = "") And Table1(i, 14) = "00:00:00") Or ((Table2(i2, 12) = 0 Or Table2(i2, 12) = "") And Table1(i, 14) <> "00:00:00") Thenet je vois que ma variable est du type String, comme déclarée précédemmentTable2(i2, 12)
J’ai mis un autre espion sur l’expression
et là mon expression est du type Integer, je pense que c’est là que ça cloche mais je ne sais pas pourquoi…(Table2(i2, 12) = 0 Or Table2(i2, 12) = "")
Quelqu’un a-t-il une idée sur la co..rie que j’ai pu faire ou sur ce que je n’ai pas fait ?
Merci pour votre aide et votre collaboration
Eric
Partager