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 :

Supprimer une réf à un autre classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2018
    Messages : 19
    Par défaut Supprimer une réf à un autre classeur
    Bonjour à Tous

    Mon problème est le suivant :
    Lorsque je copie une feuille depuis un classeur "Base" dans un autre fichier "Titi" en conservant les formules, je récupère plein de références à l'ancien classeur "Base" du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX('[Base.xlsm]BW'!$F:$F;EQUIV(CONCATENER($A10;$C10;E$2);'[Base.xlsm]BW'!$G:$G;0))
    Je voudrais les supprimer et que Titi calcule tout grâce à ses feuilles à lui (il a aussi un onglet BW).
    Donc je pensais remplacer [Base.xlsm] par rien dans les formules tout simplement et du coup avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX('BW'!$F:$F;EQUIV(CONCATENER($A10;$C10;E$2);'BW'!$G:$G;0))
    Mais lorsque j'emploie ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Workbooks.Open Filename:="K:\DIDIER D\Titi.xlsx"
    Workbooks("Base.xlsm").Sheets("CA par taux").Rows("4:174").Copy Destination:=Workbooks("Titi.xlsx").Sheets("CA par taux").Range("A4")
    Range("A4:AA174").Replace What:="[Base.xlsm]", Replacement:="", LookAt:=xlPart
    Cela ne fonctionne pas,

    Par contre j'en suis pas loin car quand je la relance depuis le Titi qui s'est ouvert ça fonctionne.
    Comment faire pour que cela fonctionne du premier coup ?

    Merci beaucoup pour votre aide

    Titi.xlsxBase.xlsm

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    2 méthodes à mon avis.

    - Balayer les cellules spéciales détenant une formule
    (je ta laisse traduire)
    et leur affecter leur valeur par
    - Modifier la liaison du classeur.
    Remplacer le classeur annexe par lui-même.
    L'enregistreur de macro t'indiquera la méthode.

  3. #3
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2018
    Messages : 19
    Par défaut Supprimer une réf à un autre classeur
    Bonjour Marcel

    D'apres ce que je comprends, ta solution 1 serait de remplacer toutes les cellulles qui posent pb par leur valeurs.
    Or ca ne va pas car je dois absolument garder les formules, donc conserver le lien vers l'onglet BW mais du nouveau fichier.
    Faire comme si une image du fichier d'origine été créée.
    Idem si je supprime la liaison dans base j'obtiens une valeur et donc plus de calculs depuis BW!Titi
    Donc ca va pas non plus..

    Ta solution 2 est celle que j'essaye de mettre en place mais je rame depuis 2 jours
    Tu crois que si je remplace Base! par Titi! ca fonctionnerait ?

    Cordialement
    Didier

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Les "Replace" sont parfois galère.

    Passe par l'enregistreur.
    Tu modifies la liaison du classeur Titi avec Base en Titi avec Titi.
    Théoriquement, la liaison devrait être supprimée.
    (Voir dans "Fichier")

  5. #5
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Octobre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Octobre 2018
    Messages : 19
    Par défaut
    Oui par l'enregistreur ça marche mais j'ai un code à rallonge :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Workbooks.Open Filename:="K:\DIDIER D\Modele cadrage DD.xlsx"
    Sheets("CA par taux").Select
    Windows("Base DURE.xlsm").Activate
    Rows("4:174").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Modele cadrage DD.xlsx").Activate
    ActiveWindow.SmallScroll Down:=-6
    ActiveSheet.Paste
    Selection.Replace What:="[Base DURE.xlsm]", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Range("E4").Select
    Windows("Base DURE.xlsm").Activate
    Y a pas un moyen pour diminuer un peu ces lignes ? J'ai une macro super longue a faire
    Mercii

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    1- Balise ton code en utilisant les bornes #
    2 - Oui, tu peux purger ce code en supprimant ces f... Select, Activate... qui n'apportent rien si ce n'est de le rendre moins lisible
    3 - Tu n'as pas suivi mon indication consistant à modifier la liaison. Tu préfères remplacer une partie de tes formules. OK. C'est pour cette solution que je t'ai proposé de modifier la liaison en utilisant l'enregistreur.
    4 - Plutôt que de sélectionner une fenêtre, mieux vaut sélectionner un objet classseur, Range....

    L'enregistreur rend service, certes, mais il est obligatoire de le "purger".

Discussions similaires

  1. [XL-2007] Copier dernière ligne d'une feuille vers autre classeur fermer
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/04/2012, 12h13
  2. [XL-2003] supprimer une ligne dont le classeur est protégé
    Par vali25 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/06/2011, 14h30
  3. [XL-2007] Créer une macro pour supprimer des onglets dans un autre classeur
    Par nicosd54 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/03/2011, 11h01
  4. [VBA-E]Importer une ligne d'un classeur vers un autre
    Par khiat dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/02/2006, 15h15
  5. [VBA] utiliser une macro contenue dans un autre classeur
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 01/02/2006, 19h46

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