IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-03] Macro auto_open + Mise à jour


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 14
    Par défaut [E-03] Macro auto_open + Mise à jour
    Bonjour à tous,

    Je viens vous demander de l'aide sur Excel 03.
    Je cherche à faire une macro auto_open sur un classeur nommé "classeur1" afin qu'il se mette à jour à chaque ouverture avec les données se situant sur un autre classeur nommé "classeur2".
    Si je ne suis pas clair je peux réessayer de m'expliquer lol.
    Je précise que je ne suis pas très expérimenté dans ce domaine, et que je viens vous demander de l'aide qu'après avoir fait des recherches... infructueuses certe mais j'ai cherché quand même !

    Pouvez-vous me donner un exemple de code ou une marche à suivre ?

    Je vous remercie d'avance.

  2. #2
    Membre éclairé Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Par défaut
    Bonsoir,

    Je travaille toujours sous 2000, mais le code n'a pas du évoluer beaucoup.

    Voilà ce que j'utilise en cas de besoin.
    Dans l'exemple, j'ai créé une boucle, mais on peut très bien écrire toutes les lignes visant à récupérer les données si une boucle n'est pas utilisable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub Workbook_Open()
        'selection de la feuille réceptrice
            ThisWorkbook.Sheets("feuil1").Select
            'recupère la derniere ligne pour la boucle
            vDerligne = Cells(65536, 1).End(xlUp).Row
         'ouvre le fichier alimentant les données
        Workbooks.Open ThisWorkbook.Path & "\classeur2.xls"
        'début de la boucle
        For X = 1 To vDerligne
            'met à jour les données
            ThisWorkbook.Sheets("feuil1").Cells(X, 1).Value = Workbooks("classeur2.xls").Sheets("feuil1").Cells(X, 1).Value
        Next
        'ferme le fichier
        Workbooks("classeur2.xls").Close
        'sauve les mises à jour
        ThisWorkbook.Save
     
    End Sub
    En espérant avoir répondu à ta sollicitation.

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 14
    Par défaut
    Bonjour Marc,

    Merci de ton aide.
    J'ai adapté ton code en modifiant le nom de ma feuil1 et de mon classeur, et après test ce n'est pas encore ce que je recherche.
    Je m'explique: j'aimerais que la macro, à l'ouverture de classeur1.xls, ouvre classeur2.xls, que la mise à jour se fasse (http://imageshack-france.com/out.php/i290880_MAJ.JPG) afin que classeur1.xls soit à jour pour être consultable.
    Pour être plus précis classeur2.xls est un programme du personnel comprenant plusieurs feuilles et classeur1.xls est un planning qui reprend les données du programme du personnel et qui est consultable mais non modifiable.
    Aujourd'hui classeur1.xls est inexploitable car une modification de liaisons est demandée à chaque ouverture (http://imageshack-france.com/out.php...erLiaisons.JPG) et comme l'accès à classeur2.xls n'est pas et ne doit pas être autorisé à l'utilisateur du classeur1.xls...
    Je reconnais que c'est un peu compliqué, mais c'est bien pour ça que je vous demande de l'aide

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour, si tu veux qu'à l'ouverture de ton classeur1, ce classeur ouvre le classeur2 et que les macro de mise à jour du classeur2 soient lancées, tu peux toujours utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open("Classeur2").RunAutoMacros xlAutoOpen
    cordialement

    EDIT J'ai lu un peu vite, pour éviter la demande de mise à jour des liaisons, tu peux faire
    Dans le menu Outils, cliquez sur Options, puis sur l'onglet Modification.

    2. Désactivez la case à cocher Confirmation de la mise à jour automatique des liens. Si cette case à cocher est désactivée, les liaisons sont automatiquement mises à jour, et aucun message d'invite ne s'affiche.

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 14
    Par défaut
    Bonjour et merci Fred

    J'ai désactivé la case 'Confirmation de la mise à jour automatique des liens' et je dois dire que ça m'enlève une fière chandelle du pied !
    Cependant j'ai un soucis avec le code que tu m'as conseillé, un message d'erreur survient lors de son exécution :

    Erreur d'exécution '9':
    L'indice n'appartient pas à la sélection.

    De quoi s'agit-il ?

    Voici le code que j'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
     
    Workbooks.Open("C:\Documents and Settings\Raizes\Bureau\Test\PersonnelDispo.xls").RunAutoMacros xlAutoOpen
    Workbooks("C:\Documents and Settings\Raizes\Bureau\Test\PersonnelDispo.xls").Close
    ThisWorkbook.Save
     
    End Sub
    Merci beaucoup de votre aide.

  6. #6
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    re

    tu peux regarder aussi ici pour les UpdateLinks

    Ton classeur "C:\Documents and Settings\Raizes\Bureau\Test\PersonnelDispo.xls" ne doit pas être ouvert.

    Cordialement

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 14
    Par défaut
    C'est bon !

    La solution était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Workbook_Open()
     
    Workbooks.Open("C:\Documents and Settings\Raizes\Bureau\Test\PersonnelDispo.xls").RunAutoMacros xlAutoOpen
    Workbooks("PersonnelDispo.xls").Save
    Workbooks("PersonnelDispo.xls").Close
     
    End Sub
    Une fois qu'on a trouvé on trouve ça tout bête, mais sans votre aide je n'y serais pas arrivé.
    Merci à tous et bonne continuation.

Discussions similaires

  1. Macro de Mise à jour ne répercute pas les données
    Par jarault dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/05/2008, 16h50
  2. Réponses: 3
    Dernier message: 06/12/2007, 11h09
  3. Lancement d'une macro après mise à jour d'une cellule
    Par Mukade dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/10/2007, 11h52
  4. Réponses: 8
    Dernier message: 09/01/2007, 16h30
  5. [VBA-Excel] Macro de mise à jour de Report
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 13/07/2006, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo