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 :

Liaison entre fichier - fichier inexistant


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 17
    Par défaut Liaison entre fichier - fichier inexistant
    Bonjour,

    j'ai besoin d'un coup de main pour produire un fichier Excel faisant référence à d'autres fichiers (5 à 10 par semaine).

    Ce fichier regroupe les données des autres tableaux pour la production de tableau de synthèse et graphs associés. Les fichiers seront produits toutes les semaines

    Je prépare mon fichier global pour fin 2009 et toute l'année 2010.

    PROBLEME : les fichiers n'existent pas encore.

    Du coup, Excel m'ouvre une fenêtre pour valider le nom du fichier source.
    Je n'ai pas envie de passer une heure à cliquer sur "annuler" ou sur la touche 'Echap' pour zapper la liste des fichiers de 2010.

    QUESTION : Lors de la mise à jour des liaisons, y'a-t-il une option quelque part qui permet de ne pas mettre à jour les liaisons lorsque le fichier n'existe pas ?

    Merci d'avance pour vos réponses.

  2. #2
    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
    Bonjour et bienvenue,

    Il y a certainement moyen de contourner ton problème mais ce sera plus simple si tu mettais ton code qu'on voit ce que tu as déjà et qu'on puisse choisir la meilleure option.

    A+

    Edit: Je viens de me rendre compte de ma bêtise , j'imagine en fait que tu n'as pas encore de code...
    Manuellement tu peux définir de ne pas mettre à jour les liens à l'ouverture grâce à Edition/Liaison/Startup Prompt
    Tu peux alors choisir ligne par ligne ceux que tu veux mettre à jour.
    Sinon c'est du VBA...

    Re,
    Et voici le code qui le fera automatique quand placé dans le module Classeur:

    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
    Private Sub Workbook_Open()
    Dim aLinks As Variant
    Dim i As Long
     
        ActiveWorkbook.UpdateLinks = xlUpdateLinksNever 'Mise à jour non automatique
     
    Application.DisplayAlerts = False 'Annule les messages d'alerte, donc fenêtre pour changer lien => error si lien impossible
    aLinks = ActiveWorkbook.LinkSources 'Affecte à la variable les sources de liaisons
    If Not IsEmpty(aLinks) Then 'Si pas vide => vérification si liaisons
        For i = 1 To UBound(aLinks) 'Boucle sur toutes les liaisons
            On Error Resume Next 'Passe au lien suivant si liaison pas possible (error)
            ActiveWorkbook.UpdateLink Name:=aLinks(i) 'Met à jour la liaison
        Next i 'Passe à la liaison suivante
    End If
    Application.DisplayAlerts = True 'Rétabli les messages d'alerte
     
    End Sub
    N'hésites pas si quelque chose n'est pas clair.

    A+

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 17
    Par défaut Merci...
    Merci pour les réponses.

    Je vais essayer de passer par la première solution (menu Edition) parce que je voudrais éviter passer par du VBA (ca me gonfle un peu de faire du code).

    Sinon je vais essayer de trouver une autre solution (créer les fichiers à vide par exemple)

  4. #4
    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
    Je vais essayer de passer par la première solution (menu Edition)
    Attention, au fur et à mesure ça te prendra du temps, tu devras repasser sur chaque ligne de liaison à mettre à jour



    parce que je voudrais éviter passer par du VBA (ca me gonfle un peu de faire du code).
    Je veux pas me vanter mais à part copier le code dans ton module de classeur tu n'as plus rien à faire



    Sinon je vais essayer de trouver une autre solution (créer les fichiers à vide par exemple)
    C'est en effet une autre solution, tout comme tu peux copier au fure et à mesure tes formules avec liaison et changer la source avec le 'remplacer' Ctrl+H (mais il faut pas se planter dans le nom de la nouvelle source)

    A+

Discussions similaires

  1. liaison entre 2 fichier xml
    Par bobby51 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 15/05/2008, 09h20
  2. Mise à jour conditionnelle de liaisons entre 3 fichiers
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 68
    Dernier message: 24/09/2007, 13h22
  3. [WD11] Liaison entre deux fichiers
    Par skulled dans le forum WinDev
    Réponses: 9
    Dernier message: 27/08/2007, 08h40
  4. Réponses: 1
    Dernier message: 20/08/2007, 11h56
  5. Réponses: 1
    Dernier message: 02/12/2005, 14h07

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