1 macro sur Excel 1997

Résolu
DBD -  
 DBD -
Bonjour,

J'aurais besoin d'une macro pour Excel 1997-2003 pour le suivi des mise à jour de 20 fichiers Excel.
Il faudrait qu'à chaque fois que je ferme un des 20 classeurs qui se trouve sur le réseau elle m'enregistre dans un autre classeur Excel qui s'appelle "Gestion des mises à jour TBD_CDC_V1" sur la feuille "Mises à jour TBD_CDC_V1"
le nom du classeur, le jour, le mois l'année, et l'heure de la dernière mise à jour .
M'expliquer si possible où placer cette macro dans VBA pour que ça fonctionne.

Merci beaucoup et bon dimanche à tous.
Cordialement

DBD.
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,

    Ci joint maquette:
    https://www.cjoint.com/?lEm5oBMES7

    les macros seront à incorporer dans les 20 classeurs

    n'hésites pas pour explications supp.
    1
    1. DBD
       
      Merci beaucoup Michel,

      Je vais essayer de mettre tout ça en place demain au boulot et je te tiendrai au courant.
      Si j'ai bien compris, j'insère dans un module VBA pour chaque classeur le code que tu m'as envoyé.
      La macro va t'elle se lancer toute seule ou il faut que je crée un bouton et que je l'exécute?
      Merci bcp.
      @+
      0
    2. DBD
       
      Bonsoir Michel,

      J'ai bien respecté les consignes que tu m'as données et j'ai eu 3 messages d'erreurs en voulant exécuter la macro.
      Je t'ai fait des impressions écran que j'ai collées sur la Feuil2 pour que tu jettes un oeil et me conseiller.
      Désolé pour le dérangement.

      http://www.cijoint.fr/cjlink.php?file=cj200812/cij2uy0Ps8.xls


      Merci Bcp.
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > DBD
         
        Bonsoir,

        Mais non, tu n'as pas DU TOUT lu et suivi ce que je t'avais marqué

        1/ ce n'est une image dans la PJ mais le classeur "mise_a_jour" !!!

        2/ Je t'ai écrit ceci hier post n° 5 ET EN GRAS

        Ensuite je colle la seconde macro dans le classeur qui doit recevoir toutes les informations et qui s'appelle : "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"
        NON
        C'est dans chaque classeur source comme ce que je t'ai transmis


        ET je vois dans le classeur mise à jour cette macro, en plus dans le module feuil1 voir post3:
        2/ la macro "cafter"
        que tu trouves dans module1


        dans class_1.xls il ya les macros à leur place où elles devront être dans les 20 Classeurs source: tu copies donc ces macros à partir des macros et non à partir des zones de texte

        désespérant...
        J"abandonne

        Ciao
        0
      2. DBD > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonsoir Michel,

        Avant tout mille excuses pour hier !
        J’ai vu que tu étais découragé (pour ne pas employer une autre expression) quand tu as vu que je n’avais rien compris au travail que tu m’as envoyé.
        Je tiens à te rassurer, tout s’est bien passé aujourd’hui et je suis content d’y être parvenu.
        C’est certainement grâce au coup de pied dans le… que tu m’as donné hier. - )))))))))
        J’ai pu mettre en place les fichiers et l’enregistrement des mises à jour se fait très bien.
        Par contre, je voudrais te demander une faveur pour que la macro réponde bien à mes besoins.
        Je me suis rendu compte qu’elle me renseignait le fichier « Mise _à_jour_TBD_CDC.xls » même quand on consultait un fichier sans y avoir fait d’enregistrement.
        Or ce que je voudrais savoir, c’est quand les fichiers ont été modifiés puis enregistrés.
        Est-il possible de dissocier les 2 ?
        C’est ma dernière requête.

        Salutations très cordiale.
        Dan
        0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    re,

    Tu as 2 macros à insérer dans les classeurs sources:

    1/ la macro "Workbook before close"
    que tu peux trouver en faisant un clic droit sur l'onglet et que tu copies colles dans tes autres classeurs source dans le moduke "thisworkbook"

    2/ la macro "cafter"
    que tu trouves dans module1

    Pour créer un module, dans VBE (alt+F11 pour accèder à VBE) menu insertion -module

    l'astuce est de copier ces 2 macros sur une feuille Word et de coller classeur source par classeur source

    n'oublie pas de mettre les classeurs en macro-sécurité moyenne ou basse

    Tu peux faire un essai maintenant avec ce que je t'ai transmis "pour piger"; l'inscription dans ton classeur "mise_a_jour_etc" est automatique dès que tu fermes un classeur source ("before close")
    0
    1. DBD
       
      Bonsoir Michel,

      Je récapépette:

      1° Je place la macro "Cafter":

      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      source = ThisWorkbook.Name
      Cafter
      End Sub

      dans tous mes classeurs ( les 20) à l'intérieur du répertoire "ThisWorkbook" de VBA.

      2° Ensuite je colle la seconde macro dans le classeur qui doit recevoir toutes les informations et qui s'appelle : "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"

      Const classeur As String = "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"
      Const chemin As String = "D:\documents\" ' a adapter à l'emplacement de "classeur"
      Public source As String
      Sub cafter()
      Dim conn As Object
      Dim rqt As Object
      Dim moment As Date
      Set conn = CreateObject("ADODB.Connection")
      conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
      "Data Source=" & chemin & classeur & ";Extended Properties=""Excel 8.0;"""
      moment = Now()
      source = Left(source, Len(source) - 4)
      ' travail demandé: insère dans les champs de "db_taupe" (cellules nommées) le nom du classeur et le moment
      texte_SQL = "INSERT INTO db_taupe (nom_classeur,date_utilisation) VALUES ('" & (source) & "','" & (moment) & "' )"
      ' éxécute le travail demandé
      Set rqt = CreateObject("ADODB.Recordset")
      Set rqt = conn.Execute(texte_SQL)
      rqt.Close
      Set rqt = Nothing
      conn.Close
      Set conn = Nothing
      End Sub

      3° Peux-tu m'expliquer dans quel classeur je mets "Insertion Nom définir" et les plages?

      Désolé
      Merci beaucoup
      @+
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    re,

    dans le classeur "mise à jour" d'ailleurs, tu trouves cà dans la feuil1 où je t'ai expliqué... hé,oui!

    Ensuite je colle la seconde macro dans le classeur qui doit recevoir toutes les informations et qui s'appelle : "Gestion_des_ mises_ à_ jour_ TBD_CDC_V1.xls"

    NON
    C'est dans chaque classeur source comme ce que je t'ai transmis
    0
    1. DBD
       
      Bonsoir Michel,

      Merci pour ton aide précieuse.
      Demain au taf, j'orchestre tout ça!
      Bonne soirée.
      Cordialement
      Dan.
      0