[MACRO] 6 fichiers indiv => 1 fichier complet

L

lo

Guest
[MACRO] 6 fichiers indiv => 1 fichier complet

Bonjour le forum!

Dans le but d'automatiser mon outil de recherche, je souhaiterai monter une macro qui mette à jour le fichier chaque nuit à 00.00.
Petit pb, je ne suis pas des meilleurs en macro...

J'ai 6 fichiers .xls mis à jour quotidiennement par mes collégues et moi même. Dans ces fichiers chaque jour sont maj une ou plusieurs lignes depuis un userform.

Deux solutions donc :
1/ lorsque qu'une information est saisie elle l'est dans les deux fichiers. L'un indiv, et l'autre général.
ou
2/ chaque jour à minuit tourne une macro qui vide le fichier général puis récupere les infos des 6 fichiers indiv. (anciennes et nouvelles data).

Kel solution adoptée (la moins lourde possible sachant que mon pc reste allumé 24/24) et dans le cas de la macro comment se présenterait elle ?

Par avance merci,
et bonne semaine à tous/toutes!
 
L

lo

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Lol
Elle est pas mal celle là :) J’ai failli rajouter un ‘ pour commenter et te dire que j’avais modifier les noms par pure confidentialité.

En fait ma ligne exacte est :
TheArrayOfBooks = Array("loic.xls", "touré.xls", "mamadou.xls", "sara.xls", "laétitia.xls", "stephane.xls", "elite.xls")

Quand au jeu des sets erreurs, tu gagnes j’ai effectivement modifié le code (rajouté un 7). Apparement ça aura eu pour effet de stopper un bug. Parfois la ligne 6 de général était modifié je ne sais pas trop pk …

Après les divers changement, l’err subsiste. Loic.xls est ouvert, seul des loic.xls sont incrementés dans le fichier général, puis une proposition d’enregistrement arrive et tout s’arrete.

L’éclate totale
Allez va pour un second café
:D
 
@

@+Thierry

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Arf !!!

Oui tu devrais boire plus de café ! Car là tu me fais refaire tous les tests qui marchaient très bien lors de mon premiers développement...

Donc OK j'ai compris !, mais depuis que j'ai fait les test, je n'ai pas été ré-essayé de refaire ce que je t'avais dit, mais en fait en reconstruisant tout, je me rends compte que tu ne m'as pas bien compris et que tu n'as pas appliqué mes instructions ....

Dans mon message du 27-07-04 15:30 j'ai pourtant bien précisé ceci :

Et dans le code lui-même de la macro "CollectingTheFiles" juste avant "End Sub" mais après le Next :
Application.Quit
ThisWorkbook.Close True


Jamais je n'ai dis de mettre ces deux lignes dans "CollectingInfo".... Grrr


Pour ce qui est du T7 c'est catégoriquemnt non ! En aucun cas ceci stopperait un quelconque Bug, bien au contraire !!! LS étant la dernière Ligne Source (NB sur Colonne D) donc ("A7:T" & LS) signifie A7:T dernière Ligne.... Mettre ("A7:T" & LS) constitue une erreur, A7:T7 et dernière ligne soit 777 (si la dernière ligne est 77)... OK ?

Re-voici le Code que je viens de faire tourner

_____________________________________________________________________________
Sub CollectingTheFiles()
Dim TheArrayOfBooks As Variant
Dim WB As Variant
Dim ThePath As String

ThePath = "N:\path\"

TheArrayOfBooks = Array("loic.xls", "touré.xls", "mamadou.xls", "sara.xls", "laétitia.xls", "stephane.xls", "elite.xls")


For Each WB In TheArrayOfBooks
Workbooks.Open ThePath & WB
CollectingInfo ActiveWorkbook
Next

Application.Quit '<<<< ARF C'est ici que je t'ai dit de mettre ceci !!! lol
ThisWorkbook.Close True
End Sub


Sub CollectingInfo(File As Workbook)
Dim LC As Integer, LS As Integer
Dim PlageSource As Variant
Dim WSCible As Worksheet

Set WSCible = ThisWorkbook.Sheets("Collection")

With File.Sheets(1)
LS = .Range("D65536").End(xlUp).Row
PlageSource = .Range("A7:T" & LS) 'Pas le A7:T7 malheureux !
End With

LC = WSCible.Range("A65536").End(xlUp).Row + 1

For i = 1 To LS - 6
WSCible.Cells(LC + i, 1) = File.Name
Next

WSCible.Range("B" & LC + 1 & ":U" & LC + LS - 6) = PlageSource

File.Close 0

End Sub
_____________________________________________________________________________


Cette fois-ci, ce devrait être la bonne !!! LOL
Bonne Journée
@+Thierry
 
L

