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 :

Tableaux Statiques et calculs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Recherche scientifique
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Recherche scientifique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut Tableaux Statiques et calculs
    Bonjour à tous,

    Je travaille sur une macro qui ouvre un fichier txt dans lequel se trouve des données mesurée. Chaque ligne représente un objet mesuré, et chaque colonne représente un paramètre mesuré de l'objet
    Par Exemple, Colonne A = Aire, B= nombre de pixels, C= longueur, ... U = diamètres .... etc ...

    Jusque là je me suis pas trop mal débrouillé tout seul. La macro ouvre le fichier et range les données en fonction de la valeur du diamètre. ça calcule le nombre d'objet par classe de diamètre et ça colle le résultat dans un autre classeur, appelé Classeur1.

    Voici le détail de mon problème.
    Au moment où la macro scanne la colonne des diamètres pour faire le tri, je range la valeur de chaque diamètre dans un tableau statique. Par exemple, j'ai le tableau
    TabDiameter1 qui correspond à la classe de diamètre [0-5[
    TabDiameter2 qui correspond à la classe de diamètre [5-10[
    etc ...
    Sur ces valeurs stockées dans mes tableaux statiques, je dois calculer la moyenne, l'écart type, 1er et 3ème quartile et la médiane.
    Pour faire ça j'ai essayé la ligne de code suivante , pour le calcul de la médiane:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("U1").Value = Application.Median("TabDiamter1(0):TabDiameter1(50))
    Mais, ça ne marche pas.
    Question : Est ce qu'il est possible de faire des calculs directement sur les valeurs stockées dans les tableaux statiques ?

    Ma solution de secours a été de récupérer les valeurs des diamètres dans les tableaux statiques et de coller les valeurs de diamètres dans une colonne de la feuille de calcul du Classeur1, de faire les calculs que je veux puis d'effacer les valeurs. Cette solution marche mais est assez lourde.
    Si la réponse a ma question est précédente est non, est ce qu'il y a une méthode plus "sexy"?

    J'espère avoir été clair sur ma démarche et merci d'avance pour ceux qui me proposeront une solution.

  2. #2
    Membre Expert
    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
    Par défaut
    Oui. La fonction d'Excel qui calcule l'écart type a un nom aussi en VBA. Pour la trouver facilement, enregistre une petite macro qui calcule l'écart type d'une série quelconque de données. L'enregistreur utilise la propriété Formula de l'objet Range et te donnera le nom VBA (en anglais) de la fonction.

    Avant de l'utiliser dans ton code, tu peux consulter l'aide en ligne pour plus de détails sur cette fonction si tu le désires.

    Ça marche pour n'importe quelle formule de cellule utilisant les fonctions intégrées d'Excel. Il y a donc une fonction VBA pour chaque fonction intégrable à une formule de cellule.

    Si tu as des problèmes, tu dis.

  3. #3
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    STDEV pour l'écrat type...
    Un "truc" génial et peu connu :
    Il y a un lexique des correspondance FR-US dans :
    c:\program Files\Microsoft Office\Officexx\1036\VBAList.xls

  4. #4
    Membre averti
    Homme Profil pro
    Recherche scientifique
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Recherche scientifique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut
    Merci pour les réponses, je ne la comprends qu'a moitié (la première).Je suis désolé mais je suis encore un novice ...

    Je crois que je me suis mal expliqué sur mon problème.
    Mes tableaux TadDiameter1 / TabDiameter2 ... sont des tableaux "virtuels" de 500 lignes. Ils n'existent pas sur ma feuille Excell.
    Ils sont déclarés en tant que variables dans ma macro VB pour Excel

    Pour ce qui est des fonctions, je les ai trouvés, il n'y a pas de problème
    Ecart type = StDev
    Moyenne = Average
    Quartile = Quartile
    Médiane = Median
    Mon problème, j'ai l'impression que ces fonctions ne marchent que si les valeurs se trouvent dans la feuille Excel. Si elle se trouvent dans un tableau (virtuel, déclaré comme une variable) les opérations de calcul ne peuvent pas se faire.
    Est ce que je peux effectuer des opérations de calcul de médiane, écart type, moyenne et médiane sur les valeurs qui sont stockées dans un tableau virtuel (qui ne se trouve pas sur une feuille Excel) ?

    En espérant avoir bien éclairé ma question.

  5. #5
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonjour,

    Tu peu utiliser les fonctions de feuilles de calcul
    voir la : http://vb.developpez.com/faqvba/inde...nslatefunction pour la liste


    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub MonTest()
     Dim a(3) As Integer
     a(0) = 2
     a(1) = 3
     a(2) = 4
     a(3) = 5
     MsgBox "Moyenne : " & WorksheetFunction.Average(a) & " EcartYype = " & WorksheetFunction.StDev(a)
     
    End Sub

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

Discussions similaires

  1. tableau dynamique de tableaux statiques?
    Par spin6 dans le forum Débuter
    Réponses: 1
    Dernier message: 14/12/2008, 20h47
  2. Réponses: 11
    Dernier message: 16/07/2007, 17h33
  3. tableau dynamique de tableaux statiques.
    Par RaphAstronome dans le forum C++
    Réponses: 2
    Dernier message: 18/02/2007, 15h43
  4. Redéfinition de tableaux statiques
    Par j_b007 dans le forum Langage
    Réponses: 5
    Dernier message: 26/01/2006, 10h10
  5. [Tableaux] erreur de calcul
    Par dleu dans le forum Langage
    Réponses: 18
    Dernier message: 08/12/2005, 14h28

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