Comment lancer F2 et ENT avec VBA Excel 2007

Fermé
rorolidalgo - 28 sept. 2011 à 16:15
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 30 sept. 2011 à 12:06
Bonjour,

J'ai une macro qui crée la formule suivante:
.Formula = "=SOMME(" & Range(maCel.Offset(-2, 1).End(xlUp), maCel.Offset(-2, 4)).Address & ")"
En gros, elle crée la somme du bloc situé au-dessus.
Le problème est que ces cellules sont en fait des cellules fusionnées de 4 cellules. Doù le 4 dans le 2 iè offset.
Le problème est que la formule ne se valider car il croit faire la somme d'un bloc de cellules,
et il me faut faire F2 + entrée pour réellement valider la formule.
Sur un exemple, cela donne:
=SOMME($T$75:$W$77) "donne le résultat #NOM?
Cela donne l'impression qu'il y a 12 cellules à sommer, alors qu'il n'y en a que 3.

Du coup, j'ai cherché et tenté d'utiliser Sendkeys, juste après la définition de la formule ci-dessus, avec ça:
SendKeys "{F2}", True
Application.SendKeys "~", True 'pour ENTREE
CA NE MARCHE PAS!

Quelqu'un saurait-il me trouver la solution?
merci beaucoup

A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
28 sept. 2011 à 18:01
si les cellules sont fusionnées, la formule devrait être :
=SOMME($T$75:$T$77)
0
tu n'as pas tort! (cependant T75:W77 fonctionne aussi)
Mais le problème n'est pas là: il faut vraiment valider (ou activer, on va dire) la formule en faisant F2 (ou double clic) puis entrée. sans quoi, le seul fait d'"écrire" la formule par la macro ne l'active pas du tout, et retourne le résultat #NOM!.
J'ai également essayé ensuite maCel.Activate => rien.
Egalement: Calculate => nada. ça ne marche pas.
Donc je pense qu'il me faut un sendkeys F2 puis Entrée. Mais je n'ai pas réussi!
Merci de ton aide!
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 30/09/2011 à 12:04
L'erreur #NOM! me parait normale, pour être plus précis, il y a 2 formulations possibles :
.FormulaLocal = "=SOMME($T$75:$T$77) "
ou
.Formula = "=SUM($T$75:$T$77)"
0
Tu as raison, et je te remercie. Mais encore une fois, le problème vient des cellules fusionnées. C'est pour ça que la formule retourne #NOM! à la simple écriture de cette formule par le code, et qu'elle ne devient active (et donc sans erreur) que quand elle retournée par ENTER (et donc F2 ou dble clic avant).
Saurais-tu me guider par rapport au Sendkeys qui ne fonctionne pas?
Merci d'avance.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
30 sept. 2011 à 10:33
bonjour,

Les cellules fusionnées sont à éviter au maximum

si elles sont horizontales, dé-fusionne et utilise l'option "centrer sur plusieurs colonnes du menu "alignement" pour garder une présentation agréable

par ailleurs: pourquoi veux tu écrire une formule puisque tu utilises une macro? sinon en dynamique et sans VBA tu pourrais utiliser les fonctions imbriquées SOMME(DECALER(....

et en VBA =application.sum(...... te renvoie le résultat
0
MERCI PATRICE! ET DESOLE POUR LA PERTE DE TEMPS
Le problème est résolu, c'était effectivement un FormulaLocal qui était attendu, et c'est le Formula (tout court) qui reoturnait l'erreur #NOM!
Bizarre, car il me semble avoir tjs utilisé Formula...
En tous cas, ça marche et c'est ça qui compte! Merci à tous
0