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 :

insert > copy > paste - formules avec liaisons vers un fichier source


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Août 2005
    Messages : 93
    Points : 38
    Points
    38
    Par défaut insert > copy > paste - formules avec liaisons vers un fichier source
    Bonjour,

    Je veux programmer une fonction qui me permet de copier des lignes "modèles" vers un nouvel emplacement.
    Les lignes modèles comportent des formules avec une liaison vers un fichier externe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ' lignes destination , calculées dans une autre partie de la macro.
    ligdeb = 85
    ligfin = 159
    With Sheets("test")
                .Select
                .Range("A10:HH84").Copy  'modèle
                .Range("A" & ligdeb & ":HH" & ligfin & "").Insert Shift:=xlShiftDown         
                .Range("A" & ligdeb & ":HH" & ligfin & "").PasteSpecial (xlPasteFormulas)
                .Range("A" & ligdeb & ":HH" & ligfin & "").PasteSpecial (xlPasteFormats)            
    End With
    Ce copier/coller fonctionne bien, ce qui ne va pas c'est que les lignes poussées vers le bas ont toujours les mêmes formules.

    L'ancienne ligne 85 avait pour formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='[autreFichier.xls]DansFeuille'!A80
    poussée en ligne 160 elle a toujours la même formule alors que j'attendais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='[autreFichier.xls]DansFeuille'!A155
    merci pour votre aide pour résoudre ce problème.

    note : si le fichier ne contient pas de liaison vers un autre classeur, cette fonction de copie semble fonctionner.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par coyote90 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    With Sheets("test")
                .Select
    Ton Select ne sert à rien pour au moins deux raisons.
    D'abord, il est redondant avec le With (en gros, les deux servent à peu près à la même chose, du moins dans ce cas).
    Ensuite, Select sert plutôt à sélectionner une cellule. Pour une feuille, on utilise Activate.
    Donc, supprime-le et tu verras que ça marchera aussi bien (et même un peu plus vite).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                .Range("A" & ligdeb & ":HH" & ligfin & "").PasteSpecial (xlPasteFormulas)
                .Range("A" & ligdeb & ":HH" & ligfin & "").PasteSpecial (xlPasteFormats)
    Pourquoi ne pas écrire plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("A" & ligdeb & ":HH" & ligfin & "").PasteSpecial (xlPasteAll)
    L'ancienne ligne 85 avait pour formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='[autreFichier.xls]DansFeuille'!A80
    poussée en ligne 160 elle a toujours la même formule alors que j'attendais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='[autreFichier.xls]DansFeuille'!A155
    Les références à des tableaux externes ne sont pas modifiées dans la mesure où Excel ne peut pas savoir si le fichier destination a été modifié ou non.

    Ta seule solution est de te pastiller par code la modification des formules déplacées. Compliqué mais faisable.

Discussions similaires

  1. [XL-2003] Copie d'une formule avec VBA
    Par akane dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/09/2009, 19h32
  2. copie le contenu d'une listview vers un fichier txt
    Par dolsky dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/12/2008, 12h30
  3. [Mail] mail avec lien vers un fichier .pdf
    Par Herode dans le forum Langage
    Réponses: 1
    Dernier message: 27/03/2008, 05h52
  4. Réponses: 10
    Dernier message: 26/12/2007, 15h31
  5. excel : formule "=si..." avec liaison
    Par tarmin dans le forum Excel
    Réponses: 7
    Dernier message: 30/01/2006, 10h59

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