Problème avec fonction SommeTableau

nice

XLDnaute Nouveau
Bonjour à tous

J' utiliser un tableau à 3 dimensions ( lignes,colonnes,feuilles)
dont voici la 1ère partie du code

Sub X
Dim Tableau(1 To 10, 1 To 9, 1 To 12)
Dim y As Integer, x As Integer, z As Integer

For x = 1 To 10
For y = 1 To 9
For z = 1 To 12
Tableau(x, y, z) = feuil(z).Cells(x + 1, y + 1)
Next z
Next y
Next x

et je voudrais appeler une fonction SommeTableau qui me retournerait des montants selon les valeurs de x, y z
exemples
SommeTableau(Tableau,2,3,4) qui me retournerait le montant de Cells( 2,3 ) de la feuille 4
SommeTableau(Tableau, ,3,4) qui me retournerait la montant de toutes les valeurs de la colonne (3) de la feuille 4
SommeTableau(Tableau,4, ,5)qui me retournerait la montant de toutes les valeurs de la ligne (4) de la feuille 5
etc etc
Mais j'ai du mal à intégrer cette fonction ( si mon code ci dessus est exacte ) dans cette procédure

Merci à tous pour votre aide
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Problème avec fonction SommeTableau

Bonsoir,


Code:
Sub essai()
  f = 4                          ' feuil4
  a = Sheets(f).[A1:J9]
  Cel23 = a(2, 3)            ' cellule(2,3) de feuil4
  col3 = Application.Sum(Application.Index(a, , 3))     ' Somme col3 de feuil4
  '-----
  f = 5                           ' feuil5
  a = Sheets(f).[A1:J9]
  ligne4 = Application.Sum(Application.Index(a, 4))    ' somme ligne4 de feuil5
End Sub

JB
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Problème avec fonction SommeTableau

Code:
Sub essai2()
  Dim Tableau(1 To 10, 1 To 9, 1 To 12)  ' 10 lignes/9 colonnes
  Dim y As Integer, x As Integer, z As Integer
  For y = LBound(Tableau, 1) To UBound(Tableau, 1)
    For x = LBound(Tableau, 2) To UBound(Tableau, 2)
      For z = LBound(Tableau, 3) To UBound(Tableau, 3)
        Tableau(y, x, z) = Sheets(z).Cells(y, x)
      Next z
    Next x
  Next y
  MsgBox SommeTableau(Tableau, Empty, 1, 4)  ' Colonne 1
  MsgBox SommeTableau(Tableau, 2, Empty, 4)  ' Ligne 2
  MsgBox SommeTableau(Tableau, 1, 1, Empty)  ' toutes les feuilles
  MsgBox SommeTableau(Tableau, 3, 2, 1)
End Sub

Function SommeTableau(T(), Lig, Col, F)
 If IsEmpty(Col) Then
   For x = LBound(T, 2) To UBound(T, 2)
     temp = temp + T(Lig, x, F)
   Next x
 Else
   If IsEmpty(Lig) Then
     For y = LBound(T, 1) To UBound(T, 1)
       temp = temp + T(y, Col, F)
     Next y
   Else
     If IsEmpty(F) Then
      For z = LBound(T, 3) To UBound(T, 3)
        temp = temp + T(Lig, Col, z)
      Next z
     Else
       temp = T(Lig, Col, F)
     End If
   End If
 End If
 SommeTableau = temp
End Function

JB
 

Pièces jointes

  • SommeTableau2.xls
    97 KB · Affichages: 54
Dernière édition:

nice

XLDnaute Nouveau
Re : Problème avec fonction SommeTableau

Bonsoir JB

J' ai été absent 2 jours et je reprends ce fil après avoir essayer votre macro dont je vous remercie.
Le code fonctionne très bien mais je souhaiterais aussi pouvoir faire la somme totale des valeurs
- de chacune des lignes des 12 onglets
- de chacune des colonnes des 12 onglets
- des lignes et colonnes sur chacun des onglets
- des lignes et colonnes des 12 onglets

J'ai essayé d'adapter votre code fonction mais en vain!!

Merci de votre aide

nice
 

Discussions similaires

Réponses
29
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 677
Messages
2 090 821
Membres
104 677
dernier inscrit
soufiane12