Mise à jour des données d'un fichier de plusieurs sources
Bonjour à tous,
Je tiens par avance à tous vous remercier pour le temps que vous prendrez afin de m’aider dans ma requête.
Je m’essaye au VBA depuis 1 an en fonction de mes besoins et j’arrive habituellement à m’en sortir grâce aux informations trouvées sur internet. Mais dans ce cas j’ai vraiment essayé tout ce que j’ai pu trouver.
J’ai un fichier Excel qui est un tableau de bord (Il me permet d’afficher tous les indicateurs de différents fichiers comme par exemple la maintenance où j’affiche que le taux d’avancement des actions de maintenance par mois ou encore les indicateurs de transport). Sur chacun des fichiers de base, j’ai une page d’indicateur (traitement visuel des données) et je copie cette page sur un fichier qui centralise la totalité des feuilles d’indicateur des différents fichiers. (le tableau de bord)
Au début le fichier ne comportait que 2 ou 3 feuilles avec des indicateurs mais au fur et à mesure du développement de mon système, le nombre de feuille a augmenté.
Afin de mettre à jour j’utilisais « Actualiser toutes les données » mais très rapidement des erreurs sont apparue. J’ai donc utilisé le code suivant qui fonctionnait parfaitement (Bien que l’ordi moulinait un peu)
PI : J’ouvre tous les documents contenant la page d’indicateur, j’actualise mon tableau de bord et je referme les pages ouvertes.
Private Sub Workbook_Open()
Workbooks.Open ("T:\QSE\MAINTENANCE\Maintenance\Maintenance 2018 V3.xlsm")
Workbooks.Open ("T:\QSE\RESSOURCES HUMAINES\I-GRICOM Grille de compétence.xlsm")
Workbooks.Open ("T:\QSE\NON CONFORMITES\F-SUIPRO Fiche de suivi des fiches de progrès V3 .xlsm")
Workbooks.Open ("T:\QSE\PLANNIFICATION QSE\EXIGENCES\F-EXIREG Exigences réglementaires.xlsm")
Workbooks.Open ("T:\QSE\PREPARATIONS LOGISTIQUE\F-EVAFOU - Evaluation transporteur-fournisseur.xlsm")
Workbooks.Open ("T:\Brunel\État stock et code ICPE\Formulaire SNS - Etat de stock détaillé Brunel avec ICPE.xlsm")
[i]'ici on ouvre les différents classeurs contenant les données à recupérer et à afficher dans P-SURPER (Tableau de bord)[/i]
Windows("P-SURPER Surveillance et performance du SGS.xlsm").Activate
ActiveWorkbook.RefreshAll
Workbooks("Maintenance 2018 V3.xlsm").Close savechanges:=False
Workbooks("I-GRICOM Grille de compétence.xlsx").Close savechanges:=False
Workbooks("F-SUIPRO Fiche de suivi des fiches de progrès V3 .xlsm").Close savechanges:=False
Workbooks("F-EXIREG Exigences réglementaires.xlsx").Close savechanges:=False
Workbooks("F-EVAFOU - Evaluation transporteur-fournisseur.xlsm").Close savechanges = False
Workbooks("F-COQURE - Contrôle qualité réception SNS.xlsm").Close savechanges = False
Workbooks("Formulaire SNS - Etat de stock détaillé Brunel avec ICPE.xls").Close savechanges = False
[i]'Puis on referme les sources sans sauvegarder les changements (important dans mon cas)[/i]Mais depuis peu des messages d’erreur apparaissait lors de l’ouverture du fichier. J’ai donc essayé différentes méthodes mais rien n’y fait (c’est même pire qu’avant) :
Tentative 1 : en remplaçant le précédent code par celui la mais cela ne fait que m’ouvrir l’interface de lien de excel et il me demande de choisir une seule source
'Application.AskToUpdateLinks = False
'ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSourcesTentative 2 : Essayer de mettre directement à jour mes sources via cette petite boucle pour mettre à jour le fichier de destination mais pareil le fichier s’ouvre et se ferme sans mettre à jour les données
Private Sub Workbook_Open()
Dim Liaisons, Classeurs
'Mettre ici les chemins des fichiers de destination 2
Classeurs = "T:\QSE\SYSTEME DE GESTION DE LA SECURITE\SGS\6. Surveillance des performances\P-SURPER Surveillance et performance du SGS.xlsm" [i]'Chemin d'accès au document à mettre à jour[/i]
Application.ScreenUpdating = False
For Each Item In Classeurs
Workbooks.Open Item, UpdateLinks = True
Liaisons = ActiveWorkbook.LinkSources
For I = 1 To UBound(Liaisons)
Workbooks.Open Liaisons(I), UpdateLinks = True
ActiveWorkbook.Close True
Next
ActiveWorkbook.Close True
Next Item
Application.ScreenUpdating = True 'Boucle de mise à jour
End SubJe n’ai a ce jour pas trouvé d’autre moyen de réussir à mettre à jour mon document et surtout à avoir un code durable qui n’affiche pas d’erreur au bout de 2 semaines d’utilisation … Je m’en remets donc à vous.
Mon problème est le suivant : Est-ce possible de mettre à jour mon document via un code VBA qui met à jour lors de l’ouverture du fichier et/ou en appuyant sur le bouton de mise à jour (Feuille « Fiche de commande ») ?
Ci-joint mon fichier de surveillance sans les données sensibles. (J’ai supprimé la majorité des chiffres)
Je vous remercie infiniment d’avance pour le fait de m’avoir lu et je vous remercie d’autant plus si quelqu’un peut m’aider à trouver une solution à ce problème.
bonjour
on utilise maintenant Power Query, comme ceci
dans ton fichier Excel, menu Données/obtenir/ choisir ta source, "Charger"
répéter pour chaque source
toutes les semaines, tu cliques "actualiser" et toute les requêtes se mettent à jour
note : les flopées d'indicateurs se font par Power BI (version Desktop gratuite). A apprendre d'urgence
je ne fais plus aucun graphique dans Excel !
pas de VBA
amitiés excelliennes
Je vous remercie beaucoup, c'est vraiment la solutions qu'il me fallait ! Merci encore il ne reste plus qu'à bien prendre en main le logiciel, encore merci !