Problème de test sur format de données
Bonjour !
Je me permets de poster par rapport à un problème qui me travaille depuis plusieurs jours...
Je débute aussi, la solution est, ça tombe, toute bête !
Voici le "projet" :
Dans un premier temps, je récupère d'un logiciel de simulation un fichier (fichier "input") permettant d'observer l'évolution du nombre de personnes d'un espace : les entrants dans cette zone et les sortants par pas de temps (étrange, je vous le concède ^^ tous les 00:00:00,6)
Je souhaite récupérer dans un second fichier (outil analyse V5, je vous passe les 4.1, 4.2, 4.21 ^^) récupérer la colonne de temps, la colonne du nombre de personnes entrantes et la colonne du nombre de personnes sortantes.
Ensuite, une fois que l'utilisateur a indiqué le nombre de simulation réalisé (dans le cas de ce input, 50), le début de la simulation (00:00:00,0) et la durée d'une simulation (00:03:00,0), une macro 'initialisation indice temps" va prendre la valeur de début de silmulation et le pas de temps pour editer les deux premières colonnes qui sont
1) le numero de la simulation
2) le temps de début de la simulation.
En cliquant sur actualisation, la macro va chercher les colonnes temps, entrants et sortants dans le fichier input.
Le problème arrive ensuite, car je compare les temps de la colonne 2 "temps de début de simulation" avec les temps importés d'input, pour obtenir la ligne correspondante au début de la simulation n en testant ligne par ligne.
Le test fonctionne sur les deux premières, je récupère bien la ligne, mais ensuite ça plante...
Une astuce est de supprimer dans la colonne 1 un zero du temps, faire entrer, et relancer l'actualisation...jusqu'à ce que ça bute sur un temps après... J'avais d'onc essayer de faire "=Cellule*1" pour forcer l'actualisation, mais rien n'y fait
Je pense vraiment que le problème vient du type de données mais impossible de trouver comment le résoudre...
Qu'en pensez-vous ?
En vous remerciant pour votre temps.
PS : mes fichiers étant trop gros, je les ai mis sur gdrive.
input : https://drive.google.com/file/d/0B7JlLkgI6Nu0cVBFaklIbk5NQzQ/view?usp=sharing
outil analyse : https://drive.google.com/file/d/0B7JlLkgI6Nu0MTZxV1l5cHZEYk0/view?usp=sharing
bonjour,
Les macros optimisées. (un peu !)
Sub reinitialiser()
Columns("A:D").ClearContents
Range("K:K,L:L,N:N").ClearContents
Range("I:I,J:J, K:K,L:L").ClearContents
Cells(4, 9) = "Simulation n°"
Cells(4, 10) = "Début de simulation"
Cells(4, 11) = "Ligne de début de la simulation"
End Sub
Sub actualisation()
Dim ligne#, fintableau%
fintableau = 4 + Cells(14, 7)
Worksheets(1).Activate
Call recuperer_fichier_source
Call initialisation_indice_temps
'Trouver ligne debut de chaque simulation
Call find_start_simulation
End Sub
'Initialisation des temps de début de simulation
Sub initialisation_indice_temps()
Dim fintableau%
fintableau = 4 + Cells(14, 7)
Cells(5, 9) = 1
Cells(5, 10) = Cells(15, 7)
For i = 6 To fintableau
j = i - 1
Cells(i, 9) = i - 4
Cells(i, 10) = Cells(j, 10) + Cells(16, 7)
Next
End Sub
'Fonctions qui permet de trouver la ligne de début de chaque simulation
Sub find_start_simulation()
Dim fintableau%, ligne#
fintableau = 4 + Cells(14, 7)
ligne = 18
iLR = [A17].Resize.CurrentRegion.Rows.Count + 15
For i = 5 To fintableau
Cells(i, 9) = i - 4
For ligne = 18 To iLR
If Left(Cells(ligne, 1).text, 8) = Left(Cells(i, 10).text, 8) Then
Cells(i, 11) = ligne
ligne = ligne + 1
Exit For
End If
Next
Next
End Sub
Sub recuperer_fichier_source()
Dim inputfile$, currentname$, currentpath$
MsgBox ("Vous allez devoir sélectionner le fichier à analyser")
currentname = ThisWorkbook.Name
currentpath = ThisWorkbook.Path
inputfile = Application.GetOpenFilename("Fichiers Excel (*.xls*),*.xls*")
'nom fichier avec extension
Workbooks.Open Filename:=inputfile
With Workbooks(currentname).Sheets("Calculs Entrants + sortants")
Sheets("Entrants").Columns("A:B").Copy .[A1]
Sheets("Sortants").Columns("B:B").Copy .[C1]
ActiveWorkbook.Close
End With
End SubCompter environ 2 minutes pour l'exécution de find_start_simulation. On doit pourvoir réduire ça considérablement : J'y réfléchit...
A+
Bonjour Galopin01 !
Tout d'abord mes excuses pour le retard...
Merci pour l'optimisation (j'ai honte
Du coup pour la comparaison, si j'ai bien compris, tu as mis toutes les valeurs dans un nouveau tableau en forçant le changement de format ?
Qu'est ce qui fait qu'en comparant directement, ça ne fonctionne pas ?
Merci pour ton temps