Lecture et écriture d'analyse entre 2 fichiers Excel

Fermé
vincent024 Messages postés 7 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 12 février 2016 - Modifié par pijaku le 5/02/2016 à 21:29
vincent024 Messages postés 7 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 12 février 2016 - 12 févr. 2016 à 19:09
Bonjour,

J'essaie de mettre l'analyse que j'ai effectué à partir des données d'un fichier sur un autre fichier.

Pour tester, je met les résultats sur les deux fichiers à des endroits différents, cependant, j'écrit à chaque fois seulement dans celui que j'ai analyser. L'autre ne reçoit rien, mais on me demande d'enregistré manuellement une copie de celui-ci. En plus, j'ai des problèmes lorsque je ferme Excel et que je l'ouvre par la suite.


J'aimerais savoir quel est la bonne méthode parfaite pour fermer et ouvrir les fichiers Excel tout en gardant les modifications effectués.


Voici mon code actuelle:

Public Sub Temps()

'Les variables utilisés pour l'accès au fichier
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel - Donnée à analyser
Dim wsExcel As Excel.Worksheet 'Feuille Excel - Donnée à analyser

Dim appExcel2 As Excel.Application 'Application Excel
Dim wbExcel2 As Excel.Workbook 'Classeur Excel - Doit recevoir les résultats
Dim wsExcel2 As Excel.Worksheet 'Feuille Excel - Doit Recevoir les résultats


'Les variables utilisés pour le calcul des temps
Dim flag_normal_time As Boolean, i As Long 'Flag_normal_time pour savoir si on déjà partie le chronomètre du temps normal
Dim time_start As Date, time_end As Date 'Période de temps où on est en phase landing

Dim flag_trouble_time As Boolean 'Flage_trouble_time pour savoir si on déjà partie le chronomètre du temps "No-Phase".
Dim time_trouble_start As Date, time_trouble_end As Date 'Période de temps sans phase

Dim Colonne_Landing As String, Colonne_temps As String, Colonne_Roll_Out As String 'Permet de définir les colonnes de lecture -> Plus facile pour adapter plus tard comme parametre

'----------------------------------------------------------------------
'----------------------------------------------------------------------

'Semble s'être fait, car si change un truc dans ce fichier les chiffres font aussi changer.

'Initialisation des variables pour le fichier à analyser

'ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Document_travailler\Fichier_test_1.xlsx")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)


wbExcel.Activate 'Execution de ce fichier
wsExcel.Activate 'Excecution dans cette feuille.

'Initialisation des variables pour le calcul de temps
flag_normal_time = False
time_start = 0 '12:00:00 AM
time_end = 0 '12:00:00 AM

flag_trouble_time = False
time_trouble_start = 0 '12:00:00 AM
time_trouble_end = 0 '12:00:00 AM

Colonne_Landing = "P"
Colonne_temps = "B"
Colonne_Roll_Out = "R"

'----------------------------------------------------------------------
'----------------------------------------------------------------------

'
' Code de l'analyse dans ce fichier - fonctionne parfaitement bien
'


'Écriture des résultat dans le fichier analyser - se fait parfaitement bien
Range("U5").Value = time_start 'Affichage du temps où est passé à 1
Range("U6").Value = time_end 'Affichage du temps lorsqu'est passé à 0
Range("U7").Value = time_end - time_start 'Affichage de la différence temps

Range("U9").Value = time_trouble_start
Range("U10").Value = time_trouble_end
Range("U11").Value = time_trouble_end - time_trouble_start

wbExcel.Close savechanges:=True
appExcel.ScreenUpdating = True

'--------------------------------------------------------------
'Écrire les résultats dans un autre fichier -> N'a pas fonctionné

'ouverture de l'application
Set appExcel2 = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel2 = appExcel2.Workbooks.Open("C:\Document_travailler\Vincent_Resultat.xlsm")
'wsExcel correspond à la première feuille du fichier
Set wsExcel2 = wbExcel2.Worksheets(1)

wbExcel2.Activate 'Excution de ce fichier.
wsExcel2.Activate 'Excecution dans cette feuille.


'Écriture des résultat dans le fichier (se fait actuellement dans le fichier analyse et pas dans celui-ci)
Range("X5").Value = time_start 'Affichage du temps où est passé à 1
Range("X6").Value = time_end 'Affichage du temps lorsqu'est passé à 0
Range("X7").Value = time_end - time_start 'Affichage de la différence temps

Range("X9").Value = time_trouble_start
Range("X10").Value = time_trouble_end
Range("X11").Value = time_trouble_end - time_trouble_start

wbExcel2.Close savechanges:=True
appExcel2.ScreenUpdating = True

End Sub


Merci beaucoup de votre aide.
A voir également:

2 réponses

f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712
6 févr. 2016 à 17:23
Bonjour,

Si vous programmez en VBA Excel, pourquoi creer des applications Excel pour ouvrir et traiter vos deux fichiers ?????????????????????
2
vincent024 Messages postés 7 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 12 février 2016
6 févr. 2016 à 18:51
J'ai trouvé cette partie de code sur internet et je l'ai essayer.

Finalement, cela n'a rien donnée puisque le programme ne fait aucunement le différence entre les fichiers. Il s'exécute dans celui où je suis actif lorsque je le fais fonctionner.

S'il y a une meilleur solution, j'aimerais le savoir.

Merci de l'aide.
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712
6 févr. 2016 à 18:55
Re,

Ben, vu le code, je ne comprends pas ce que vous voulez comparer puisque vous ne comparez rien
0
vincent024 Messages postés 7 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 12 février 2016 > f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025
Modifié par vincent024 le 6/02/2016 à 19:11
En fait, je voulais lire les informations du fichier "Fichier_test_1.xlsx" afin de calculer une différence de temps. Le calcul de la différence temps fonctionne et c'est pour cela que je l'ai exclue.

Par la suite, j'ai voulue écrire les résultats dans ce fichier, dans la colonne "U" et écrire ces résultats dans un autre fichier, le fichier "Vincent_resultats.xlsm", dans la colonne "X".

La lecture et l'écriture, pour les deux fichier, ce fait dans la première feuille.
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712 > vincent024 Messages postés 7 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 12 février 2016
7 févr. 2016 à 08:22
Bonjour,
Pourquoi un troisième fichier avec ce code, ça pourrait se faire dans le .xlsm?
0
vincent024 Messages postés 7 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 12 février 2016
Modifié par vincent024 le 7/02/2016 à 21:24
Bonjour,

Mon objectif n'était pas de le faire dans un troisième fichier (si j'ai fait cela sans le savoir).

Mon objectif n'était vraiment que de lire la feuille 1 du fichier "Fichier_test_1.xlsx" via les colonnes « B », « R » et « P ». Ensuite, mettre le résultat dans la colonne "U" de la première page de ce fichier. Finalement, écrire les mêmes résultats dans la feuille 1 du fichier "Vincent_resultats.xlsm", à la colonne "X".

Ma méthode n'a pas fonctionné et c'est pour cela que je cherche une solution via ce forum.
Actuellement, la macro met toujours les résultats dans le fichier actif et non dans les fichiers où j’aimerais qu’elles aient.

Merci de votre aide.
0
f894009 Messages postés 17229 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 21 janvier 2025 1 712 > vincent024 Messages postés 7 Date d'inscription jeudi 4 février 2016 Statut Membre Dernière intervention 12 février 2016
8 févr. 2016 à 07:25
Bonjour,
Ok, je regarde la chose
À+
0