J'ai des formules (fichier 1) qui vont chercher des données dans un (fichier 2) tout simplement. Ce fichier 2 est généré par un programme SQL qui vient ecraser automatiquement le fichier 2 par un fichier du même nom sans l'ouvrir.
Le fichier 1 est celui que j'exploite, mon problème est que si je n'ouvre pas le fichier 2 les formules ne se synchronisent pas.
Re : Automatiser la prise en compte de formules entre 2 fichiers
Bonjour Ivix18,
Il s'agit donc de la mise à jour des liaisons.
Si les formules contiennent des fonctions volatiles (DECALER...) elles se recalculent en appuyant sur F9.
Sinon a priori 2 solutions :
1) revalider chaque formule => clic dans la barre de formule + touche <Entrée>
2) exécuter cette macro :
Code:
Sub Formules()
Dim w As Worksheet, cel As Range
Application.ScreenUpdating = False 'pour accélérer
For Each w In Worksheets
For Each cel In w.UsedRange
cel.Formula = cel.Formula
Next
Next
End Sub
Re : Automatiser la prise en compte de formules entre 2 fichiers
Re,
Cette macro est plus simple et bien plus rapide :
Code:
Sub Formules()
Dim w As Worksheet, cel As Range
Application.ScreenUpdating = False
For Each w In Worksheets
w.UsedRange = w.UsedRange.Formula
Next
End Sub
Re : Automatiser la prise en compte de formules entre 2 fichiers
Re,
Procédons dans l'ordre.
1) Après mise à jour des données, la colonne K avec RECHERCHEV affiche #N/A parce que les valeurs ne sont pas trouvées en feuille PCG, ça vous pouviez le voir.
2) Mettre la macro dans une Workbook_Open du ThisWorkbook est sans aucun intérêt puisque les liaisons se mettent (normalement) à jour automatiquement quand on ouvre le fichier.
3) Si seule la feuille Exportation est concernée utiliser :
Code:
Sub Formules()
Dim cel As Range
Application.ScreenUpdating = False
For Each cel In Sheets("Exportation").UsedRange
cel.Formula = cel.Formula
Next
End Sub
4) Ma 2ème macro ne fonctionnait pas parce qu'il y a un TCD sur une autre feuille.
Mais sur la feuille Exportationil n'y a pas de TCD donc ceci fonctionne :
Code:
Sub Formules()
With Sheets("Exportation")
.UsedRange = .UsedRange.Formula
End With
End Sub
Re : Automatiser la prise en compte de formules entre 2 fichiers
1/Pour la RECHERCHEV elle fonctionne maintenant, bizarre, les cellules sont simplement cachées dans PCG.
2/Les liaisons ne se font pas au démarage de mon fichier "fiche véhicule", si mat.xls c'est bien sa mon problème.
3/Si je fais une 1ere exportation SQL dans MAT.XLS qui fait 485 lignes, j'execute la macro dans l'autre fichier tout est OK. Par contre si je fais une autre exportation SQL dans mat.xls qui fait 380 lignes, j'execute ma macro et j'ai toujours les lignes précédentes de 381 lignes à 454 lignes, alors qu'elles n'existe plus dans mat.xls (si j'ouvre ce dernier les lignes disparaissent).
Re : Automatiser la prise en compte de formules entre 2 fichiers
Je crois que mon problème vient bien du calcul des liaisons. Cette case est bien cochée, et lorsque que j'appuie sur F9 rien ne se passe non plus. La seule solution est que j'ouvre mon autre fichier pour que les liaisons se fasse bien.