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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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