Travailler dans un Userform avec le classeur masqué

Bonsoir,

J'ai créer un userform pour entrer des résultats scolaire.

L'utilisateur peut entrer ses résultats qui sont ensuite envoyés dans un tableau d'une feuille excel.

Excel calcul des moyennes et autres statistiques, et l'utilisateur peut ensuite récupérer ces résultats directement dans le formulaire pour les visualiser.

J'ai également ajouter un bouton pour faire défiler les résultats déjà entrés pour les modifier ou les supprimer.

Jusque là tout est bon.

Mon problème est que je souhaiterais que l'utilisateur ne voit jamais le classeur excel et qu'il ne travaille que sur le formulaire.

J'ai donc tenté de masquer le classeur à l'ouverture avec

application.visible=false
Userform1.show

Seulement dès que j'ouvre mon classeur, vba lance le déboggage "méthode sheet de l'objet global a échoué"

Il semblerait que le formulaire ne puisse pas travailler sur un classeur masqué.

Auriez-vous une idée de comment faire ?

Merci beaucoup

MVBAM

Ps: désolée je ne peux malheureusement pas vous joindre de fichier en exemple pour le moment.

Bonsoir,

Le classeur doit être ouvert. Par contre, les feuilles peuvent être inaccessibles : mettre propriété de la feuille visible=xlsheetveryhidden.

Si vous rajoutez un mot de passe sur le projet vba, rien ne sera visible ni accessible. Vous pouvez donc travailler sur plusieurs feuilles cachées et accéder au(x) formulaire(s) via une feuille menu.

Bon travail !

Bonsoir egg,

Merci pour cette réponse rapide.

Je vais tester tout ça et vous tiendrai au courant.

J'ai cependant peur que cela ne fonctionne pas car, avant de masquer mon classeur entier, j'avais tenté de simplement masquer manuellement la feuille qui contient le tableau et cela ne fonctionnait pas.

Dans mon formulaire, j'ai la possibilité de filtrer mon tableau excel avec une combobox pour affiner la recherche de certains résultats.

Si la feuille est masquée, ce filtre ne fonctionne plus dans le formulaire car il ne parvient plus à sélectionner les cellules du tableau à filtrer...

Bref, je vais tout de même essayer votre solution !

Encore merci et bonnes soirée !

2 solutions :

Soit on évite de sélectionner, ce qui évite d'afficher la feuille

Soit on affiche la feuille a l'intérieur de la macro, on fait l'opération voulue et on la rend invisible à nouveau.

En principe, la première solution est toujours possible.

Je vais essayer la 1ère solution.

J'ai juste un bout de code dans un spin Burton qui me permet de démarrer à la première ligne du tableau et ensuite de descendre jusqu'à la prochaine ligne visible (vu que j'ai un filtre).

J'ai donc une boucle qui dit

cells(1,6).select         'en-tête de la colonne où je souhaite démarrer 
Do
Activecell.offset(1,0).select
Loop until activecell.entirerow.hidden= false

Comment pourrais-je enlever les sélections?

Ensuite chacun de mes textbox font référence à une cellule active

Exemple:

textbox1.text= activecell.value
Textbox2.text= activecell.offset(0.1).value

Etc.

La pareil, comment éviter de sélectionner une cellule au départ ?

Désolée de toutes ces questions mais j'avoue être un peu perdue et ne connaît pas encore très bien le codage vba.

Soit la cellule est une adresse fixe, il suffit de la nommer (sheets(d),range(y), soit c'est une adresse variable... Et il faut passer par une variable déclarée : Dim C as range et dans la macro définir C par exemple avec un Find(C in ma zone). Les adresses à impacter sont ensuite déterminées par des offset de C

Bonjour,

Merci pour ces précisions.

Je vais essayer tout ça et vous tiens au courant

Pas évident tous ces codes...

Bonjour le forum,

Désolée du retard..

J'ai changé tous les codes pour ne plus avoir à sélectionner de cellules et maintenant tout fonctionne.

Encore merci pour les conseils

MVBAM

Rechercher des sujets similaires à "travailler userform classeur masque"