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

VBA Discussion :

[VBA]Mise à jour de lien par vba problème


Sujet :

VBA

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut [VBA]Mise à jour de lien par vba problème
    Bonjour,

    J'ai des liens sur 8000 classeurs (voir peut-être même plus) que je dois modifier.
    Si je modifie directement dans Excel, pas de problème mais si je le fais par VBA, il ne veut tout simplement pas le faire.

    Quelqu'un à-t-il une idée ?

    Voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    100100: 'MODIFICATIONS DU RESULTAT DES LIENS
     
        For Each Cellu In Range("b8:u8")
            Cellu.Value = _
            "=SI(B6="";"";INDEX('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B:D;EQUIV(B7;'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!D:D;);EQUIV('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B2;'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B2:D2)))"
            '
        Next Cellu

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Voilà, j'ai des améliorations, mais ça ne marche toujours pas.

    Voici la ligne vba
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Cellu.Value = _
                "=si(R[-2]C="""","""",INDEX('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B:D,EQUIV(R[-1]C,'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!D:D,),EQUIV('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B2,'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B2:D2)))"
    en fait, lorsque je lance la macro, celle ci me rajoute quelquesAPOSTROPHE.

    Voici le résultat sur excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(B6="";"";INDEX('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B:D;EQUIV(B7;'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!D:D;);EQUIV('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!'B2';'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!'B2':'D2')))

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Ben voilà, mon problème d'apostrophe est bon, il suffit de mettre les lien en r1c1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=si(R[-2]C="""","""",INDEX('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!r1c2:r10000c4,EQUIV(R[-1]C,'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!r1c4:r10000c4,),EQUIV('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!r2c2,'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!r2c2:r2c4)))"
    Mais maintenant, la case m'affiche "#nom?". le lien ne se fait pas.
    Si je rentre dans la cellule, que je fais simplement ENTER, ça marche.

    Comment faire cela en VBA.

    Si j'enregistre une macro pour faire cela, j'ai une erreur a l'enregistrement de la macro "IMPOSSIBLE D'ENREGISTRER"

  4. #4
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Bonjour
    as tu regardé du coté de formula=
    ou peut être :bbblllaaabla +chr$(13)
    Daranc

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Daranc
    Bonjour
    as tu regardé du coté de formula=
    ou peut être :bbblllaaabla +chr$(13)
    Daranc
    Hello,

    Que je mette VALUE ou FORMULA, j'ai toujours le même problèmes.
    Par contre, j'ai pas essayé avec le +chr$(13)

    J'ai essayé avec "Application.SendKeys "maformule" + "{enter}"

    Mais là, ça marche une fois et après, ça gicle à tous les coups sur la ligne A7, je comprend pas pourquoi.

    Bon, la je suis en vacance jusqu'à mardi, donc je verrai ça mardi prochain

    Merci

  6. #6
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 365
    Points
    1 365
    Par défaut
    Petite question: qu'est-ce que tu appelles un "lien" ? Un lien cliquable ?
    Si c'est le cas, voici comment je fais, sinon sorry pour le bourdonnement
    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
    Public Function Put_Link_Single(rge As Range, lien as String) As Boolean
        Dim ad As String
     
        Put_Link_Single = False
     
        ' Vérifie que le lien existe
        If (FileSystObj Is Nothing) Then Set FileSystObj = CreateObject("Scripting.FileSystemObject")
     
        On Error GoTo NoFileError
        FileSystObj.GetFile (lien)
     
        On Error GoTo PutLinkError
        ' Crée le lien
        rge.Worksheet.Hyperlinks.Add _
                Anchor:=rge, _
                Address:=lien
        Put_Link_Single = True
        Exit Function
     
    PutLinkError:
        Exit Function
     
    NoFileError:
            MsgBox "Lien invalide", vbExclamation, MsgTitle
    End Function

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par lvr
    Petite question: qu'est-ce que tu appelles un "lien" ? Un lien cliquable ?
    Non, c'est juste un lien de mise à jour automatique.
    J'ai une base de donné d'outils dans un classeur excel, et, sur 8000 autres classeurs lorsque je rentre les N°, ça me met automatiquement toute les descriptions.

  8. #8
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Tu veux dire une liaison ?
    tes 8000 classeurs sont liés à un classeur référent . Normalement la mise à jour de ces classeurs se fait lors de leur ouverture
    " le classeur que vous avez ouvert comporte des liaisons avec un autre classeur
    voulez vous mettre à jour ces liaisons"

    quel est le probleme
    Daranc

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Oui, une liaison, et justement, le classeur ne se met pas à jour,

    J'ai désespèrement le message "#nom?" qui reste dans ma cellule.

    Le simple fait de faire [F2] et [enter] me valide le lien, mais je n'arrive pas à le faire par vba

  10. #10
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 365
    Points
    1 365
    Par défaut
    Tu peux décrire ce que tu fais entre le [F2] et le [enter] ?
    Quelle était la formule de ta cellule avant le [F2] et quelle est-elle après le [enter] ?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par lvr
    Tu peux décrire ce que tu fais entre le [F2] et le [enter] ?
    Quelle était la formule de ta cellule avant le [F2] et quelle est-elle après le [enter] ?
    Je ne fais rien entre le [F2] et le [enter], [F2]=dblclick dans la case pour la modifier

    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(B6="";"";INDEX('[Base outils Fred.xls]TOTAL'!$B$1:$D$10000;EQUIV(B7;'[Base outils Fred.xls]TOTAL'!$D$1:$D$10000;);EQUIV('[Base outils Fred.xls]TOTAL'!$B$2;'[Base outils Fred.xls]TOTAL'!$B$2:$D$2)))
    après F2 et enter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(B6="";"";INDEX('[Base outils Fred.xls]TOTAL'!$B$1:$D$10000;EQUIV(B7;'[Base outils Fred.xls]TOTAL'!$D$1:$D$10000;);EQUIV('[Base outils Fred.xls]TOTAL'!$B$2;'[Base outils Fred.xls]TOTAL'!$B$2:$D$2)))
    c'est rigoureusement identique.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    en fait, ça marche MAIS.....seulement si il n'y a plus rien dérière la fin de ma macro.
    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
    100090: 'MODIFICATIONS DES LIENS DE PAGE
     
    '  =SI(OU((GAUCHE(B6;3)="OUT");(GAUCHE(B6;3)="PRO");(GAUCHE(B6;3)="MEC"));(TEXTE(B6;"0000"));("OUT"&TEXTE(B6;"0000")))
        Range("B7").Select
        For Each cell In Range("b7:u7")
            cell.Value = _
                "=IF(OR((LEFT(R[-1]C,3)=""OUT""),(LEFT(R[-1]C,3)=""PRO""),(LEFT(R[-1]C,3)=""MEC"")),(TEXT(R[-1]C,""0000"")),(""OUT""&TEXT(R[-1]C,""0000"")))"
        Next cell
     
    100100: 'MODIFICATIONS DU RESULTAT DES LIENS
     
    '=SI(B6="";"";INDEX('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B:D;EQUIV(B7;'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!D:D;);EQUIV('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B2;'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!B2:D2)))
        Range("c8").Activate
        For Each cellu In Range("b8:U8")
            cellu.FormulaR1C1 = _
                "=si(R[-2]C="""","""",INDEX('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!r1c2:r10000c4,EQUIV(R[-1]C,'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!r1c4:r10000c4,),EQUIV('O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!r2c2,'O:\o\pd\pre\[Base outils Fred.xls]TOTAL'!r2c2:r2c4)))"
        Next cellu
     
    100110: 'VALIDATION DES LIENS
     
        Range("B8").Activate
        For Each cell In Range("B8:U8")
                Application.SendKeys ("{F2}"), False
                Application.SendKeys ("{TAB}"), False
        Next cell
     
    100120:

    si après la ligne 100120 je fais quoi que ce soit, ça ne marche plus

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Il faudrait peut-être que je trouve un moyen de forcer l'execution de ma macro dans l'ordre définie. Et que, tant qu'elle n'a pas finie l'opération en cours elle ne passe pas au suivant.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Je peux bien faire la fin de ma macro en tout dernier, mais il me faut de toute façon verrouiller mes cellules après. Donc le problème reste de toute façon

  15. #15
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Et si tu ajoutais en fin de macro:
    Calculate
    Daranc

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Daranc
    Et si tu ajoutais en fin de macro:
    Calculate
    Marche pas

    Je désespère là.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    En fait, il faudrait que je puisse stopper la macro tant que la partie ci-dessous n'est pas terminé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Range("B8").Activate
            For Each valide In Range("B8:U8")
                Application.SendKeys ("{F2}"), True
                Application.SendKeys ("{TAB}"), True
            Next valide
    Et là ça serait bon, mais j'ai beau chercher sur tous l'internet, je ne trouve rien sur la question.

    Parce que si je met ne serais-ce que un n'importe ou après ma partie de code du ci-dessus, et bien cette partie part depuis le G9

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut


    C'est bon, j'ai enfin réeussi. En fait, c'est complêtement con et débille.
    Excel est en français, mais vba en anglais. Si bien qu'excel met du temps à traduire et ne fais pas la mise à jour de la liaison.

    Ben voilà, il m'a suffit de remplacer mes "SI" en "IF" et "EQUIV" en "MATCH"

    et plus besoin du "applications.sendkeys" non plus

    Merci à tous ceux qui ont perdu de temps sur mon problème.

  19. #19
    lvr
    lvr est déconnecté
    Membre extrêmement actif Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    910
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 910
    Points : 1 365
    Points
    1 365
    Par défaut
    Bien joué !

    Faudrait se lister tous ces problèmes de multilangues dans Excel !
    Des formules écrites pour un Excel en français ne fonctionne pas toujours avec des Excel en anglais ! C'est quand même con

  20. #20
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Ivr attention au parolement correct on ne dir plus "con" on dit:une mauvaise integration logique .. finalement t'as raison c'est con
    Daranc

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

Discussions similaires

  1. [WD-2010] Mise à jour de signet par macro VBA
    Par totoro the big one dans le forum VBA Word
    Réponses: 1
    Dernier message: 15/03/2015, 21h14
  2. Problème de mise à jour de table par vba
    Par emulamateur dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/06/2013, 08h17
  3. [XL-2007] Mise à jour des données par formulaire vba Excel
    Par rattus34 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 16/02/2012, 12h48
  4. [XL-2010] Mise à jour des données par formulaire vba Excel
    Par mam51100 dans le forum Excel
    Réponses: 0
    Dernier message: 16/02/2012, 10h25
  5. [AC-2007] Mise à jour des références par VBA
    Par jpg75014 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/06/2011, 17h31

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