2015-10-09 1 views
0

Je termine un .xls qui est destiné à mettre à jour un autre fichier .xls (un outil) par une macro. Donc, fondamentalement, l'idée est de cliquer sur un bouton, choisissez votre fichier cible (celui que vous allez mettre à jour) puis la macro corrigera le fichier avec quelques modifications faites en copiant, en collant et en remplaçant les formules et en ajoutant des feuilles. Ce correctif/fichier de mise à jour inclut uniquement les cellules et les feuilles qui seront ajoutées au fichier cible. J'ai commencé à avoir des problèmes quand j'ai inclus des formules qui font référence à des plages nommées qui existent seulement dans l'outil (fichier cible) mais qui n'existent pas dans le patch .xls. Comme il y a beaucoup de noms, j'ai décidé de casser toutes les connexions dans le fichier patch afin que les formules soient copiées dans le fichier cible sans références internes. Je voulais éviter le problème que ces références soient collées à des fichiers inappropriés et anciens.Actualiser les plages nommées lorsque #NAME? dans une feuille de calcul en cours de mise à jour

Ces corruptions de liens intentionnelles ont fait que le fichier de correctif a montré l'erreur "#NAME?" Aux formules utilisant des plages nommées. Cela ne m'importe pas que cela arrive mais je le fais quand cette erreur persiste après avoir copié ces formules, dans le fichier cible. Dans le fichier cible, ces noms existent.

J'inclus cette ligne pour rafraîchir les calculs, mais ne fonctionne pas (l'équivalent de Alt-Ctrl-Maj + F9)

wbTarget.Application.CalculateFullRebuild 

Comme vous pourrez le voir dans A3: A6 Je les ai fait le travail en appuyant manuellement sur F2 (pour éditer) et intro. Cette action restaure la connexion avec le nom déclaré. Ce n'est évidemment pas une solution pour faire fonctionner correctement toutes les cellules.

Imprimer l'écran C'est juste un exemple, mais cela se produit dans d'autres feuilles. # ¿NOMBRE? signifie #NAME?

enter image description here

+0

Pouvez-vous nous donner la définition de 'cF2FAgency4'? –

+0

que se passe-t-il si vous essayez 'wbTarget.Save' et assurez-vous de calculer avant d'activer la sauvegarde? J'ai remarqué que la méthode 'Calculate' ne fonctionne pas forcément bien quand vous avez des classeurs lourds. –

Répondre

0

Essayez quelque chose comme le code ci-dessous pour réentrer formules pour la feuille entière:

Sub ReEnterFormulas() 
    Dim Cell As Range 
    For Each Cell In ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas) 
     Cell.Formula = Mid(Cell.Formula, 2) 
    Next 
End Sub 
+0

Je ne sais pas pourquoi je n'ai pas eu d'alarme de votre réponse mais merci quand même. Je ne sais pas si cela a fonctionné, je viens de faire une macro qui remplace le "=" pour "* =", puis de nouveau avec "=". Ce n'est pas aussi efficace que je le voulais mais ça marche bien. –

+0

@ Gerónimo si cela aide à résoudre le problème, veuillez cliquer pour accepter la réponse. – omegastripes