[déplacé VB6 -> VBA] Caractère "

Résolu
cocagne31200 Messages postés 7 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 24 novembre 2009 - 24 nov. 2009 à 15:45
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 - 24 nov. 2009 à 20:55
Je voudrais dans une macro Excel, mettre dans une cellule la formule suivante :

SI(LG-LG1-LG30;"";LG-LG1-LG3)

Quand j'écris
ActiveCell.Formula = "=si(LG-LG1-LG3=0;"";LG-LG1-LG3)"
Il me met une erreur

Si j'écris :

lib = "=si(LG-LG1-LG3=0;"
lib = lib & """"
lib = lib & """"
lib = lib & ";LG-LG1-LG3)"
ActiveCell.Formula = lib

Dans lib j'ai bien ce que je veux, mais toujours une erreur

ActiveCell.Formula = "=si(LG-LG1-LG3=0;" & """" & """" & ";LG-LG1-LG3)"

aussi une erreur

ActiveCell.Formula = "=si(LG-LG1-LG3=0;"" "";LG-LG1-LG3)"

encore une erreur

Comment dois-je écrire ma commande?

Merci pour une réponse rapide

14 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
24 nov. 2009 à 17:34
Et faire un doublon (délibéré) est carrément une infraction ...
http://www.vbfrance.com/forum/sujet-CARACTERE_1380059.aspx
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
24 nov. 2009 à 16:51
Bonjour,

réponse (facile, en plus) lorsque tu seras dans le bon thème (ce n'est pas VBA, ici )
0
cocagne31200 Messages postés 7 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 24 novembre 2009
24 nov. 2009 à 16:59
Quel est le bon thème ???
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
24 nov. 2009 à 17:20
Czelui qui correspond à ton outil de développement, pardi (tu le connais, j'espère !)
Lorsque tu as ouvert ta discussion, il t'a été demandé de choisir ce thème, non ? Parcours donc la liste proposée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cocagne31200 Messages postés 7 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 24 novembre 2009
24 nov. 2009 à 17:39
C'est un doublon ok, mais pas délibéré

Peut-on avoir une réponse?
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
24 nov. 2009 à 18:22
Bon... (c'est ton 1er post...)
Je vais donc "couper la poire en deux" et ne t'en donner que la moitié (largement suffisante, si tu es attentionné).
Ouvre ton aide en ligne sur le mot Formula
Choisis (parmi la liste) : Range.Formula, propriété
Lis la toute 1ère ligne attentivement et plus précisément et jusqu'au bout (le bout est le plus important)
0
cocagne31200 Messages postés 7 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 24 novembre 2009
24 nov. 2009 à 18:35
Cette propriété renvoie ou définit une valeur de type Variant qui représente la formule de l'objet dans une notation de style A1 et dans la langue de la macro.

Pour un débutant comme moi c'est de l'hébreu, j'ai besoin d'un interprète
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
24 nov. 2009 à 18:44
"Pour un débutant comme toi, c'est de l'hébreu" ?
Tu as "besoin d'un interprête" ?
Regarde : je souligne :
Cette propriété renvoie ou définit une valeur de type Variant qui représente la formule de l'objet dans une notation de style A1 et dans la langue de la macro.

Comme tu le constates : question de langue, précisément ... et cette d'une macro est l'anglais...
Alors ?
- ou tu écris ta formule dans la langue anglaise (celle de VBA) lorsqu'utilisée depuis VBA
- ou tu tiens à l'écrire en français et tui fais alors appel à ton interprête (précisément) ... Il s'appelle peut-être (quien sabe ?) FormulaLocal (ton aide en ligne à ouvrir sur ce mot ... et lire tout jusqu'au bout
0
cocagne31200 Messages postés 7 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 24 novembre 2009
24 nov. 2009 à 19:09
Si j'écris :

lib = "=IF(LG-LG1-LG3=0"
lib = lib & """"
lib = lib & """"
lib = lib & ";LG-LG1-LG3)"
ActiveCell.Formula = lib
Erreur, mais lib contient ce que je veux

ActiveCell.Formula = "=IF(LG-LG1-LG3=0;"";LG-LG1-LG3)"
Erreur
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
24 nov. 2009 à 19:37
Et cà, c'est une autre paire de manches
Voilà ce que donne ta formule :
=IF(LG-LG1-LG3=0"";LG-LG1-LG3)

regarde-la bien
Maintenant : si tu oublies VBA et que tu mets son équivalent (depuis EXCEL, donc) directement en fonction dans une cellule , à savoir :
=SI(LG-LG1-LG3= 0"";LG-LG1-LG3)

T'aurais une belle erreur Excel , hein ....
Ben... conclusion ? ===>> tu as également à apprendre Excel !
Fais d'abors tes essais de formule directement sous excel ===>>> voies celle qui "marche" ===>>> ce n'est qu'ensuite que tu pourra définir dynamiquement et valablement une telle formule depuis VBA ...
Tu ne peux donner par VBA à une cellule une formule qu'Excel lui-lême (et fort simplement Excel tout seul, sans VBA) n'accepterait pas !
0
cocagne31200 Messages postés 7 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 24 novembre 2009
24 nov. 2009 à 19:44
lib = "=IF(LG-LG1-LG3=0;"
lib = lib & """"
lib = lib & """"
lib = lib & ";LG-LG1-LG3)"
ActiveCell.Formula = lib

Même en rectifiant la faute de frappe, l'erreur existe toujours
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
24 nov. 2009 à 20:00
Quand vas-tu/comptes-tu te décider à faire tes essais de formule EXCEL valable, avant de tenter d'imposer une telle formule dynamiquement (dans une macro VBA) ?
Ton problème n'est pas VBA, mais carrément EXCEL !
0
cocagne31200 Messages postés 7 Date d'inscription mardi 24 novembre 2009 Statut Membre Dernière intervention 24 novembre 2009
24 nov. 2009 à 20:13
La solution est :

lib = "=SI((LG-LG1-LG3)=0;"
lib = lib & """"
lib = lib & """"
lib = lib & ";LG-LG1-LG3)"
ActiveCell.FormulaLocal = lib

et cela aussi

ActiveCell.FormulaLocal = "=SI(LG-LG1-LG3=0;" & """" & """" & ";LG-LG1-LG3)"

Merci
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
24 nov. 2009 à 20:55
Bien
Mais si tu avais préféré ce qui est préférable, à savoir utiliser Formula (avec IF) et non FormulaLocal (avec SI) ?
Et si (tu devrais essayer) le caractère ; devrait dans un tel cas être remplacé par une , ?
Je dis çà comme çà ...
0
Rejoignez-nous