VBA, Création d'une Matrice avec boucles imbriquées.
Autre Post
Bonjour,
tout d'abord pardonnez- moi d'avance l'absence d'accent dans mon message, (clavier etranger)
Je dispose d'un dossier contenant de nombreux fichiers excel de formes identiques. Dans chacun se trouve dans la colonne H une variable 'Heure' de la forme 0123 pour 01h23 , qui s'etend a partir de 0000 jusqu'a 2359, a chaque periode de temps est associe un certain nombre (d'operation) un entier naturel ou nul, contenue dans la colonne A . Cependant l'heure n'est pas distribue de maniere 'homogene', je m'explique, sur le Fichier 1 de mon dossier je peux avoir :
0012
0023
0034
0056
Et avoir dans le Fichier 2 du dossier
0021
0045
0059
Ce que je souhaite donc est de creer sur un autre fichier excel une matrice de la forme suivante:
H1 correspond a la periode de temps entre 0000 et 0059 , cela jusqu'a entre 2300-2359=H24
1;2;3 ... Correspond au different fichier de mon dossier.
H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 ....H24
1
2
3
4
5
.
.
.
Nombre de fichier total
Donc pour chaque periode de temps (chaque heure en realite) je souhaite faire la somme du nombre d'operation contenu en A et ce pour chaque feuille. Ce que j'ai fais pour l'instant est le code suivant:
Code:
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
| Sub Dailytraffic3()
'Application.ScreenUpdating = False
Dim wB As Workbook
Dim SumResult As Double
'Dim H1 As Range
Dim i As Integer
Dim H1RAN As Variant
Set FileSystemObj = CreateObject("Scripting.FileSystemObject")
Set FolderObj = FileSystemObj.GetFolder("C:\...\")
Set H1RAN = Workbooks("Libro1").Sheets("Hoja1").Range("B1")
For Each fileobj In FolderObj.Files
Set wB = Workbooks.Open(fileobj.Path)
For i = 4 To 100
'H1 = (wB.Sheets("Schedule Daily Bank Structure R").Cell(i, 1).Value)
If (0 <= Left(wB.Sheets("Schedule Daily Bank Structure R").Cells(i, 8).Value, 2) < 1) Then
H1RAN = H1RAN + wB.Sheets("Schedule Daily Bank Structure R").Cell(i, 1).Value 'Cela ne fonctionne pas, je ne sais pas vraiment pourquoi ...
End If
Next i
H1RAN = Workbooks("Libro1").Sheets("Hoja1").Range("B1") + 1
wB.Save
wB.Close
Next fileobj
End Sub |
Je souhaite repeter l'operation 24 fois en creant H2RAN , H3RAN etc ...
Pour l'instant cette ''intuition'' et ce debut de code ne fonctionne meme pas, cela fait pas mal de temps que je travaille dessus.
Je precise aussi que je debute tout juste en VBA,
Je vous remercie sincerement pour votre contribution.
4 yeux valent mieux que 2
Bonjour,
je commence à m'en sortir aussi en VBa à force de manipuler
En regardant ton code, j'ai pu remarquer quelques points qui peuvent expliquer que cela ne fonctionnent pas ou dysfonctionne.
1. "Set FileSystemObj = CreateObject("Scripting.FileSystemObject")" ok par contre la variable "FileSystemObj" n'est pas déclaré, un "DIM FileSystemObj as Object (ou variant)" améliorerait surement le code. vérifie peutêtre que toute variable soit correctement déclaré.
2. apparrement, tu n'ouvre pas le fichier avant d'essayer d'atteindre des données ce qui doit surement te créer une erreure.
et surement d'autres dysfonctionnement
Pour les différentes méthodes, je t'invite à allez dans la documentation microsoft en tapant la méthode et le language dans ton moteur de recherche
, par exemple "getfolder vba" ce qui te proposera https://docs.microsoft.com/fr-fr/off...tfolder-method souvent un exemple avec les différentes options te sont expliqués te permettant de mieux appréhender ton problème.
4. enfin à chaque code erreure, fait une recherche dans le moteur pour essayer de comprendre la raison si tu n'y arrive pas, post un message pour que l'on essaye de voir avec toi la cause probable, avec le code erreur produit.