lo

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Punaise ... Me doutait que c t une bétise du genre mais donnant une formation tte la journée je n'avais pas encore eu le temps de relire dans l'ensemble tes instructions. Je comprends mieux maintenant le bug en question ...
Comme quoi le plus simple est bien souvent devant nos yeux !

A priori cela fonctionnne sans encombres.
J'attends les droits pour la plannification de façon à tester ton code.
Grand merci pour ton aide en tout cas, ce sont les collégues qui vont être ravi !

Bonne journée.

ps: je file plonger la tête dans le café
 
L

lo

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Bonjour thierry, le forum.

J'ai tenté de récupèrer les droits pour utiliser le plannificateur des taches de WinXP afin de lancer excel 97 (qui n'ai pas prévu pour XP ...). Eh bien même avec le compte admin, j'ai la même err. On supute donc un pb de compatibilité, qq'un à déjà eu ce genre de cas?!

Bonne journée! :)
 
@

@+Thierry

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Bonjour Lo, le Forum


L'appli fonctionne t'elle en l'ouvrant manuellement (en ayant changé les horraires dans VBA WorkBook_Open afin que la macro "CollectingTheFiles" se déclenche ???

Si oui ça n'a rien à voir avec Excel 97 et une compatibilité quelconque par rapport au macros... En fait le planificateur de Tâche doit pouvoir logiquement lancer n'importe quoi, que ce soit un ".exe", ".vbs", ".bat", ."cmd" et même un fichier ".xls"... Je ne vois pas de contre-indication avec bon vieux machin !!!

Huum dans le style de la cascade infernale, on peut essayer de faire un VBScript pour voir...(faut que ta machine ait le "Windows Scripting Host"(WSH) installé et actif)

Dans le NotePad (Bloc Note de Windows) tu mets ce code en adaptant strictement le chemin complet du fichier où se situe les macros dans le WorkBook_Open, et en n'ajoutant rien d'autre ni Sub / End Sub_______________________________________________________________________________________
Dim xl

Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open "I:\MC_DEV\Key_Projects\VBS_Test\TestXLD.xls"
xl.Visible = True

Set Xl = Nothing

______________________________________________________________________________________
Puis tu sauves ceci là où tu veux avec un nom comme ceci "TheOpener.VBS"...

Puis tu essaies de faire pointer le Windows Task Manager Dessus...

Voilà, si rien ne marche alors faudra choisir entre la Macro OnTime, le marteau attaché à un réveil mécanique à cloches qui va tomber sur la souri scotchée au bureau pour pointer sur le Fichier à ouvrir, ou te faire payer les heures supps pour venir lancer le programme toutes les nuits !! lol

Bon Courage en tout cas !
@+Thierry
 
L

lo

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Bonjour Thierry,


Merci pour toutes ces nouvelles infos.
Il nous est apparement impossible d'utiliser le plannificateur des taches sous Winxp pour programmer le lancement auto d'excel :

Plannificateur des tâches
La nouvelle tâche n'a pu être crée.
L'erreur spécifique est :
0x8007005 : Accès refusé.
Essayer de localiser l'apllication avec le bouton Parcourir de la page de tâches ' (j'ai déjà essayé)

J'ai beau tenté de programmer une plannification d'excel ou du .xls directement, j'ai tjs un acces refusé. Mon administrateur a tres gentiment essayé depuis mon poste avec ses logs, idem.
A tout hasard j'ai tenté Word, idem.

Je me suis dis que si c'était lié à Office, un jeu tel que le démineur fonctionnerai et pourtant ...

Il s'agit donc bien d'un problème de pouvoir. Ce que je ne pige pas c que même avec un log admin cela ne fonctionne pas (je n'ai pas non plus fait tout les tests).

Dans un premier temps je vais tester la macro de façon a voir si entre 14:00 et 16:00 une ouverture déclanche la mise à jour, et reviens par ici pour la suite :)

Bonaprem!
 
L

lo

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Re,


J'ai eu l'occasion de faire quelques tests.
Apparement impossible de programmer le lancement d'un programme qu'il fasse parti du pack office ou non (notepad, freecell etc ne fonctionne pas non plus). Toujours une err hexa de type 5 relatif au droit... J'en viens à me demander si le compte admin de mon administrateur avait vraiment tt pouvoir ...

Quand à la macro evenementielle, je viens de la modifier pourqu'entre 13h et 15 si le fichier gnl est ouvert, elle se lance automatiquement (cool :p).

L'ouverture des fichiers est ok, l'incrémentation dans la feuille Collection est ok, mais une fois la maj terminé j'ai le droit à une belle err (lorsqu'il cherche à enregistrer):
1/ j'ai le droit au rapport d'err de microsoft excel
2/ quand je clic sur débogage j'ai un popup :
Microsoft Excel:excel.exe - Erreur d'application
L'instruction à "0x301101b" emploie l'adresse mémoire "0x0000010". La mémoire ne peut âs être "read".
Cliquez sur ok pour terminer le programme.

