Envoyé par
fredorik10
Pourquoi cette "formule" ne fonctionne pas ?
Elle ne fonctionne pas car il y a un problème de logique ou/et de syntaxe …
Envoyé par
fredorik10
est-ce qu'il est possible de faire une formule en vba qui soustrait deux valeurs sur plage de données qui varie ?
Avec une once de neurones en respectant la logique, aucun souci !
N'ayant pas obtenu de réponse exhaustive, je m'arrête à une simple démonstration :
deux feuilles de calculs dans un nouveau classeur, dans Feuil1 plage de cellules numériques E4:F9
et dans Feuil2 plage N11:O16, chaque plage étant donc de six lignes par deux colonnes.
On doit soustraire la plage de Feuil2 à la plage de Feuil1 directement dans la plage de Feuil1,
par position de cellules respectives : la cellule E4 doit être égale à E4 - N11; la cellule F9 égale à F9 - O16 …
Envoyé par
fredorik10
je cherche une boucle pour réaliser cette opération sur une plage de données, avec les lignes qui s'incrémentent
A la portée d'un débutant en VBA ayant oublié les fonctionnalités d'Excel :
1 2 3 4 5 6 7 8 9
| Sub DemoBoucles()
For C% = 0 To 1
For R% = 0 To 5
With Feuil1.Cells(4 + R, 5 + C)
.Value = .Value - Feuil2.Cells(11 + R, 14 + C).Value
End With
Next
Next
End Sub |
Une boucle est souvent une mauvaise idée dès lors que c'est réalisable par une formule de calculs,
le B-A-BA d'Excel, la preuve en une seule instruction :
1 2 3
| Sub DemoFormule()
[Feuil1!E4:F9].Value = [Feuil1!E4:F9-Feuil2!N11:O16]
End Sub |
Bien consulter l'aide VBA de la puissante méthode Evaluate !
Si une feuille est renommée, il faudrait la mettre à jour dans la procédure
DemoFormule
mais il n'y aurait aucune modification à apporter dans la procédure
DemoBoucles
car leurs
CodeName y sont utilisés et ne changent pas si une feuille est renommée …
Via la propriété
Address on peut très bien utiliser un
CodeName avec
Evaluate.
_________________________________________________________________________________________________________
Merci de cliquer sur
pour chaque message ayant aidé puis sur
pour clore cette discussion …
_________________________________________________________________________________________________________
Pour apprendre quelque chose aux gens, il faut mélanger ce qu’ils connaissent avec ce qu’ils ignorent. (Pablo Picasso)
Partager