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 :

tableau vba et somme [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut tableau vba et somme
    bonjour à tous

    je suis actuellement en train de réaliser une feuille de calcul excel pour l'analyse de données issues d'analyses chimiques. Il y a deux nombreuses action à réaliser et de façon à automatiser cela je code en vba.

    Mais je bloque sur un truc :

    dans mon analyse je dois construire un tableau comme ceci :

    yi / xi / xi² / yrl / yi-yrl /(yi-yrl)² / xi-xb /(xi-xb)
    ech1
    ech2
    ...
    ...
    ech n
    somme
    moyenne

    voici le code utilisé pour le remplissage des n lignes (certaines variable sont déclarées bien plus haut dans mon code)

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Dim tabstat() As Double
       'dimensionnement du tableau'
        ReDim tabstat(1 To Nbrep, 1 To 8)
            'definition de x et y'
             Dim cely As Range
             Dim celx As Range
             Set celx = Range(Cells(2, 2), Cells(Nbrep + 1, 2))
     
     
     
        col = 3
     
              Set cely = Range(Cells(2, col), Cells(Nbrep + 1, col))
            Dim a As Double
            Dim b As Double
            a = WorksheetFunction.Slope(cely, celx)
            b = WorksheetFunction.Intercept(cely, celx)
          Dim xb As Long
          Dim yrl As Long
          Dim yb As Long
          Dim it As Integer
          Dim jt As Integer
     
      xb = WorksheetFunction.Average(celx)
      yb = WorksheetFunction.Average(cely)
     
          For it = 1 To UBound(tabstat, 1)
         tabstat(it, 1) = cely(it)
         tabstat(it, 2) = celx(it)
         tabstat(it, 3) = (celx(it)) ^ 2
         tabstat(it, 4) = a * celx(it) + b
         tabstat(it, 5) = tabstat(it, 1) - tabstat(it, 4)
         tabstat(it, 6) = (tabstat(it, 5)) ^ 2
         tabstat(it, 7) = tabstat(it, 2) - xb
         tabstat(it, 8) = (tabstat(it, 7)) ^ 2
         Next it
    jusqu'ici tout fonctionne bien, mais j'aimerais pouvoir rajouter les deux lignes pour calculer les sommes et moyennes de chaque colonne
    le code serait donc quelque chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    redim preserve tabstat (UBound(tabstat, 1) +2 , 8)
        for jt =1 to Ubound(tabstat,2)
        tabstat (Ubound (tabstat,1)-1 , jt) = SOMME DES LIGNES PRECEDENTES (pour une colonne jt)
        tabstat (Ubound (tabstat,1)-1 , jt) = MOYENNE DES LIGNES PRECEDENTES (pour une colonne jt)
    next jt
    J'ai essayé en utilisant les worksheetFunction et applicationFunction mais j'ai un problème pour définir mes plages de données (celles-ci doivent pouvoir comporter un nombre de ligne variable)

    J'espère avoir été assez précis et merci d'avance

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 166
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai essayé en utilisant les worksheetFunction et applicationFunction mais j'ai un problème pour définir mes plages de données (celles-ci doivent pouvoir comporter un nombre de ligne variable)
    Tu peux parfaitement inclure des variables dans ta fonction.
    Petit exemple avec VLookUp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim maPlage As Range, maValeur As String
    Set maPlage = ThisWorkbook.Worksheets("Fiche-b").Range("A2:K14")
    maValeur = "C011"
    MsgBox Application.WorksheetFunction.VLookup(maValeur, maPlage, 2, False)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    redim preserve tabstat (UBound(tabstat, 1) +2 , 8)
    Attention, tu ne peux redimensionner que la dernière dimension du tableau.

    Cordialement.

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Par défaut
    Merci pour vos réponse. Je n'avais pas bien intégré le fait que ce soit la dernière dimension du tableau qui pouvait être redimensionnée.

    J'ai quand même trouver une solution en créant un autre tableau 2d et en utilisant le code suivant

    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
      For it = 1 To UBound(tabstat, 1)
         tabstat(it, 1) = cely(it)
         tabstat(it, 2) = celx(it)
         tabstat(it, 3) = (celx(it)) ^ 2
         tabstat(it, 4) = a * celx(it) + b
         tabstat(it, 5) = tabstat(it, 1) - tabstat(it, 4)
         tabstat(it, 6) = (tabstat(it, 5)) ^ 2
         tabstat(it, 7) = tabstat(it, 2) - xb
         tabstat(it, 8) = (tabstat(it, 7)) ^ 2
     
         Next it
         Dim tabsum(1 To 1, 1 To 8) As Double
         Dim tabmoy(1 To 1, 1 To 8) As Double
     
         For jt = 1 To 8
         tabsum(1, jt) = Application.sum(Application.Index(tabstat, , jt))
         tabmoy(1, jt) = Application.Average(Application.Index(tabstat, , jt))
    Soit un tableau pour les moyennes (tabmoy) et un pour les sommes (tabsum). De plus il semble falloir utiliser les fonctions ci-dessus pour les tableau qui n'apparaissent pas sur la feuille excel.

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

Discussions similaires

  1. Somme d'un tableau vba 3 dimensions
    Par Thibatus dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/10/2013, 10h07
  2. Somme à l'intérieur d'un Tableau VBA
    Par Olivier B dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/05/2008, 08h25
  3. [FAQ VBA Excel] Somme d'une ligne d'un tableau sur un classeur fermé
    Par nox1492 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/12/2007, 12h54
  4. [VBA-E] somme d'une plage dynamique
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/11/2005, 21h58
  5. [VBA Excel]Somme
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 15h53

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