[excel] fonction VBA [Résolu]

Signaler
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011
-
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
Bonsoir,

Je souhaite écrire dans une cellule une formule du type:
ActiveCell.Formula = "=SOMME(A2:" & ActiveCell.Offset(1, 0) & ")"

Mais la syntaxe n'est pas correct.
Merci pour votre aide!

Liro

7 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
33
ActiveCell.Formula = "=SUM(A2:" & ActiveCell.Offset(1, 0).Address(False, False, xlA1) & ")"

Et pour Offset, c'est à toi de voir, mais perso j'aurais plutot mis -1

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
utilises FormulaLocal, dans ton cas, vu que tu utilises SOMME et non SUM

je te conseille donc d'utiliser la version traduite

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Merci mais le problème ne vient pas de là.

Je fais référence à A2 et à la cellule à côté de celle ou je suis (activecell.offset).

La cellule est placée dans la case mais A2 et entouré de ' comme ça 'A2' du coup au lieu d'afficher le résultat il est écrit #NOM.

Liro
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
61
donnes nous ton code actuel

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Merci Casy.

Je ne comprends pas -1?

Liro
Messages postés
159
Date d'inscription
jeudi 7 septembre 2006
Statut
Membre
Dernière intervention
30 septembre 2011

C'est bon ça marche!
Merci à tous les deux, je voudrais juste comprends

Casy à dit:
"Et pour Offset, c'est à toi de voir, mais perso j'aurais plutot mis -1"

Dernière petite question:
Vous faites comment pour apprendre ces trucs?
J'utilise l'aide, j'enregistre des macros et je lis le code enregistré, je lis les forums... mais pour savoir ou trouver qu'il fallait ajouter
Address(False, False, xlA1)
sur ma formule.... je sais pas comment vous faites! :)

Liro
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
33
Pour le -1 je vais t'expliquer.

Si on reprend ton code (donc avec 1) et en supposant que la cellule active soit A9, tu va écrire en A9 la formule suivante "= SUM(A2:A10).
Offset(1,0) de A9 = A10
Ainsi tu englobe dans la plage de cellules à sommer, la cellule contenant la formule et donc le résultat de la somme. Ca ne peut pas marcher.

Dans ce c as précis j'aurais plutot dit que tu voulais faire la somme de A2 à A8 avec le résultat en A9. Donc A8 par rapport à A9 donne Offset(-1,0)

Et pour "apprendre ces truc", ben comme tout le monde, avec l'aide.

Petite astuce. Quant tu as affaire à des objets comme ça (ActiveCell.Offset(1, 0) pointe vers un objet cellule) si tu rajoute un . de suite après, l'ide de VBA devrais t'ouvrir pendant quelques instants un petit popup te donnant la liste des propriétés ou methodes associées à cet objet. Il suffit de reperer celle(s) qui pourrait + ou - à ce que tu cherche et regarder dans l'aide la signification. .Address, je ne l'ai pas inventé, c'est VBA qui me l'a proposer.

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php