Bonjour à tous,
Je suis en train de créer une macro excel qui tourne un certain temps pendant qu'elle réalise de très nombreux calculs. Au lieu de laisser le classeur excel affiché pendant tout le temps de calcul, je cache l'application (Application.Visible = False), et affiche un UserForm.
Cependant, je souhaiterais maintenant améliorer la macro et ne cacher QUE mon classeur lorsque j'exécute ma macro (Workbooks("Nom_du_classeur").Visible=False) de manière à ce que si l'utilisateur avait d'autres fichiers Excel ouverts, ils ne soient pas cachés eux aussi.
Mon problème (qui apparait même lorsque je n'ai pas d'userform) est que lorsque je cache juste mon classeur (et non pas l'application entière) j'ai une erreur. Lorsque j'essaie de tester ou de rentrer une valeur dans une cellulle de ce fameux classeur caché, j'obtiens le message suivant: "La méthode Worksheets de l'objet global a échoué".
La solution d'ajouter " Workbooks("Nom_du_classeur") " devant toutes mes lignes de code de lecture et d'écriture fonctionne à priori sur un exemple (en pièce jointe, on comprend aisément le problème en utilisant F8)... Mais ma macro entière faisant plus de 5000 lignes, j'ai très peu envie de modifier toutes les lignes une à une pour ajouter ce " Workbooks("Nom_du_classeur") ". Et étant plutôt novice sur VBA, je suis toujours motivé pour découvrir de nouvelles structures et méthodes.
Savez-vous pourquoi j'obtiens cette erreur seulement lorsque je cache le classeur et non pas l'application? Y a-t-il un moyen de remédier à ce problème d'une autre façon que celle mentionnée? J'ai par exemple pensé à inclure une ligne au début du code pour définir une sorte de "Workbooks" par défaut pour m'éviter de devoir le mettre à chaque ligne :/
Merci beaucoup pour votre aide.
Partager