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 :

Mettre à jour différentes feuilles automatiquement.


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut Mettre à jour différentes feuilles automatiquement.
    Bonjour à tous,

    J'ai un fichier Excel : test.xls qui est composé d'au moins 30 feuilles (feuille1 ... feuille30). Dans ces feuilles, il y a un tableau qui renvoit à une table unique (table1 ... table30) conserver dans un répertoire. Ces données doivent être MAJ tous les mois.

    Malheureusement je fais la MAJ moi-même et c'est très long car quand j'arrive sur Excel :

    - Mettre à jour les liaisons
    - Modifier les liaisons

    Quand j'arrive sur "modifier les liaisons" il y a toutes les tables sources d'afficher donc je dois toutes les sélectionner pour les ouvrir (donc ça m'ouvre une trentaine de fichier excel ) et ainsi faire la MAJ.

    Est-ce qu'il ya une possibilité de faire cette démarche automatiquement soit sur Excel sur VBA?

    Merci à vous.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    En VBA c'est possible ! Je te propose d'utiliser l'enregistreur de macros afin de le faire pour une des feuilles. Une fois cela fait, tu adaptes le code obtenu afin de le faire pour toutes les feuilles avec une petite boucle maison.

    Cela te convient-il ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut
    En fait j'avais penser à faire une micro mais ça me convient, car j'ai pas trop envie de répeter l'ouverture de mes 30 fichiers Excel, tu vois ce que je veux dire?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Ben oui je vois ce que tu veux dire. C'est sûr que le but du VBA c'est d'éviter de faire des tâches longues et/ou répétitives manuellement. D'ailleurs, ce que je te propose, c'est bien de faire une macro.

    Par l'enregistreur de macros, tu vas faire une macro en VBA pour une seule de tes feuilles. Une fois cela fait, il faudra l'adapter pour que cela le fasse sur toutes tes feuilles.

    Ce que je te propose est donc d'ouvrir l'enregistreur dans Outils/Macro/Nouvelle Macro. Fais ce que tu souhaites pour l'une de tes feuilles manuellement puis arrête l'enregistreur. Une fois cela fait, ALT + F11 et copie le code obtenu ici : je t'aiderai alors à l'adapter pour toutes tes feuilles histoire d'automatiser le processus.

    En fait j'avais penser à faire une micro mais ça me convient
    C'est la même chose VBA, macros et ce que je t'ai proposé

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut
    Voici le code une feuille avec une table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub MAJ()
    '
    ' MAJ Macro
    ' 
    '
     
    '
        Workbooks.Open Filename:= _
            "C:\test1.xls"
        Windows("Tableau.xls").Activate
    End Sub
    Il faut que je rentre une par une les différentes tables?
    Merci à toi

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Oula, c'est tout ?

    Je ne comprends pas bien, quel est ton fichier de base, celui où doit être ta macro ? Quel est son nom ? Après avoir lancé l'enregistreur, as-tu mis à jour et modifié les liaisons pour une feuille ? Ca n'a pas l'air d'être le cas vu le code. Fais TOUT ce que tu dois faire pour l'une des feuilles.

  7. #7
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut Dead78, Re Paulom,
    Dead78 c'est pas que je veux te court-circuiter mais on avait commencé la discussion sur le forum Excel, comme ça me tracassait j'ai un peu cherché et donc je pense avoir une solution et je voudrais pas crever avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub OuvreTousXLS()
     
    Const Rep = "C:\Documents\" ' le répertoire contenant les fichiers..
    Dim TheFile As String
     
    TheFile = Dir(Rep & "*.xls")   'Listing des fichier Excel...
    While TheFile <> "" 'Tant que non vide
       Workbooks.Open (Rep & TheFile) 'Ouverture du fichier
       ActiveWorkbook.UpdateLink name:=ActiveWorkbook.LinkSources 'Mise à jour du lien
       TheFile = Dir 'Fichier suivant
    Wend
    End Sub
    Et pour fermer les fichiers...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub FermeFichiers()
     
    Dim Wkb As Workbook
     
    MyFile = "TonFichier.xls" 'Indique le nom du fichier qui doit rester ouvert
     
    For Each Wkb In Application.Workbooks 'Boucle pour chaque fichier
        If Wkb.name <> MyFile Then Wkb.Close 'Vérifie si différent de celui à garder ouvert
     
    Next
    End Sub

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut Fvandermeulen !

    Tu ne me court-circuites pas du tout Je voulais justement arriver à quelque chose du style. En tout cas, j'ai plus rien à faire, c'est ce qu'il fallait faire

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut
    Dans OuvreTousXLS je dois modifier uniquement le répertoire contenant les fichiers, c'est ça?
    Et dans FermeFichiers, je dois juste mon fichier de base ?

    C'est ce que j'ai fait et j'ai enregistrer le tout et j'ai toujours ces fameuses alertes dès que j'ouvre mon fichier de base.

    J'aimerais que ce code arrive avant les alertes...

    En tout cas merci beaucoup pour vos réponses.

  10. #10
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Si tu as toujours les alertes essaies alors en mettant au début du code, par exemple en dessous de 'Dim TheFile...'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = False
    Et avant ton End sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = True
    Dis moi si ça passe, par contre il faut être bien conscient que c'est une solution de conternement, on n'a toujours pas l'origine du problème.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut
    Désolé de répondre si tard, mais en fait j'aimerais ne pas utiliser VBA car franchement je n'y comprend pas grand chose je pensais que mon erreur allait se résoudre via excel seuelement.

    Merci à vous.

  12. #12
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Hmmm, si tu veux une solution qui n'utilise pas le VBA mais uniquement Excel il faudrait peut être aller sur le forum Excel et non pas sur le sous forum dédier au VBA.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 165
    Par défaut
    Bonjour à tous,

    En fait je pense que je vais me pencher sur le VBA^^

    Sur ton code Fvandermeulen, malheureusement la maj ne se fait pas, pourtant il y a aucune erreur dans le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub OuvreTousXLS()
     
    Const Rep = "C:\sortie" ' le répertoire contenant les fichiers..
    Dim TheFile As String
     
    TheFile = Dir(Rep & "*.xls")   'Listing des fichier Excel...
    While TheFile <> "" 'Tant que non vide
       Workbooks.Open (Rep & TheFile) 'Ouverture du fichier
       ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources 'Mise à jour du lien
       TheFile = Dir 'Fichier suivant
    Wend
    End Sub
    Quelqu'un a une solution?


    Merci à vous

  14. #14
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    Je pense qu'il te manque un "\" dans la définition par constante de ta variable Rep.

    Essaies le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub OuvreTousXLS()
     
    Const Rep = "C:\sortie\" ' le répertoire contenant les fichiers..
    Dim TheFile As String
     
    TheFile = Dir(Rep & "*.xls")   'Listing des fichier Excel...
    While TheFile <> "" 'Tant que non vide
       Workbooks.Open (Rep & TheFile) 'Ouverture du fichier
       ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources 'Mise à jour du lien
       TheFile = Dir 'Fichier suivant
    Wend
    End Sub

Discussions similaires

  1. Réponses: 12
    Dernier message: 22/01/2015, 16h49
  2. [XL-2007] Mettre à jour une feuille de calcul à partir d'une autre.
    Par ziad.shady dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/01/2010, 18h24
  3. [XL-2002] Mettre à jour différentes feuilles automatiquement.
    Par PAULOM dans le forum Excel
    Réponses: 9
    Dernier message: 09/06/2009, 14h23
  4. Réponses: 2
    Dernier message: 08/04/2008, 18h47
  5. mettre à jour des plugins automatiquement
    Par kurkLord dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 17/08/2006, 13h26

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