VBA excel et sécurisation des liens

Fermé
Akhaos Messages postés 33 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 3 novembre 2008 - 10 mars 2008 à 17:45
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 11 mars 2008 à 14:46
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.
A voir également:

8 réponses

Fxbrg Messages postés 711 Date d'inscription samedi 17 mars 2007 Statut Membre Dernière intervention 16 novembre 2013 198
10 mars 2008 à 17:55
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

:-)
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
10 mars 2008 à 17:58
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
0
Akhaos Messages postés 33 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 3 novembre 2008 3
10 mars 2008 à 18:12
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é.

0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
10 mars 2008 à 18:00
bonjour,

Deux possiblité pour faire ça :
1- dans l'aide Excel ...
2- sur google ... ou tout autre moteur de recherche. (https://vb.developpez.com/faqvba/ ou https://excel.developpez.com/faq/

bon courage

;o)

polux

ps: environ 2 minutes pour trouver les 2 liens en passant par un moteur de recherche ...
0
Akhaos Messages postés 33 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 3 novembre 2008 3
10 mars 2008 à 18:13
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
10 mars 2008 à 19:04
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.
0
Akhaos Messages postés 33 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 3 novembre 2008 3
11 mars 2008 à 10:47
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.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684 > Akhaos Messages postés 33 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 3 novembre 2008
11 mars 2008 à 11:08
bonjour

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 !
0
Akhaos Messages postés 33 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 3 novembre 2008 3 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
11 mars 2008 à 12:16
Merci, 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.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684 > Akhaos Messages postés 33 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 3 novembre 2008
11 mars 2008 à 14:46
bonjour

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.
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
11 mars 2008 à 07:17
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
0
Akhaos Messages postés 33 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 3 novembre 2008 3
11 mars 2008 à 09:17
tu peux m'éclairer sur ces méthodes ?

Je vois pas du tout de quoi tu parles.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
11 mars 2008 à 09:11
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 ?
0
Akhaos Messages postés 33 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 3 novembre 2008 3
11 mars 2008 à 11:44
oui j'ai tenté mais ca passe pas...
0