VBA excel et sécurisation des liens

Bonjour,

Je vous expose mon projet;

j'ai 9 fichiers (pour le moment) excel à lier.
un bilan et un plan qui regroupe des infos contenues dans le reste des documents.
dans mon bilan il y a des valeurs que je voudrais reporté de document (exemple, cout de construction) contenu dans une cellule X, je ne parviens pas à trouver le code qui me permettrait de copier la valeur de la cellule (que j'aurais nommé au passage).

Donc ma question si c'était pas clair dès le départ (désolé); comment copier la valeur d'une cellule d'un autre fichier xls?
comment copier une plage de cellule (valeur numérique et de type string)?
Je voudrais connaitre le code tant que possible.

Merci par avance.
Configuration: Windows XP
Firefox 2.0.0.12

8 réponses

  1. Salut,

    Méthode simple pour lier une cellule d'un classeur A avec une cellule d'un classeur B : tu ouvres les deux classeurs, tu cliques sur la cellule de A, tu écris = puis tu bascules sur l'autre classeur, tu cliques sur la cellule que tu veux lier, puis tu tapes Entrée. Tu auras la syntaxe de la procédure...

    Et pour trouver le code VBA, si c'est ça que tu veux, tu lances l'enregistreur de macro avant de faire la manip ci-dessus

    :-)
    1. Contributeur
      bonjour

      dans mon bilan il y a des valeurs que je voudrais reporté de document (exemple, cout de construction) contenu dans une cellule X, je ne parviens pas à trouver le code qui me permettrait de copier la valeur de la cellule (que j'aurais nommé au passage)

      Avec une macro, pourquoi pas mais pourquoi aussi ne pas mettre tout simplement :

      ='mon_classeur_untel.xls]ma-feuille'!cellule_nommée
      1. simplement c'est vrai mais, je voudrais éviter le plus possible de faire apparaitre les formules, voila pourquoi je préfère passer par vba ou la macro à la rigeur.

        je tente les conseils et je vous tiens informé.

    2. Pour le gentil monsieur qui me donne des liens qui font 900pages je te remercies je lis progressivement ca depuis un moment, je sais pas pour toi mais je préfère avoir un minimum d'interaction quand j'apprends, c'est plus cordial et moins rébarbatif.
      Mais je te remercies pour les liens (que j'ai déjà en favoris :D :D)
      1. Contributeur
        bonjour

        simplement c'est vrai mais, je voudrais éviter le plus possible de faire apparaitre les formules, voila pourquoi je préfère passer par vba ou la macro à la rigeur.

        Dans ce cas-là je te donne une syntaxe de la macro :
             [A1].FormulaArray = "='mon_classeur_untel.xls]ma-feuille'!cellule"
             [A1].Value = [A1].Value
        

        Cela abouti au même résultat que la formule mais il n'y a plus la formule.

        Bien sûr tu peux travailler avec des variables et faire des boucles d'évolution sur plusieurs cellules et classeurs.
        Si tu mets ta macro à l'open du classeur, cela évite aussi le message de mise à jour des liaisons.
        1. la formule que tu propose ne marche pas;
          voici la formule que je donne:

          Sub copie3()
          [B26].FormulaArray = "=[chrono_adf.xls]plage!$h$217"
          [B26].Value = [h217].Value
          End Sub

          Avec ceci rien ne s'affiche.Mais grâce à toi je suis arrivé à ça:

          Sub copie2()
          ActiveCell.Value = "=[chrono_adf.xls]plage!$h$217"
          End Sub

          Mais malheureusement on voit la formule dans la barre de saisie de formule...
          Je voudrais éviter le plus possible que les formules apparaissent pour empêcher les erreurs de frappes, si vite arrivée et qui coûte cher dans certain cas.
        2. Contributeur
          @Akhaosbonjour

          Tu as raison, j'avais effacé quelques caractères utiles !
          Tu n'es pas allé tout à fait jusqu'au bout :
          Sub copie2()
          ActiveCell.Value = "=[chrono_adf.xls]plage!$h$217"
          ActiveCell.Value = ActiveCell.Value 
          End Sub
          

          et tu auras la valeur sans la formule et sans liaison autre que VBA !
        3. @gbinformeMerci, ca passe très bien, c'est la deuxième ligne qui fait qu'on ne voit pas la formule?

          Sinon j'ai deux questions supplémentaire:

          Comment spécifier la cellule affectée par la formule: au lieu de active.cell je met [cellule] ou $cellule$ ?

          Comment ajouter d'autre copie dans la même procédure ? je voudrais que mes utilisateurs n'est à appliquer la macro qu'une seule fois.

          Merci d'avance.
        4. Contributeur
          @Akhaosbonjour

          c'est la deuxième ligne qui fait qu'on ne voit pas la formule?

          Grace à "FormulaArray" excel va chercher la valeur dans le classeur en installant la formule.
          Cette formule donne une valeur et si tu attribues cette valeur à la cellule tu écrases laformule,
          comme avec un copier / collage spécial valeurs sur une formule.

          Comment spécifier la cellule affectée par la formule

          Tu as autant de façons que tu veux :
               [A1].FormulaArray = "='[mon_classeur_untel.xls]ma-feuille'!cellule"
               [A1].Value = [A1].Value
          ou en explicite
               range("A1").FormulaArray = "='[mon_classeur_untel.xls]ma-feuille'!cellule"
               range("A1").Value = range("A1").Value
          qui sont assez figés
          ou
               cells(ligne,colonne).FormulaArray = "='[mon_classeur_untel.xls]ma-feuille'!cellule"
               cells(ligne,colonne).Value =cells(ligne,colonne).Value
          afin de pouvoir faire des boucles en variant ligne et colonne
          et de même pour adressage de ta cellule à copier.
          

          Tu as bien sûr plein d'autres moyens d'adressage à utiliser selon les besoins : tu peux approfondir ce point pour trouver la méthode la plus adaptée à ton cas.
      2. effectivement la méthode FLAMP est plus efficace et moins rébarbatif, j'en conviens, mais je préfère nettement la méthode FLTM qui est quand même plus enrichissante ne serai-ce que pour sa culture personnelle.
        Je crois que tu peux effacer les liens de tes favoris, visiblement ils ne te servent à rien ...

        ;o)

        polux
        1. tu peux m'éclairer sur ces méthodes ?

          Je vois pas du tout de quoi tu parles.
      3. Contributeur
        bonjour polux,

        Le monde n'est pas obligatoirement d'un seul bord et on peut naviguer entre bâbord et tribord, entre la méthode FLAMP et la méthode FLTM : j'apprécie tes méthodes mais elles vont rester secrètes pour beaucoup !

        bonjour Akhaos,

        je tente les conseils et je vous tiens informé.

        As-tu essayé la méthode VBA du poste 6 ?