Mettre à jour 2 classeurs Excel VBA
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Mettre à jour 2 classeurs Excel VBA



  1. #1
    stiflerbassist

    Mettre à jour 2 classeurs Excel VBA


    ------

    Bonjour,

    J'ai un petit problème qui me tracasse depuis une semaine... n'étant pas énormément doué en VBA (et autres langages ), je fais appel à toute âme charitable ici présente...

    Mon besoin : J'ai un classeur Excel (de plusieurs feuilles) et UNE seule de ces feuilles m'intéresse. On ajoute régulièrement des lignes à cette feuille, ces lignes correspondant à des règles de conception mécaniques, qui sont vérifiables à divers niveaux de développement d'une machine.
    J'ai un deuxième classeur (plusieurs feuilles aussi) qui lui regroupe ces mêmes règles de conception sur diverses feuilles, chaque feuille correspondant à un niveau de développement machine.

    Ce 2ème classeur servira donc de processus de vérification des règles de conception. L'utilisateur verra le même contenu que le premier classeur mais pourra en plus préciser si chaque règle est bien appliquée, ou non appliquée.

    Ce que je désire (pour éviter de rajouter du boulot à tout le monde) c'est que lorsque une ligne est rajoutée dans le premier classeur, elle le soit également dans le 2ème... (par un système de mise à jour je suppose, les deux classeurs n'étant pas toujours ouverts en même temps)

    Quelqu'un aurait une idée de macro VBA pour me permettre de faire cela ??

    Merci d'avance !

    -----

  2. #2
    Dormeur74

    Re : Mettre à jour 2 classeurs Excel VBA

    Vu de haut, le problème me semble assez facile à réaliser en plaçant la macro qui va bien dans le classeur A. Cette macro permettra de mettre à jour la colonne des règles de conception mécaniques du classeur B .

    Vue de plus près, cette stratégie de développement me semble des plus fragiles sous Excel.

    Que se passe-t-il si l'opérateur a besoin de supprimer une ligne du classeur A ? Je vois mal comment on pourrait éviter d'indexer les conceptions mécaniques.

    Modifier le libellé d'une règle de conception dans le classeur A et le répercuter dans le classeur B ne pose aucun problème.

  3. #3
    bzh_nicolas

    Re : Mettre à jour 2 classeurs Excel VBA

    Je suis assez d'accord avec Dormeur74, ce n'est pas difficile à faire mais ça risque de ne pas être "robuste".
    Excel n'est pas doué dès qu'il s'agit de travailler sur plusieurs documents qui doivent être synchronisés. Car il ne dispose pas de fonctions pour ça.

    Une solution simple (mais qui ne correspond pas à ton besoin) serait de faire l'inverse : voir la feuille qui t'intéresse dans le classeur A comme un résumé du classeur B. Elle ne serait pas modifiée manuellement mais une macro rassemblerait les infos du classeur B, ce serait celui-ci qui serait modifié.

  4. #4
    Dormeur74

    Re : Mettre à jour 2 classeurs Excel VBA

    Bon, un homme averti en vaut deux.
    Tu colles le code ci-dessous dans Module1 (macro Maj) :

    Code:
    Option Explicit
    
    Sub Maj()
      Dim Wbk_source, Wbk_cible As Workbook
      Dim X, Nlignes As Integer
      
      ' On calcule le nombre de lignes utilisées dans la colonne A
      Nlignes = Application.WorksheetFunction.CountA(Range("A:A"))
      
      ' On peut mettre le fichier cible n'importe où
      Set Wbk_source = ThisWorkbook
      Set Wbk_cible = Workbooks.Open(Filename:="C:\process\cible.xls")
      
      ' On recopie les cellules
      For X = 1 To Nlignes
        Wbk_cible.Worksheets(1).Cells(X, 1) = Wbk_source.Worksheets(1).Cells(X, 1)
      Next X
    End Sub

  5. A voir en vidéo sur Futura
  6. #5
    stiflerbassist

    Re : Mettre à jour 2 classeurs Excel VBA

    Ah merci mon sauveur !!

    J'essaye ça dès demain et je reviens vers toi pour te faire un petit retour !!

    Merci !!

  7. #6
    stiflerbassist

    Re : Mettre à jour 2 classeurs Excel VBA

    Salut Dormeur !

    Ca marche plutôt pas mal ce code !

    Cependant, j'ai recopié le code dans une macro sur le fichier source. Lorsque j'exécute la macro, ça m'ouvre le fichier cible, qui est effectivement mis à jour. Ca, c'est parfait !

    Cependant, j'aimerais que lorsqu'on ouvre le fichier cible, on puisse mettre à jour... est-ce possible ? si oui, comment ? Après plusieurs essais ce matin, je me suis toujours frotté à de cuisants échecs

    Merci !

  8. #7
    Dormeur74

    Re : Mettre à jour 2 classeurs Excel VBA

    Code:
    Cependant, j'aimerais que lorsqu'on ouvre le fichier cible, on puisse mettre à jour...
    Si j'ai bien compris (je n'en suis pas du tout certain), tu voudrais mettre une macro dans le classeur cible qui te permette d'importer le contenu de la colonne A du classeur source. Si c'est ça, rien de plus facile. Si ce n'est pas ça, c'est que je n'ai rien compris

  9. #8
    stiflerbassist

    Re : Mettre à jour 2 classeurs Excel VBA

    Pour répondre... tu as tout compris

    La solution ? haha

  10. #9
    Dormeur74

    Re : Mettre à jour 2 classeurs Excel VBA

    Je suis certain que si tu regardes de près le code que je t'ai donné, tu vas trouver en moins de deux minutes la solution. A quelques détails près, elle est identique. Allez, à toi de bosser. Propose et je corrige.

  11. #10
    Dormeur74

    Re : Mettre à jour 2 classeurs Excel VBA

    Bon, j'ai l'impression que tu tapes ton code dans la caravane du Tour de France. Et comme elle est au repos aujourd'hui...je te donne la soluce. Comme tu pourras le constater, elle est très proche de ce que je t'avais donné.

    Code:
    Option Explicit
    
    Sub Maj()
      Dim Wbk_source, Wbk_cible As Workbook
      Dim X, Nlignes As Integer
      
      
      ' On peut mettre le fichier cible n'importe où
      Set Wbk_cible = ThisWorkbook
      Set Wbk_source = Workbooks.Open(Filename:="C:\process\source.xls")
      Wbk_source.Activate
      
      ' On calcule le nombre de lignes utilisées dans la colonne A
      Nlignes = Application.WorksheetFunction.CountA(Range("A:A"))
      Wbk_cible.Activate
      
      ' On recopie les cellules
      For X = 1 To Nlignes
        ThisWorkbook.Worksheets(1).Cells(X, 1) = Wbk_source.Worksheets(1).Cells(X, 1)
      Next X
    End Sub
    Maintenant, il y a une solution beaucoup plus élégante et fiable pour synchroniser tes deux classeurs. Pour trouver, il faudra que tu t'investisses dans les méandres du VBA, en particulier sur la technologie des copies spéciales. Cette fois, c'est moi qui passe en roue libre !

  12. #11
    stiflerbassist

    Re : Mettre à jour 2 classeurs Excel VBA

    Ah bah encore une fois merci Dormeur !!

    Je comptais tester aujourd'hui ayant un peu de temps en fin d'après-midi, hier j'étais overbooké !

    Donc je tenterai ta soluce, effectivement peu différente, dans la journée si possible, histoire de te faire un retour

    Mais merci mille fois !

Discussions similaires

  1. VBA Excel
    Par invited09c487e dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 01/04/2011, 14h29
  2. Vba excel
    Par pyrosigma dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 24/06/2010, 11h44
  3. vba excel
    Par amino18 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 20/12/2009, 15h55
  4. Mettre à jour un tableau excel
    Par invitec77c6797 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 13/11/2009, 10h39
  5. excel histoire de classeurs!
    Par sylvainj2 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 03/02/2005, 20h32