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 :

Utilisation de formule excel [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Points : 31
    Points
    31
    Par défaut Utilisation de formule excel
    Bonjour à tous,

    Je souhaite utiliser une formule excel dans une macro. Cette formule est "COEFFICIENT.CORRELATION(matrice1;matrice2)".

    Dans une cellule excel j'ai saisi: =COEFFICIENT.CORRELATION(G12:G23;H12:H23)
    Ca marche parfaitement mais maintenant je voudrai faire la même chose en vba et en rendant les matrices 1 et 2 dynamiques.

    Je n'arrive pas à faire fonctionner cette formule dans ma macro avec des plages statiques, donc avec des plages dynamiques

    J'ai essaye en faisant ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set myplage1 = Feuil1.Range(Cells(12, 7), Cells(12 + 10, 7))
    Set myplage2 = Feuil1.Range(Cells(12, 8), Cells(12 + 10, 8))
     
    Feuil1.Range("A3").FormulaR1C1 = "=COEFFICIENT.CORRELATION(myplage1,myplage2)"
    ou encore ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Range("A3").FormulaR1C1 = "=COEFFICIENT.CORRELATION(G12:G23;H12:H23)"
    Des tonnes de sujets parlent de Formula ou Formula R1C1, mais ce que j'ai trouvé ne m'a pas permis de résoudre mon problème.

    Merci de me donner un petit coup de pouce

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    FormulaR1C1 demande une adresse relative où R = le décalage de ligne par raport à la cellule active, et C le décalage de colonne
    Pour utiliser Feuil1.Range("A3").... tu dois utiliser "Formula".
    Vérifie tout de même, en enregistrant la macro, que ta formule française soit bien traduite en anglais (Que devient "=COEFFICIENT.CORRELATION" une fois traduit en anglais par l'enregistrement de la macro ?
    Sinon, tu peux aussi utiliser "FormulaLocal" qui permet de mettre la formule en français dans la macro.
    Pense aussi à remplacer les ";" par des virgules dans la formule. VBA l'aime pas les points-virgules
    A+

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    En fait ce que tu as écrit en bon français
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=COEFFICIENT.CORRELATION(G12:G23;H12:H23)"
    doit s'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=CORREL(R[9]C[6]:R[20]C[6],R[9]C[7]:R[20]C[7])"
    Aussi Feui1. est à remplacer par Sheets("Feuil1").
    Frédéric
    Développeur d'Applications Access

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Tu as raison fgiambelluco c'est ce que je viens de voir en faisant un enregistrement de la macro.

    Premier pas réussi, J'arrive en statique à calculer le coefficient de corrélation.

    Je viens de faire plusieurs tests pour rendre la plage de cellules dynamique.
    Mais c'est la première fois que je suis confronté à cette manière de définir les lignes et les colonnes ( R[...]C[...]:R[...]C[...],R[...]C[...]:R[...]C[...] ).
    J'ai essayé en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("ANALYSE").Range("A3").FormulaR1C1 = "=CORREL(R[12]C[6]:R[12+&line_max]C[6],R[12]C[7]:R[12+&line_max]C[7])"
    ou faire l'addition en avant la cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    line_max = line_max + 12
    Sheets("ANALYSE").Range("A3").FormulaR1C1 = "=CORREL(R[12]C[6]:R[line_max]C[6],R[12]C[7]:R[line_max]C[7])"
    et en mettant le & :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    line_max = line_max + 12
    Sheets("ANALYSE").Range("A3").FormulaR1C1 = "=CORREL(R[12]C[6]:R[&line_max]C[6],R[12]C[7]:R[&line_max]C[7])"
    Je sais que mettre des codes qui marchent pas ne fait pas beaucoup avancer les choses mais au moins vous voyez ce que j'ai testé et qui ne marche pas.

    Merci

  5. #5
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour à tous,


    Par rapport à ton exemple, je propose quelque chose comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim MyPlage1 As Range, MyPlage2 As Range
    Set MyPlage1 = Feuil1.Range(Cells(12, 7), Cells(12 + 10, 7))
    Set MyPlage2 = Feuil1.Range(Cells(12, 8), Cells(12 + 10, 8))
    Feuil1.Range("A3").Formula = "=CORREL( " & MyPlage1.Address & "," & MyPlage2.Address & ")"

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Merci aalex_38 ça marche au poil

    Je vais me renseigner d'avatage sur la méthode adresse que je n'ai jamais utilisée et qi à l'air fort utile!!

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Re
    Ou alors, mais c'est moins lisible que la 1ere syntaxe modifiée par aalex_38.
    Avec la 2ème syntaxe, il faut faire des ruptures de chaine pour concaténer les variables ; du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    line_max = line_max + 12
    Sheets("ANALYSE").Range("A3").FormulaR1C1 = "=CORREL(R[12]C[6]:R[" & line_max & "]C[6],R[12]C[7]:R[" & line_max & "]C[7])"
    Frédéric
    Développeur d'Applications Access

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 30/08/2006, 23h13
  2. [EXCEL][VBA] Utilisation des formules Excel en VBA
    Par Amanck dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 15h08
  3. Utilisation de formule sous excel...
    Par learo dans le forum Excel
    Réponses: 7
    Dernier message: 06/12/2005, 12h02
  4. [CR 9] Utilisation des formules
    Par Joleroy dans le forum Formules
    Réponses: 9
    Dernier message: 13/09/2004, 08h11
  5. [Turbo Pascal] Utiliser un fichier Excel
    Par Lady dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 09/03/2003, 20h34

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