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 :

Macro pour changer de liaison [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Points : 102
    Points
    102
    Billets dans le blog
    1
    Par défaut Macro pour changer de liaison
    Bonjour par le menu edition/liaisons/
    on peut modifier la source d'un fichier en liaison...
    comment ecrire une macro afin de repointer toutes les liaisons vers une nouvelle source...

    Merci

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Bonjour,

    En utilisant l'enregistreur de macro tu as ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.ChangeLink Name:="H:\Fichiers Excel\AncienFichier.xls", NewName _
            :="H:\Fichiers Excel\NouveauFichier.xls", Type:=xlExcelLinks
    Il te reste a adapter a ton besoin

  3. #3
    Membre régulier

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Points : 102
    Points
    102
    Billets dans le blog
    1
    Par défaut
    merci j'avais fait le test aussi,

    seulement,
    il faudrait que je recupere dans une cellule le chemin d nouveau fichier a pointer (c'est faisable..) et ensuite l'integrer par un code dans le Newname..
    c'est encore faisable....
    le souci est le name....
    pour que ce soit pris en compte il faut que les chemin soit different...
    et si j'integre un newname similaire au name...
    ca marche plus....

  4. #4
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Et si tu fais le changement de lien uniquement si tes deux fichiers sont Différent???

    Ce que je marque dessous est juste une idée aproximative :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim MonLien1, MonNewLien As String
    MonLien1 = "C:\Test\Fichier.xls"
    MonNewLien = MonLien1
    'Les deux variables sont identique donc l'ajout ne doit pas se faire 
    If MonLien1 <> MonNewLien Then 'Si Mon lien 1 diférent de MonNewLien Alors
         Faire le changement de lien
    End If
    Sinon si tu veux plus d'aide, met un fichier ou redonne un exemple plus concret !!!

  5. #5
    Membre régulier

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Points : 102
    Points
    102
    Billets dans le blog
    1
    Par défaut
    alors l'idée est super claire,

    j'ai un probleme quant à la mise en forme...

    je recupere par macro le chemin dans la cellule A1 de mon feuillet Accueil

    j'ai ensuite entré ton code...
    ecrit comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Macro1()
     
    Dim MonLien1, MonNewLien As String
    MonLien1 = "" & Sheets("ACCUEIL").Range("a1").Value & ""
    MonNewLien = MonLien1
     
    If MonLien1 <> MonNewLien Then
     
        ActiveWorkbook.ChangeLink Name:=MonLien1, NewName:= _
           MonNewLien, Type:=xlExcelLinks
              End If
    End Sub
    en fait j'ai pas d'erreur, mais rien ne se passe, tu arrives a voir pourquoi ..?

  6. #6
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Points : 833
    Points
    833
    Par défaut
    si à la ligne :à la ligne d'après (surtout avec une variable locale), si on a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MonLien1 <> MonNewLien Then
    que se passe-t-il ? RIEN car les valeurs sont id... Iden... Identiques.

    la ligne n'est pas bien placée :et la déclaration de variable ne me plait pas beaucoup mais je ne connais pas le code...

    ESVBA

  7. #7
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2007
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 144
    Points : 337
    Points
    337
    Par défaut
    Attention mon code n'était qu'un simple éxemple purement bidon...

    Il faut que tu précise quel sont les liens à utiliser...
    MonLien1 c'est un lien que tu recupères dans la cellule A1 c'est ça?
    Maintenant tu veux faire quoi avec le contenu de cette cellule ???

    Tu veux remplacer un lien (que tu connais) par celui que tu as récuperé???

    Mais comment determine tu l'autre lien???

  8. #8
    Membre régulier

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Points : 102
    Points
    102
    Billets dans le blog
    1
    Par défaut
    Voila mon code pour mettre a jour mes liaison,
    mon probleme est que je dois mal ecrire l'expression avec mes variables..
    voilà mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Maj()
    Dim ancienlien As String
    Dim newlien As String
        ancienlien = Range("a23").Value
        newlien = Range("a22").Value
    If Range("a23") = "" Then
    Range("a22").Copy Range("a23")
    ElseIf ancienlien <> newlien Then
        ActiveWorkbook.ChangeLink ancienlien, newlien, xlLinkTypeExcelLinks
     
    Else
    Exit Sub
    End If
    End Sub
    dans les cellules des variable je recupere par une macro le chemin de l'adresse du fichier...
    donc en l'entrant dans le code du changelink, il devrait etre pris en compte..
    et ben non, j'ai un debogage sur cette ligne...

    Merci si vous avez une idée.

    Cdt

  9. #9
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Ton probleme provient peut etre des valeurs des liens et non du code

    A22 => H:\Fichiers Excel\Liaison Nouveau.xlsx
    A23 => H:\Fichiers Excel\Liaison Ancien.xlsx


    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
     
    Sub Maj()
    Dim ancienlien As String
    Dim newlien As String
     
    ancienlien = Range("a23").Value
    newlien = Range("a22").Value
     
    If Range("a23") = "" Then
          Range("a22").Copy Range("a23")
    Else
        if ancienlien <> newlien Then
           ActiveWorkbook.ChangeLink ancienlien, newlien, xlLinkTypeExcelLinks
        end if
    End if
     
    End Sub

  10. #10
    Membre régulier

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Points : 102
    Points
    102
    Billets dans le blog
    1
    Par défaut
    la valeur
    a22
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING OFFICE.xls
    et a23
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING SALLE.xls
    les liens et les fichiers existent pourtant...
    je vois pas... c'est curieux??

    et quand je lance une macro en enregistrement,
    et que je fais mais liaisons voila le code que j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     ActiveWorkbook.ChangeLink Name:= _
            "C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING OFFICE.xls" _
            , NewName:= _
            "C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING SALLE.xls" _
            , Type:=xlExcelLinks
    ou bien le contraire.. pour les fichiers, je jongle entre les 2.. pour le moment...

    peut être faut il que je recupere les " dans le code.. car mes variables, n'ont que la valeur... mais je ne peux pas mettre les variables entre guillement "" car elles ne sont pas prise en compte, il faudrait peut etre ajouter avant des" et à la fin... dans une autre cellule...non?

  11. #11
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Il est possible que le problème soit les espaces dans le chemin comme "DECEMBRE 09"
    Dans ce cas, ajoute des crochets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\[Documents and Settings]\Administrateur\Bureau\[DECEMBRE 09]\PLANNING SALLE.xls
    ou comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING SALLE.xls]
    Je n'ai pas testé, a toi de nous dire

  12. #12
    Membre régulier

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Points : 102
    Points
    102
    Billets dans le blog
    1
    Par défaut
    ca y est le probleme etait mon ecriture des valeur reprises pour le nom des mise ajour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ancienlien = "" & Range("a23").Value & ""
    et moi j'ecricais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ancienlien = Range("a23").Value
    pour ceux que ca interesse, voila mon code...

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub DETAILCHEMIN()
     
    Dim ancienlien As String
    Dim newlien As String
    Dim fichier As FileDialog
     
     Set fichier = Application.FileDialog(msoFileDialogFilePicker)
    fichier.Show
     MsgBox fichier.SelectedItems(1)
    Range("a22").Select
        ActiveCell.FormulaR1C1 = fichier.SelectedItems(1)
     
        ancienlien = "" & Range("a23").Value & ""
        newlien = "" & Range("a22").Value & ""
     
    If Range("a23") = "" Then
          Range("a22").Copy Range("a23")
          'MsgBox ("Veuillez a nouveau selectioner votre planning pour terminer les chargements")
     
     
    ElseIf ancienlien <> newlien Then
        ActiveWorkbook.ChangeLink ancienlien, newlien, xlLinkTypeExcelLinks
        Else
        Exit Sub
    End If
        Range("a22").Copy Range("a23")
        End Sub
    merci a vous tous !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. macro pour changer la police d'un footer d'un document word
    Par niamo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/05/2010, 09h39
  2. [AC-2000] macro pour changer le format d'une date
    Par zandeparis dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/11/2009, 13h13
  3. [PPT-2003] Macro pour changer de slides?
    Par bloggy dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 07/04/2009, 14h53
  4. Macro pour changer automatiquement certaines cellules?
    Par Zantetsu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/01/2009, 20h54
  5. Réponses: 1
    Dernier message: 15/09/2006, 17h23

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