IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

insérer une fonction dans une cellule par le code


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut insérer une fonction dans une cellule par le code
    Bonjour à tous,

    Voilà, je voudrais insérer une formule dans une cellule a partir de vba et ça marche pas.

    la formule que je veux entrer est : "=SI(I9<>0;I9;J9)"

    si, sous vba, je fais : activecell.value = "=si(I9<>0;I9;J9)"

    j'ai une erreur d'execution 1004 ?????

    merci pour votre aide.

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Bonjour,

    Utilise la propriété Formula:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activecell.Formula = "taformule"
    Si ca ne fonctionne pas, essaye FormulaLocal.

    Cordialement,

    Tirex28/

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2007
    Messages
    220
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2007
    Messages : 220
    Points : 177
    Points
    177
    Par défaut
    Tu as une autre possibilité très utile si ta formule se trouve dans une boucle.

    Ca évite de taper 15 lignes de macros, la 1ère pour les cellules de la ligne 9, les suivantes pour les cellules des lignes 10, 11, etc.

    en supposant que tu tapes ta formule dans la cellule K9, le code sera:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=IF(RC[-2]<>0,RC[-2],RC[-1])"
    RC[-2] signifie que la cellule concernée est sur la même ligne (R) mais 2 colonnes avant (C[-2]), en l'occurence I9.

    Voilà

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    En fait, ma formule dans vba doit etre avec des virgules pour donner des point-virgule dans EXCEL...OK pour des ; dans excel et des , dans vba...

    en fait ma formule est un peu plus compliquée et donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For i = 1 To 17
            formul = "=SI(I" & ActiveCell.Row _
                                      & "<>0,I" _
                                      & ActiveCell.Row _
                                      & ",Planning!R" 
                                      & nbligneplan + 8 
                                      & "C" & colplan 
                                      & ")"
            ActiveCell.Formula = formul
            ActiveCell.Offset(1, 0).Select
    Next i
    l'espion de vba me donne :
    "SI(I9<>0,I9,Planning!R728C13)"

    la formule est bien collée dans EXCEL mais le rendu est :
    =SI('I9'<>0;'I9';Planning!$M$728)

    POURQUOI ME MET-IL DES COTES AUTOUR DE 'I9' CE ???

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Points : 824
    Points
    824
    Par défaut
    Re,

    "SI(I9<>0,I9,Planning!R728C13)"
    Tu mélange références A1 et L1C1, ca ne peut pas marcher...
    Soit tu converti I9 en R9C9, soit tu converti R728C13 en M728.

    Essaye de lancer l'enregistreur de macro et de taper ta formule à la main, en regardant le code généré ca devrait t'aider à trouver la syntaxe correcte.

    Cordialement,

    Tirex28/

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    CA MARCHE mais il me met une valeur de cellule en #NOM?... voir autre sujet...

    MERCI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. [AC-2007] insérer les résultats d'une fonction dans une table
    Par sarah12 dans le forum VBA Access
    Réponses: 3
    Dernier message: 30/07/2010, 14h20
  3. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. [PHP-JS] une fonction dans une fonction
    Par lodan dans le forum Langage
    Réponses: 6
    Dernier message: 25/06/2006, 19h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo