Pardonnez moi d'être encore présent, mais cette discussion présente plusieurs aspects :
1) l'incompatibilité de type dénoncée :
Elle est probablement due (comme le signale à juste titre Pierre Fauconnier, à la présence d'une valeur non numérique en colonne de gauche)
2) La construction de la formule.
Une formule n'est jamais qu'une chaîne de caractères et DOIT n'être traitée QUE comme telle :
En respectant ce principe fondamental :
- l'opérateur "+" (s'il s'agit d'une addition) DOIT être dans une chaîne de caractères
- le résultat de WorksheetFunction.Vlookup est par contre un numérique et non une chaîne de caractères. Si, dans sa (trop) grande tolérance, CVA/Excel transforme spontanément en chaîne de caractères un numérique entier, il n'en va pas de même en ce qui concerne un décimal. Il convient donc de rester RIGOUREUX et de transposer systématiquement ce résultat en chaîne de caractères (puisqu'il sera une partie d'une chaîne de caractères). Et ceci (ce dernier aspect) : quelle que soit la finalité de la formule.
Ainsi (exemple où il s'agirait bien d'une opération à effectuer) :
1 2 3 4 5 6
| Dim myrange As Range
Set myrange = Range("Feuil1!B:J")
Dim i As Integer, j As Integer
Dim v As String
Set myrange = Range("Feuil1!B:J")
i = 5 |
et : soit (si l'on veut utiliser la variable tremplin v :
1 2
| v = "= c[-1]"
......FormulaR1C1 = v & " + " & Str(Application.WorksheetFunction.VLookup(i, myrange, 5, 0) / 60) |
Soit, si l'on veut écrire directement :
......FormulaR1C1 = "= c[-1] + " & Str(Application.WorksheetFunction.VLookup(i, myrange, 5, 0) / 60)
3) L'étrangeté du choix ainsi fait :
Une telle formule n'en est pas une à part entière, dans la mesure où l'une de ses deux parties n'est pas elle-même une expression Excel, mais le résultat d'une fonction.
Pour être plus clair : une fois appliquée, son résultat ne varierait pas si l'on modifiait les valeurs utilisées..
Sur ce -->> A la pêche (c'est l'heure).
Partager