Problème ByRef, argument incompatible
Bonjour à toutes et à tous,
Un peu à l'image de ce que j'ai déjà pu poster sur ce forum (http://www.developpez.net/forums/d11...ion-variables/), me voici de nouveau confronté à ce type de problème.
Je cherche à simplifier mon code, qui a la gueule suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| For Each cel In Worksheets(3).Range("I" & 11 + nprec & ":I" & 11 + n - 1)
If cel.Value = Range("H3").Value Then
With Worksheets(4)
If ind Mod (3) <> 0 Or ind = 0 Then
.Range("F18").Offset(ind * 4 + 2 * ind2, 0).Value = .Range("F18").Offset(ind * 4 + 2 * ind2, 0).Value + cel.Offset(0, -1).Value
test = False
Else
.Range("F18").Offset(ind * 4 + 2 * ind / 3, 0).Value = .Range("F18").Offset(ind * 4 + 2 * ind / 3, 0).Value + cel.Offset(0, -1).Value
test = True
End If
End With
ElseIf cel.Value = Range("H4").Value Then
... |
en un code plus sympa, du type :
Code:
1 2 3 4 5 6 7
| For Each cel In Worksheets(3).Range("I" & 11 + nprec & ":I" & 11 + n - 1)
If cel.Value = Range("H3").Value Then
test = exporterValeurs(Range("F18"), cel, ind, ind2)
ElseIf cel.Value = Range("H4").Value Then
test = exporterValeurs(Range("H18"), cel, ind, ind2)
ElseIf cel.Value = Range("H5").Value Then
.... |
grâce à la fonction :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Function exporterValeurs(destin As Range, exped As Range, ind As Integer, ind2 As Integer) As Boolean
With Worksheets(4)
If ind Mod (3) <> 0 Or ind = 0 Then
.destin.Offset(ind * 4 + 2 * ind2, 0).Value = .destin.Offset(ind * 4 + 2 * ind2, 0).Value + exped.Offset(0, -1).Value
exporterValeurs = False
Else
.destin.Offset(ind * 4 + 2 * ind / 3, 0).Value = .destin.Offset(ind * 4 + 2 * ind / 3, 0).Value + exped.Offset(0, -1).Value
exporterValeurs = True
End If
End With
End Function |
Lors de l'éxécution, Excel affiche l'erreur "Type d'argument ByRef incompatible" au niveau de l'argument "cel" de la fonction "exporterValeurs" de mon code "sympa".
J'ai beau retourner le problème dans tous les sens, je n'arrive pas à saisir pourquoi mes modifications ne sont pas équivalentes au code que j'avais rédigé en premier lieu.
Une explication ?
Merci d'avance pour vos idées :ccool: