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 :

Erreur dans un ChangeLink


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut Erreur dans un ChangeLink
    Bonjour à tous,

    J'ai un petit soucis de ChangeLink, j'essaye de faire une macro qui remplace un lien dans mon classeur, on identifie le lien en question par sa date, on demande a l'utilisateur la date à changer et la nouvelle date. Début 2017 le nom du fichier (mais pas sa structure) a changé donc suivant la date qu'on demande le chemin est différent, mais le chemin fonctionne puisque j'arrive a ouvrir le fichier de données.
    Par contre quand j'arrive au ChangeLink, il me renvoie une erreur 1004 "une formule contient une/des références invalides.
    Je n'arrive pas a comprendre pourquoi.

    Voici le code que j'ai obtenu via l'enregistreur de macro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ActiveWorkbook.ChangeLink Name:= _
            "X:\EXPOSURE\2017\2017_05\201705_ICP_Exposure_by_contract_data.xlsx", NewName _
            :="X:\EXPOSURE\2016\201612_Exposure consummer credit by contract.xls", Type _
            :=xlExcelLinks
    Et le code que j'ai écrit:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    Sub MaJ_Tab()
    Application.ScreenUpdating = False
     
    Dim crit As Boolean, datea As String, daten As String
    Dim liens(4) As String, an As String, mois As String, chem1 As String, chem2 As String
    Dim i As Long, j As Long
     
    i = 1
    For Each link In ActiveWorkbook.LinkSources
    Workbooks.Open Filename:=link, UpdateLinks:=False
    liens(i) = ActiveWorkbook.Name
    i = i + 1
    Next link
     
    crit = False
    Do While Not (crit)
    datea = InputBox("Quel est la date a modifier? (format YYYYMM)")
    If Len(datea) = 6 And IsNumeric(datea) Then crit = True
    Loop
    crit = False
    Do While Not (crit)
    daten = InputBox("Quel est la  nouvelle date? (format YYYYMM)")
    If Len(daten) = 6 And IsNumeric(daten) Then crit = True
    Loop
    an = Left(daten, 4)
    mois = Right(daten, 2)
    an_a = Left(datea, 4)
    mois_a = Right(datea, 2)
     
    If an < 2017 Then
        chem1 = "X:\EXPOSURE\" & an & "\"
        chem2 = an & mois & "_Exposure consummer credit by contract.xls"
    Else
        chem1 = "X:\EXPOSURE\" & an & "\" & an & "_" & mois & "\"
        chem2 = an & mois & "_ICP_Exposure_by_contract_data.xlsx"
    End If
    If an_a < 2017 Then
        chem1a = "X:\EXPOSURE\" & an_a & "\"
        chem2a = an_a & mois_a & "_Exposure consummer credit by contract.xls"
    Else
        chem1a = "X:\EXPOSURE\" & an_a & "\" & an_a & "_" & mois_a & "\"
        chem2a = an_a & mois_a & "_ICP_Exposure_by_contract_data.xlsx"
    End If
    Workbooks.Open chem1 & chem2
    Workbooks.Open chem1a & chem2a
    ThisWorkbook.ChangeLink Name:=chem1a & chem2a, NewName:=chem1 & chem2, Type:=xlExcelLinks
     
    'ThisWorkbook.Sheets("graph").Range("A1:E30").Replace What:=datea, Replacement:=daten, LookAt:=xlPart, _
    '        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    '        ReplaceFormat:=False
    ThisWorkbook.Sheets("graph").Range("A1:E30").Replace What:=Right(datea, 2) & "/" & Left(datea, 4), Replacement:=Right(daten, 2) & "/" & Left(daten, 4), _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    ThisWorkbook.Save
    For j = i - 1 To 1 Step -1
    Workbooks(liens(j)).Close False
    Next j
    Workbooks(chem2).Close False
    Application.ScreenUpdating = True
    End Sub
    Merci d'avance.

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    avant toutes choses, a tu testé la validité du résultat ?
    par exemple ".xlsx" et "xls"
    et aussi les espaces dans les nom et chemin..."X: \"

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par mjpmjp Voir le message
    bonjour,

    avant toutes choses, a tu testé la validité du résultat ?
    par exemple ".xlsx" et "xls"
    et aussi les espaces dans les nom et chemin..."X: \"

    @+JP
    Bonjour, oui les chemin sont bons j'ai même mis des workbooks.open pour vérifier et mes deux fichiers s'ouvrent bien.
    D'après ce que j'ai trouvé sur le net, le problème viendrais du fait qu'on ne puisse pas spécifier la feuille dans le changelink

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    si ce lien peut aider : Quelle différence entre ActiveWorkbook et ThisWorkbook ?

    et ce lien : MSDN
    indique : Cet exemple suppose qu'au moins une formule existe dans le classeur actif lié à une autre source Excel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveWorkbook.ChangeLink "c:\excel\book1.xls", "c:\excel\book2.xls", xlExcelLinks
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

Discussions similaires

  1. [Tomcat] configuration d'une page d'erreur dans web.xml
    Par Super Castor dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 08/04/2009, 15h58
  2. [Thread] Erreur dans une classe interne
    Par totof2308 dans le forum Général Java
    Réponses: 5
    Dernier message: 03/06/2004, 08h15
  3. [Lien]erreur dans mon programme python
    Par durnambule dans le forum Général Python
    Réponses: 11
    Dernier message: 29/01/2004, 14h59
  4. [Erreur dans la lib...]
    Par Gonath dans le forum OpenGL
    Réponses: 3
    Dernier message: 22/12/2003, 09h02
  5. Erreur dans l'utilisation de SWAP
    Par mire dans le forum Langage
    Réponses: 12
    Dernier message: 15/03/2003, 21h39

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