Microsoft 365 Mettre une macro en pause pour télécharger un fichier

Bob Morane

XLDnaute Nouveau
Bonjour à tous,

Après quelques années à chercher (et trouver) les réponses à mes questions sur le net, je coince et ne trouve pas de solutions cette fois
Voici mon problème :

J'ai un fichier "Final" qui contient une macro qui le met à jour à condition qu'un fichier "Nouvelles données" à télécharger soit ouvert (Contenant les données à ajouter au fichier)
Si le fichier a été téléchargé et est ouvert, pas de soucis ...

Sauf que

Certains utilisateurs ouvrant le fichier "Final" sans avoir ouvert le fichier "Nouvelles données", j'aimerais que la macro se mette en pause en laissant la main à l'utilisateur pour qu'il télécharge et ouvre le fichier "Nouvelles données"
A noter qu'un Userform apparaît à l'écran pour que les utilisateurs "non aguerris" voient la marche à suivre pour effectuer la mise à jour qui se fait en cliquant sur un Label

J'ai essayé de jongler avec les modes modal/non modal de l'Userform, j'ai tenté de mettre une pause avec Application.Wait, je n'arrive pas à ce que ça fonctionne
Si un des fabuleux utilisateur de ce forum pouvait m'aider, ce serait super :)

Bob
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
En principe
'on crée une gestion d'error
On Error resume next
'on tente d'activer le fichier
Workbook("tonfichier.xlsx").activate
'on regarde si error
if Err<>0 then
'fichier non ouvert alors on l'ouvre
workbook("chemin et tonfichier").open
End if
'c'est bon on peut continuer
Bruno
 

Bob Morane

XLDnaute Nouveau
Bonjour youky(BJ),

Avant tout, merci de te pencher sur mon problème.
Deux petites choses qui compliquent la situation :

Un Userform apparaît à l'écran pour que les utilisateurs "non aguerris" voient la marche à suivre pour effectuer la mise à jour qui se fait en cliquant sur un "Label"
A la base, le fichier qui doit être ouvert n'existe pas. Il s'agit d'un extract d'une base de données dans un programme propre à mon entreprise

Ceci étant dit, je vais tester avec un "On error resume next" comme tu le proposes
Dans tous les cas, je reviens, soit pour dire que ça fonctionne, soit pour demander plus d'aide

Bob
 
Dernière édition:

Bob Morane

XLDnaute Nouveau
Bonjour youky(BJ),
Bonjour à tous,

Je coince toujours sur mon problème que je n'arrive pas à résoudre avec la méthode proposée par youky(BJ)
N'étant qu'un utilisateur très occasionnel de VBA, désolé si mes explications ne sont pas toujours claires

Pour résumer :

Le fichier "Général" doit être mis à jour chaque matin avec les "Données mises à jour" qui proviennent d'un extract d'une base de données en ligne sur l'Intranet de mon employeur

Cette mise à jour doit être faite par le premier utilisateur (qui peut changer chaque jour) et doit donc être la plus simple possible à faire
J'ai donc automatisé la procédure qui fonctionne sans souci s'il ouvre le fichier "Données mises à jour" AVANT d'ouvrir le fichier "Général" ...

Le souci est que certains ouvrent le fichier "Général" en premier ==> Un Userform s'affiche pour (ré)expliquer la marche à suivre pour générer le fichier "Données mises à jour"
C'est là que ça coince ... Le Userform empêche le fichier de s'ouvrir

Après pas mal de recherches,si je mets ce Userform en "show 0" ==> La macro continue sans attendre l'ouverture du fichier
J'ai tenté de mettre des "Application.Wait Time + TimeSerial", des Do ... Loop, des DoEvents, je n'arrive pas à résoudre le problème
Dans certains cas, le fichier s'ouvre bien, je peux activer les modifications ... mais le Userform étant en "Non modal" ... impossible de cliquer sur le "label" qui lance la mise à jour
J'ai essayé de repasser le Userform en "Modal" si le fichier "Données mises à jour" a été ouvert ... Ca ne fonctionne pas

Bref, ce que j'aimerais c'est :

Pouvoir afficher le "Userform" afin que l'utilisateur voit la façon d'extraire les données
Que le fichier "Données mises à jour" puisse être ouvert et qu'on puisse activer les modifications
Que l'utilisateur puisse ensuite cliquer sur le "label" qui lance la mise à jour

D'avance, je remercie ceux qui prendront le temps de répondre à ce post

BoB
 

eriiic

XLDnaute Barbatruc
Bonjour,

Si ton fichier porte toujours le même nom et est toujours au même endroit, autant l'ouvrir directement.
<c'est ce que te proposait Bruno.
Si ces conditions ne sont pas réunies ça serait bien de fournir toutes les explications du contexte.
Sinon, plutôt qu'un msgbox, tu peux ouvrir une boite de sélection de fichier, il comprendra qu'il faut aller le chercher. Et ta macro attendra que ce soit fait. Tu devras contrôler si le fichier ouvert est le bon.
eric
 

Discussions similaires

Réponses
2
Affichages
659

Statistiques des forums

Discussions
315 088
Messages
2 116 089
Membres
112 658
dernier inscrit
doro 76