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 ...
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 Subbonjour à 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