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 :

Sub statistique descriptive


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 193
    Par défaut Sub statistique descriptive
    Bonjour,

    Je suis débutant en VBA. Et je souhaite régler un problème: réduire la taille de mes programmes.

    J'ai fais un sub qui regroupe quelques instructions qui reviennent 4 fois dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Stat (ByVal dMoyenne As Double, ByVal dMediane As Double, _
                 ByVal dmax As Double,ByVal dmin As Double, ByRef vVec1 As Variant)
    dMoyenne=Moyenne(vVec1)
    dMediane= Mediane(vVec1)
    dMax= Max(vVec1)
    dMin=Min(vVec1)
    End sub
    Dans la procédure Stat, toute les variables reçoivent bien une valeur. Mais dans la procédure finale, avec mon call je vois que mes variables sont nulles. Pourquoi et comment remédier à ce problème?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub finale()
    dim dMoyenne, dMediane, dMax, dMin as Double
    dim vVecteur as variant
    .../* PAS MAL D'INSTRUCTION*/
    Call Stat(dMoyenne,dMediane,dMax,dMin,vVecteur)
    End Sub
    Merci d'avance

  2. #2
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Bonjour,

    Il faut que tu passes tes arguments par référence (ByRef), pour qu'ils soient modifiés par la procédure. Si tu les passes par valeur (ByVal) ce sont des copies de tes variables qui sont envoyées à la fonction.
    Un petit exemple pour t'en convaicre
    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
    16
    17
    18
    19
    20
    Sub testByVal(ByVal valeur As Double)
        valeur = 9
    End Sub
     
    Sub testByRef(ByRef valeur As Double)
        valeur = 9
    End Sub
     
    Sub testMain()
     
        Dim valeur As Double
        valeur = 0
     
        testByVal valeur
        Debug.Print "Byval: " & valeur   'affiche  0
     
        testByRef valeur
        Debug.Print "ByRef: " & valeur   'affiche 9
     
    End Sub
    D'autre part une remarque concernant la déclaration des tes variables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim dMoyenne, dMediane, dMax, dMin as Double
    Dans cette instruction, seule dMin est déclarée en tant que Double, les autres seront de type Variant.

    Bon WE.

Discussions similaires

  1. Calcul de statistiques descriptives
    Par BIOoOAG dans le forum QlikView
    Réponses: 5
    Dernier message: 11/06/2014, 10h48
  2. Tableau croisé avec statistiques descriptives
    Par krefkref dans le forum R
    Réponses: 1
    Dernier message: 09/05/2014, 11h33
  3. Statistiques (description des métriques)
    Par ineg_omg dans le forum Apache
    Réponses: 1
    Dernier message: 25/11/2013, 11h33
  4. Statistique descriptive
    Par Neyou dans le forum SAS STAT
    Réponses: 1
    Dernier message: 15/01/2013, 12h58

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