Problème vba
Résolu
Bonjour,
Je bloque sur mon code VBA qui ne réponds pas à ma demande ...
Je cherche à actualiser mes données on ouvrant un fichier (si pas déjà ouvert), puis le refermer
OU si déjà ouvert, le fermer et le réouvrir pour mettre à jours les nouvelles donnée
Pouvais voir ou est mon erreur...

Je sais qu’une photo n’est pas très acceptable pour m’aider mais la macro ce trouve sur le fichier de mon entreprise et il est interdit d’utiliser internet
Akatsucki
Je bloque sur mon code VBA qui ne réponds pas à ma demande ...
Je cherche à actualiser mes données on ouvrant un fichier (si pas déjà ouvert), puis le refermer
OU si déjà ouvert, le fermer et le réouvrir pour mettre à jours les nouvelles donnée
Pouvais voir ou est mon erreur...

Je sais qu’une photo n’est pas très acceptable pour m’aider mais la macro ce trouve sur le fichier de mon entreprise et il est interdit d’utiliser internet
Akatsucki
2 réponses
Résumé de la discussion
Une macro VBA vise à actualiser des données en ouvrant un fichier externe si nécessaire, puis à le fermer ou à le rouvrir selon l'état de sa connexion. Des échanges mettent en évidence que la détection de l'ouverture du fichier est problématique et que le retour à l'application d'origine peut être perturbé. La solution préconisée consiste à minimiser la fenêtre après l'ouverture afin de revenir correctement au fichier de départ, et à tester si le fichier est déjà ouvert pour éviter les messages d'erreur. En pratique, le recours à Application.WindowState = xlMinimized a été cité pour assurer la continuité sans afficher de boîte de dialogue lorsque le fichier est réouvert.
-
Contributeurbonjour,
le code ne se comporte pas comme tu le souhaites?
que fait-il?
il n'a jamais fonctionné?-
-
Enfaite il m’actualise les données mais il me garde jamais le fichier ouvert ( pour la condition 2: si déjà ouvert alors fermer puis réouvrir ) et jai le message d’erreur ( votre fichier et déjà ouvert voulez vous le réouvrir ) que je ne veux pas qu’il s’affiche
Non je n’ai pas Option explicit en début de module -
Contributeur@Akatsuckicela me fait penser à cette discussion:
https://forums.commentcamarche.net/forum/affich-36885396-fonction-si-multiple-en-vba
ajouterOption explicit
peut t'aider à découvrir tes erreurs.
merci de montrer ton code complet. -
@yg_beOui je n’ai toujours pas résolu mon soucis depuis ce temps là... j’avais arrêté mes recherches
Voici mon code : (J’ai taper à la main lol )
Sub actualité Application.screenupdating = false Application.enableevents = false Dim classeur as worbook, chemin as string, gardeouvert as boolean Select case thisworkbook.sheets("ACCUEIL").range("k20") Case "poste 1" Chemin = "Q:\deptprod\confection bu\production\commun conf\programme P1 pour P2.xlsm" Case "poste 2" Chemin = "Q:\deptprod\confection bu\production\commun conf\programme P2 pour P3.xlsm" Case "poste 3" Chemin = "Q:\deptprod\confection bu\production\commun conf\programme P3 pour P1.xlsm" End select 'Si classeur ouvert, alors fermer puis reouvrir ( pblm msg erreur fichier déjà ouvert ?? If classeurouvert then Classeurouvert.close savechanges:= false Gardeouvert = true Else Gardeouvert = false End if 'Si classeur fermé, alors ouvrir puis refermer (sans sauvegarde) Set classeur = workbooks.open(filename:=chemin, readonly:=1, updatelinks:=0) Thisworkbook.refreshall If not gardeouvert then Classeur.close savechanges:= false End if Application.screenupdating = true Application.enableevents = true End sub Private function dejaouvert (chemin) Dim wb as workbook For each wb un workbooks If wb.fullname = chemin then Set dejaouvert = wb Exit function End if Next wb Classeurouvert = false End function -
Contributeur@Akatsuckije ne vois pas trop comment ce code pourrait fonctionner.
s'il s'agit du même problème qu'avant, plutôt que de recommencer avec ce nouveau code, je suggère de continuer avec l'ancien code, que me semble plus prometteur.
-
-
J’ai de nouveau le debogage ligne 11 de ton code ...
T’es sur d’avoir le même code que moi car vbCrLf ça veut dire quoi ??
-
-
-
Contributeur@Akatsuckila fonction peut-être n'importe où dans le module.
-
@yg_beJe ressaye après ou boulot et je te renvoie le code comme moi je l’ai écris avec ton ancien code
-
@AkatsuckiAlors ça fonctionne pour trouvé les erreurs, mais ça me donne debogage
Erreur d’exécution 91
Variable objet ou variable de bloc with non définie

-