Je vais de se pas faire des recherches sur cette erreur...

a+
 
@

@+Thierry

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Aie !!!

Pour vois si tu as les droits tu vas dans Control Pannel (Panneau de Configuration) Users Accounts (Comptes Utilisateurs) tu vas être vite fixé !

Mais Là ton dernier truc c'est plus embêtant !! mais depuis le début on a jamais eu ça ???

C'est sur une autre machine ? As-elle assez de RAM , n'as tu pas fait des tonnes d'essaies, as tu un peu nettoyé les tmp...?

@+Thierry
 
L

lo

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

re ;)

Pour vois si tu as les droits tu vas dans Control Pannel (Panneau de Configuration) Users Accounts (Comptes Utilisateurs) tu vas être vite fixé !
=> non je n'ai pas les droits administrateurs. Je n'ai pas non plus les logs administrateurs sous la main pour voir si son compte à lui à les droits... compliqué tout ça :))

Mais Là ton dernier truc c'est plus embêtant !! mais depuis le début on a jamais eu ça ???
=>le macro tourne sans problème. Des que je rajoute la question de lancement automatique si ouverture du fichier entre deux dates, elle plante à la fin au moment d'enregistrer le fichier.

C'est sur une autre machine ?
=> non la même. un PIV
As-elle assez de RAM ,
=> 512 PC 2700

n'as tu pas fait des tonnes d'essaies,
=> si justement. Apparement, cela pourrait être lié à qnc.exe utilitaire de lotus notes. j'ai fermé celui et j'ai le droit à la même err, mais j'ai pu tres brievement voir une fenetre dos lors de la tentative de débug avec un rapport sur qnc.exe or apres avoir recherché le fichier j'ai vu une tentative d'accès sur ce dit fichier. Il ne tourne pas en mémoire, donc il est probable qu'excel le solicite ?!

as tu un peu nettoyé les tmp...?
=> je test...
 
L

lo

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Dernières nouvelles ...

Je confirme que le problème vient bien de Lotus Notes! J'ai réussi à trouver un lien entre qnc.exe, et dw4sr.dll avec la macro.

A la toute fin de la macro, allez savoir pourquoi une "requête" est envoyée à l'un de ces deux fichiers (je suis en train de test si le lien ne se ferait pas qu'avec la dll en ce moment même) qui fait tout bonnement planter excel!
Je reviens plus tard après avoir plus d'infos et fait plus de tests.

A toute.


ps: qnc.exe remis à sa place, il semblerait que le pb vienne uniquement de la dll...
 
@

@+Thierry

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

Re,

Je n'ai pas Lotus Note...

Bizarre tout de même... Surtout que c'est rien du tout ce code :

Private Sub Workbook_Open()
Dim SystemTime As Date
Dim UpdateTimeMin As Date
Dim UpdateTimeMax As Date

SystemTime = Time
UpdateTimeMin = "22:00:00"
UpdateTimeMax = "23:59:00"

If SystemTime > UpdateTimeMin And SystemTime < UpdateTimeMax Then
CollectingTheFiles

End If
End Sub

Serait-ce le Time qui fait ce sbinz avec Lotus ?

Huum Huum, fais DEUX tests :

Sub TestTime1()
MsgBox "Au 3em Top il es exactement " & Time
End Sub

Si celui là passe pas essaie celui là :

Sub TestTime2()
Dim SystemTime As Date
Dim UpdateTimeMin As Date
Dim UpdateTimeMax As Date

SystemTime = Format(Now, "HH:MM:SS")
UpdateTimeMin = "16:00:00"
UpdateTimeMax = "16:59:00"

If SystemTime > UpdateTimeMin And SystemTime < UpdateTimeMax Then
MsgBox "Au 3em Top il es exactement " & Time
Else
MsgBox "Ce n'est pas l'heure"
End If

End Sub

Comme ceci si "Now" fonctionne tu sais ce qu'il te reste à faire...

Bon Courage
@+Thierry
 
L

lo

Guest
Re: [MACRO] 6 fichiers indiv => 1 fichier complet

salut salut!

eh bien mes ayeux, quel post ! :)
Je viens de faire plusieurs tests avec now, je n'ai pas (encore) d'erreur. Ce serait donc lié à time ? A voir avec le temps et différent test. Tout cela reste bien étrange en tout cas!

Enfin, le principal est que cela fonctionne, et une nouvelle fois merci pour ton aide très précieuse.

Il n'y a plus qu'à attendre l'acces au plannificateur ...

Bonne après midi :)
 

Discussions similaires

Réponses
19
Affichages
2 K
Réponses
16
Affichages
2 K

Statistiques des forums

Discussions
312 348
Messages
2 087 510
Membres
103 570
dernier inscrit
patrickb83p