Impossible masquer un classeur

Bonjour

Il s’agit d’une application de gestion de bons de commandes et réception

Un classeur EXCEL avec plusieurs userforms pour faire la saisie des références et des détails de la commande et de la réception

Les feuilles sont masquées sauf dans un cas où la saisie des lignes de commandes et réception se fait par un userform mais avec affichage de la feuille qui contient les différents produits éligibles et enregistre les quantités commandées et réceptionnées

Sur cette phase tout se passe bien

Dans un deuxième temps, j’ai besoin de rajouter un contrôle pour vérifier que la personne qui valide la commande est habilitée

Pour se faire on utilise un deuxième classeur de valideurs composé d’une seule feuille

J’ouvre le deuxième classeur et mémorise en fonction du contexte, les personnes habilitées

Ce deuxième classeur devient le classeur actif après ouverture

La macro de ce traitement est dans un ‘module’ et non dans un userform

Ici commence les problèmes

1) Après avoir récupéré les personnes habilitées j’active le classeur Bon de Commande pour pouvoir continuer les traitements sur commande et réception

2) Malgré cette réactivation, lorsque je navigue avec les différents userforms j’ai des erreurs sur de type ‘ne fait pas partie de la sélection’ . Si je débogue, il apparait que activework.name renvoie le nom du classeur des valideurs

3) Pire : sur l’userform principal, à l’initialize je force l’activation sur le classeur Bon de Commande. Dans ce userform j’ai une liste déroulante de choix d’options de traitements. Lorsque je fais un choix, de nouveau erreur de sélection. En vérifiant, c’est de nouveau le classeur des valideurs qui est actif

4) Si je procède à une fermeture du classeur des valideurs, ce problème disparait mais il y a une autre erreur.

5) Lors de la saisie des lignes de commandes et réception avec affichage de la feuille des produits éligibles, le classeur des valideurs est affiché en avant plan mais sans la feuille

6) J’ai rajouté une instruction activewindow.visible = false après ouverture du classeur des valideurs pour que la fenêtre ne soit pas visible mais alors c’est la fenêtre du classeur de nom EXCEL qui est affichée en avant plan

7) A ce niveau je n’ai plus de solution

Je ne peux pas joindre le code car il est trop conséquent

Merci d'avance si certains sont inspirés car de mon côté j'ai tout essayé

Bonjour,

Compte tenu de tes explications ... ( c'est bien le moindre ... ) ... perso j'irais creuser du côté de la déclaration des variables ...

Bon Courage ...

Bonjour,

Quand on travaille avec différentes feuilles ou classeurs, il est fortement conseiller d'utiliser des variables objet, de cette façon, le compilateur sait vraiment sur quel objet travailler.

Un petit exemple, tu peux faire de même avec les feuilles afin qu'il n'y ait pas d'erreur quand les données seront transférées du formulaire vers la feuille :

Sub Test()

    Dim Cls_BDD As Workbook
    Dim Cls_valideurs As Workbook
    Dim Chemin As String
    Dim Fichier As String
    Dim Existe As String

    Set Cls_BDD = ThisWorkbook

    Fichier = "valideurs.xlsx"
    Chemin = "G:\Mon dossier\" & Fichier

    On Error Resume Next
    Existe = Dir(Chemin)

    If Err.Number <> 0 Then MsgBox "Le lecteur où doit se trouver le fichier n'existe pas !": Exit Sub
    On Error GoTo 0

    If Existe = "" Then MsgBox "Le fichier n'existe pas !": Exit Sub

    Set Cls_valideurs = Workbooks.Open(Chemin)

    'ici la suite de ton code faisant référence aux deux variables objet Workbook !
    '...
    '...

End Sub

bonjour à tous

mon avis : pour une appli pro de gestion de données, éviter les formulaires complexes en VBA.

simplifier

mieux : supprimer les formulaires et faire la saisie directement dans des lignes de la base de données. Les personnes à la saisie s'habituent en quelques jours.

nota : on veut imiter les progiciels du commerce avec Excel et VBA. En oubliant que TOUS ces progiciels sont des SGBD et non des tableurs. Les macros VBA sont instables (évolution des réseaux, des PC, de Windows...)

VBA n'est pas conçu pour de gros dév.

Bonsoir

Merci à tous ceux qui ont essayé de me répondre

Désolé de ne pas avoir répondu plus tôt mais je ne reviens sur le forum que maintenant

Je suis d'accord qu'il faut éviter de faire des gros développements avec VBA et EXCEL et dans le passé j'ai été plutôt développeur sur des bases de données.

Finalement je me suis tiré d'affaire en cassant la logique et en faisant remonter mon contrôle en amont et en stockant le résultat dans le tableau qui est ensuite utilisé en aval

Cordialement

Bonjour,

tes problèmes venaient sûrement de 2013.

Depuis cette version et la gestion des fenêtres en SDI au lieu de MDI avant, excel gère très mal les feuilles actives lorsqu'il y a un userform (à-priori si non modal mais des soucis constaté également en modal), et d'autant plus si on change leur visibilité.

En gros elle semble active mais ne l'est qu'à moitié, il continue de travailler sur la précédente. Un truc infâme quoi...

Si tu as moyen de tester l'ancienne version sur 2010 et que tout se passe bien tu pourras confirmer l'origine.

eric

Rechercher des sujets similaires à "impossible masquer classeur"