Bonjour à tous,
Suite à mes précédentes interventions je butte encore sur un sujet.
Je suis amené à traiter plusieurs fichiers de données avec une itération.
Après analyse du fichier 1 (quantité d'événement) je crée dois généré un tableau synthétique permettant de faire une moyenne des données issues du fichier 1, fichier 2, fichier n.
Dans cette synthèse les quantité d'événements sont stockés dans une variable appelée tablo() soit écrite. Cette variable est composée de 12 lignes et 5 colonnes.
Suite à l'itération et l'analyse du fichier 2 cette même variable est donc modifiée avec les nouvelles valeurs mais je souhaite ajouter celles de l'analyse 1
Comme les données stockées pour la cellule (a,z) correspond au même événement je pensais que cela serait simple de faire une somme et bien non
exemple souhaité
cellule (1,1) = cellule (1,1) du fichier 1 + cellule (1,1) du fichier 2 + cellule (1,1) du fichier n
même chose pour les les cellules jusqu'à (12,1) et (1,5) et (12,5)
je pensais tout bonnement que générer une seconde variable tableau sommes() en sommant le range de mes données du fichier 1 (écrite dans le fichier Excel) permettrait de le faire:
et bien non
Code : Sélectionner tout - Visualiser dans une fenêtre à part sommes = Range("C5:G16").Value + sommes
Je ne comprends pas pourquoi?
Je pensais adapter à mon cas le code de Jacques Boisgontier suivant:
Mais à part me casser les dents je n'arrive pas à grand chose de plus
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
37
38 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) ' Somme Colonne1/ Feuil4 MsgBox SommeTableau(Tableau, 2, Empty, 4) ' Somme Ligne 2/Feuil4 MsgBox SommeTableau(Tableau, 1, 1, Empty) ' Somme Ligne1/Colonne1/Toutes les feuilles MsgBox SommeTableau(Tableau, 3, 2, 1) ' Ligne3/Colonne2/Feuil1 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
Merci à vous tous de votre aide très précieuse.
Partager