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 :

Comment mettre une formule dans une cellule ?


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut Comment mettre une formule dans une cellule ?
    Voila j'ai un problème pour écrire une formule dans une cellule, quelqu'un aurait-il une piste pour que cela marche ?

    J'ai fais un truc tout bête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Formula = "=SI(Somme(A1,A2)=2,Super,"")"
    Mais ca ne marche pas...
    Ca me fais une erreur de l'application.

    Es ce que quelqu'un pourrait me montrer un code qui mets une formule dans une cellule avec un SI ?

    Merci ^^
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  2. #2
    Membre averti Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Points : 314
    Points
    314
    Par défaut
    si tu cherches un peux mieux sur le forum tu pourras trouver ta réponse

    Sinon ca doit etre un FormulaR1C1 à la place de ton formula

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 396
    Points
    396
    Par défaut
    pour ce style de chose, le mieux et que tu fasse la formule dans une feuille
    excel après avoir selectionner le créateur de macro automatique.

    Tu récupère le code dans un module. C'est une très bonne manière de comprendre comment il faut faire et tu peux ensuite modifier ce code pour qu'il corresponde à ce que tu veux.

  4. #4
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Oui, justement, j'ai procédé ainsi, et j'ai d'ailleurs bien vu la notation R1C1, mais je ne la comprend pas du tout...

    Quelqu'un pourrait me l'expliquée ou me montrer un lien me permettant de la comprendre ?
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 396
    Points
    396
    Par défaut
    La notation "L1C1" c'est le numéro des lignes et colonnes

    L1 c'est la ligne et C1 c'est la colonne

    ex : Cells(5,12).Select

    C'est a dire : Cellule (de la 5°ligne, et de la 12° colonne) à Selectionner
    ce qui correspond à : Range(L5).Select


    Pour apprendre avec le créateur de macro automatique il vaut mieux aller dans le menu "Option/Général/" et cocher la case "L1C1".

  6. #6
    Membre averti Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Points : 314
    Points
    314
    Par défaut
    Formula :
    Renvoie ou définit la formule de l'objet dans le style de référence A1 et dans la langue de la macro. Type de données Variant en lecture-écriture pour les objets Range et type de données String en lecture-écriture pour tous les autres objets.

    Remarques

    Cette propriété n'est pas disponible pour les sources de données OLAP.

    Si la cellule contient une constante, cette propriété la renvoie. De même, si la cellule est vide, Formula renvoie une chaîne de caractères vide. Si la cellule contient une formule, Formula la renvoie sous la forme d'une chaîne de caractères dont le format est celui qui serait utilisé pour afficher cette formule dans la barre de formule (signe égal compris).

    Si vous affectez une date à la formule d'une cellule, Microsoft Excel vérifie si la cellule est déjà dotée de l'un des formats numériques ou de date. Si tel n'est pas le cas, Microsoft Excel lui affecte le format de date numérique par défaut.

    Si la plage est unidimensionnelle ou bidimensionnelle, vous pouvez affecter à la formule un tableau Visual Basic de même dimension.

    Le fait de définir la formule pour une plage comprenant plusieurs cellules insère cette formule dans la totalité des cellules de la plage.
    FormulaR1C1 :
    Renvoie ou définit la formule de l'objet, en utilisant les notations de style R1C1 dans le langage de la macro. Type de données Variant en lecture-écriture pour les objets Range, type de données String en lecture-écriture pour les objets Series.

    Remarques

    Si la cellule contient une constante, la propriété renvoie cette constante. Si la cellule est vide, la propriété renvoie une chaîne vide. Si la cellule contient une formule, la propriété la renvoie sous forme de chaîne, dans le format affiché dans la barre de formule (signe égal inclus).

    Si vous définissez une date comme valeur ou formule d'une cellule, Microsoft Excel vérifie si la cellule est déjà mise en forme avec un des formats de nombre Date ou Heure. Si ce n'est pas le cas, Microsoft Excel applique le format Date court par défaut.

    S'il s'agit d'une plage à une ou deux dimensions, vous pouvez désigner la formule comme un tableau Visual Basic possédant les mêmes dimensions. De même, vous pouvez inclure la formule dans un tableau Visual Basic.

    En définissant la formule d'une plage à cellules multiples, toutes les cellules de la plage sont remplies par la formule.

  7. #7
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Ok, ca marche bien, merci beaucoup pour votre aide.

    Mais je me demandais si par exemple vous sauriez comment étendre la formule à x cellules en dessous.

    J'ai essayé avec AutoFill, mais ca me marque "la méthode AutoFill de la classe Range à échoué."

    Si quelqu'un connait la syntaxe de la méthode exacte, j'ai regardé dans l'aide mais j'ia pas vraiment compris. Pourtant j'ai bien inclus la cellule à la dans la selection à étendre.
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Si tu veux mettre la formule dans les mots français (Si...), je ne suis pas certaine que ça marchera.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Formula = "=SI(Somme(A1,A2)=2,Super,"")"
    ne me semble pas correct du tout.

    Dans l'éditeur VBA, la fonction SI s'écrit IF(param1,param2,param3) et la fonction SOMME s'écrit SUM(Range(adresse des cellules)).

    Ensuite, que signifie le mot Super dans ta formule ? une variable ? une fonction ?

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 396
    Points
    396
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub Macro10()
    '
    ' Macro10 Macro
    ' Macro enregistrée le 25/07/2007 par
    '
     
    '   Si la cellule(1,3) doit être testée sur la valeur 111
        Cells(2, 3).Select
        ActiveCell.FormulaR1C1 = "=IF(RC[-1]=111,TRUE,""tout faut"")" 'resultat de la macro automatique
     
     
     '   d'ou tu peux écrire :
        Cells(2, 3).FormulaR1C1 = "=IF(RC[-1]=111,TRUE,""tout faut"")"
     
    End Sub

  10. #10
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    En fait ZaZa, ca marche bien avec le SI, mais il faut que la formule soit marquée en R1C1. Bien que j'ai du mal à comprendre la syntaxe particulière du R1C1, j'ai réussis à récupérer la formule qui viens bien se mettre avec le "=" et le SI.

    C'est pour maintenant l'étendre cette formule que cela coince. J'ai l'impression que les range ne sont pas bon.

    EDIT : Alors les coordonées du RC sont à partir du curseur. Le -1 ca fait une cellule vers la gauche ?
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  11. #11
    Membre averti Avatar de mordrhim
    Inscrit en
    Avril 2007
    Messages
    270
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Avril 2007
    Messages : 270
    Points : 314
    Points
    314
    Par défaut
    R[a]C[b]
    déplacement de a selon les lignes, et de b selon les colonnes
    Dans les lignes
    a > 0 => on descend
    a < 0 => on monte
    Dans les colonnes
    b > 0 => on va vers la droite
    b < 0 => on va vers la gauche

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Points : 396
    Points
    396
    Par défaut
    Oui, c'est juste.
    C'est des coordonnées relatives (relatives à la position du curseur)

  13. #13
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    J'ai trouver comment faire.
    Il fallait utiliser des variable pour la zone à étendre. En incrémentant simplement la zone dans une variable, ca a marché.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set tutu = Sheets(1).range("C2")
    Set gogo = Sheets(1).Range("C2", "C" & Range("B2").End(xlDown).Row)
     
    Range("C2").FormulaR1C1 = "=Maformule"
    Tutu.Autofill Destination:= gogo
    Allez savoir pourquoi...

    Merci encore
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

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

Discussions similaires

  1. bash: comment mettre le résultat d'une commande dans une variable
    Par helpcomm dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 03/10/2012, 23h26
  2. [OpenOffice][Tableur] Comment mettre plusieurs paramètres dans une formule
    Par grosminet03 dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 04/11/2010, 09h58
  3. Réponses: 3
    Dernier message: 29/01/2008, 12h08
  4. Comment mettre un lien dans une page vers une autre partie de la même page?
    Par Longway dans le forum Dépannage et Assistance
    Réponses: 4
    Dernier message: 12/10/2006, 18h58
  5. Réponses: 7
    Dernier message: 02/05/2006, 16h28

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