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 :

Calculs sur Variables Tableaux VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Par défaut Calculs sur Variables Tableaux VBA
    Bonjour à tous !

    J'ai réaliser une macro où j'ai stocké l'ensemble de mes données sous forme de variables Tableaux (des matrices mathématiques)

    Je voudrais savoir s'il est possible d'obtenir le minimum des valeurs d'une ligne ou d'une colonne d'un de ces matrices autrement que par des boucles.

    Exemple : si le contenu de la matrice test est
    1 4 6
    2 5 1
    1 2 4

    je veux minimum ( matricetest(1 to 3,3)) = 1 (valeur), 2(ligne), 3(colonne)
    soit que le code renvoie la valeur, la ligne et la colonne dans lesquelles se situe le résultat. si je lui demande le minimum de la colonne 3

    et si il y a plusieurs valeurs en minimum, il me renvoie la première valeur et ses coordonnées.
    Exemple : minimum (matrice(1 to 3,1)) = 1 (valeur), 1(ligne), 1(colonne)

    Est-ce possible ???

    Voici ce que j'ai trouvé tout seul dans mon coin -
    mais je dois entrer pas mal de paramètres. (je n'ai pas utiliser les fonctions Ubound ou Lbound, donc j'entre la valeur du max de lignes dans mRows), la colonne à calculer dans mCOl et le tableau avec mArray.

    Et chose la moins "honnête",
    je précise d'entrée la valeur maximale que pourrait prendre les valeurs (ici 100).

    Il y aurait-il voie d'amélioration ???

    J'ai une fonction qui utilise des boucles.
    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
    21
    22
    ---------------
    'Fonction de calcul du rang du minimum
    Function RangDuMinimum(mRows As Long, mCol As Long, ByRef mArray) As Long
    Dim ValMinTemp As Double
    ValMinTemp = 100 ' NbreMax de dossiers
        For i = 1 To mRows
            Select Case i
                    Case 1 To (mRows - 1)
                                If mArray(i, mCol) <= mArray(i + 1, mCol) And mArray(i, mCol) <= ValMinTemp Then
                                RangDuMinimum = i
                                ValMinTemp = mArray(i, mCol)
                                Else
                                End If
                    Case mRows
                                If mArray(i, mCol) <= ValMinTemp Then
                                RangDuMinimum = mRows
                                Else
                                End If
            End Select
        Next i
    End Function
    ------------------
    Merci beaucoup de m'aider car je commence à travailler avec ce type de variable et effectivement c'est bien plus rapide et élégant (intellectuellement).

    PS j'ai lu le tutoriel http://silkyroad.developpez.com/vba/tableaux/#LVI

  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
    Par défaut
    Par macro tu peux faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Application.WorksheetFunction.Min([A1:C10])
    où A1:C10 est la plage examinée.
    Bonne journée

    Edit

    Tu peux aussi utiliser des variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub PourVoir()
    Dim plage As Range, NoLig1 as long, NoCol1 as integer, NoLig2 as long, NoCol2 as integer
    NoLig1 = 2
    NoLig2 = 10
    NoCol1 = 1
    NoCol2 = 3
    Set plage = Range(Cells(NoLig1, NoCol1), Cells(NoLig2, NoCol2))
    MsgBox Application.WorksheetFunction.Min(plage)
    End Sub

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

Discussions similaires

  1. [MySQL] Calculs sur des tableaux
    Par jarbinx dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 05/04/2012, 11h23
  2. Question sur les tableaux(vba)
    Par kratos60 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/11/2010, 16h49
  3. Calcul sur des tableaux
    Par whitearrow38 dans le forum VBScript
    Réponses: 0
    Dernier message: 07/07/2010, 18h23
  4. calcul sur variable interne
    Par looping dans le forum Rave
    Réponses: 2
    Dernier message: 24/11/2008, 15h07
  5. Réponses: 4
    Dernier message: 15/12/2002, 04h19

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