Re,
Désolé d'importuner avec ça, mais j'aimerai comprendre en fait le code, pour pouvoir essayer de l'implémenter sur des trucs que j'ai fait par le passé, et ça me parait beaucoup plus rapide ta méthode.
J'ai testé ton code :
1 2 3 4 5 6 7 8 9 10
| Option Explicit
Sub t()
Const myFormula As String = "=RC[-2] & "" - "" & RC[-1]" ' La formule
Dim rng As Range
Set rng = ThisWorkbook.Worksheets("Feuil1").Range("A1").CurrentRegion ' Définir la plage des données
With rng.Offset(, 2).Resize(, 1) ' La colonne de la plage des données devant contenir la formule
.FormulaR1C1 = myFormula
'.Value = .Value ' Garder les valeurs et non les formules
End With
End Sub |
Dans un premier temps, dans la cellule, j'ai la formule qui s'affiche mais sans la calculer je comprend pas pourquoi.
Dans un 2e temps, si j'enlève l'apostrophe pour avoir la valeur, ça me fait exactement le même résultat qu'au-dessus :
Est-ce parce que MyFormula est une variable "string" ?
En mettant ça :
Const myFormula As String = "=RC[-2] - RC[-1]"
On a bien la formule désirée et la formule donne bien le résultat.
Pour revenir au code, et plus spécifiquement, cette ligne :
With rng.Offset(, 2).Resize(, 1)
Le Resize permet d'écrire sur la dernière colonne non vide si j'ai bien compris (pour mon tableau par exemple, sur la colonne C) c'est bien ça ?
Par contre, le OffSet je comprend pas : le offSet permet de décaler la plage de cellules de 2 colonnes ? Etant donné qu'on commence à la colonne A, la colonne A "est considérée comme la colonne 0" ?
Si on fait ça :
ou :
With rng.Offset(, 0).Resize(, 1)
(c'est la même chose non ?)
ça donne quoi ? ça va écrire sur la colonne A ?
Du coup, je comprend pas pourquoi tu fait le offSet de 2 colonnes, puis un resize le offset te permet de de positionner sur la colonne C si j'ai bien compris ? Mais le resize, il sert à quoi ici ?? à agrandir ta CurrentRegion ??
Je m'excuse par avance si mes questions te paraissent absurdes
Merci pour tes lumières
Partager