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 :
en un code plus sympa, du type :
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 ...
grâce à la fonction :
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 ....
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".
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
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![]()
Partager