Oui, mais le tag de la discussion, c'est 2010, alors fournir un xls, c'est... comment dire... heu... un peu... heu... bof bof?
Enfin, tant mieux, notre demandeur a sa version xlsm avec des api windows, tout le monde est content.
Oui, mais le tag de la discussion, c'est 2010, alors fournir un xls, c'est... comment dire... heu... un peu... heu... bof bof?
Enfin, tant mieux, notre demandeur a sa version xlsm avec des api windows, tout le monde est content.
Patrick,
Pierre parle de la discussion qui est taguée Excel 2010...
Donc inutile de fournir des xls.
Quoique...
Pierre,
Les xls peuvent servir à d'autres...
Mais pour l'utilisation abusive des apis...
A ce propos, je ne peux pas tester, mais si l'on ouvre le fichier contenant l'UserForm dans une seconde session Excel, est-il possible de charger l'UserForm dans la première session, depuis un autre classeur?
j'avoue je ne sais pas 2010 je l'ai garder 15 jours quand j'ai eu la mise a jour gratos W 2007--> windows 8 2007 ne fonctionnait pas sur W8
j'ai tres vite virer les 2 de la meme maniere que W10
je me sert juste de temps en temps de office 2013 et encore c'est une version zuvazarmatetedemort que j'ai peché dans la mer morte
re
@pijaku
sauve le fichier1 en fichier 0
ouvre le 1 lance,ouvre le 0 lance r
eponse
la 2d instance de l'userform ne sera pas au premier plan c'est tout il faut aller le repecher derriere
ps: je me doute que la seconde instance sera en readonly j'ai pas testé mais ca me parait logique
Bonjour,
J'utilise Excel car je n'ais que Excel a disposition. J'ai créer un formulaire qui écrit dans Excel mais je ne veux pas que celui-ci soit disponible à importe qui et que seul "présent" soit le formulaire.
Par la suite pour les personne concerner il y a bien sur un accès au fichier pour pouvoir accéder au données.
Pour ma part je vais essayer de me débrouiller avec les solutions proposées, je ferais des compromis et je vous remercie de votre aide.
Je reviendrais vers vous pour vous exposer les choix et les macro pour les petit curieux qui passerons par la.
Cordialement,
Passepartout007
bonjour,
cette réponse n'est pas forcément pile dans le sujet , mais le sujet n'est il pas un problème de conception ?
les 2 fichiers sont ils liés directement ou peut être pas ??!!
est ce le data ou le code qui doit être caché ??!!
et si le data était chiffré/codé , il serait visible mais non accessible à n'importe qui .. qui n'aurai pas la clé
@+JP
Bonjour mjpmjp,
Le fichier exécuteur m'importe peux, ce que je veux vraiment c'est que dans le deuxième fichier on ouvre le formulaire sans avoir accès visuel et tout cours à l'Excel. Les deux fichier ne sont donc pas lier.
Le code pas besoin de le caché vu que le formulaire ne permet pas d'y accéder, par contre les date peuvent être visible mais il ne faut pas y avoir accès. Le mieux serais qu'elle ne soit plus du tout visible.
Cordialement,
Passepartout007
re,
il est possible de bloquer une feuille ou une partie ...
il est possible décrire en noir dans une cellule dont le fond est noir... et comme il disait ... noir c'est noir , il n'y a plus d'espoir ...
il est possible de masquer la barre de formule ...
@+JP
re,
mais pour revenir à mon premier post : #2
il est possible de déplacer le fichier 1 en fonction du fichier 2 ...
et ainsi ne jamais voir le fichier 1
@+JP
@mjpmjp
a partir du momment ou tu active une instance tout les fenetres apartenant a une autre instance s'en vont avec (testé!!)
les apis sont requises pour modifier leur statuts hierarchique
au mieux sans api minimiser l'application du fichier2 avant!!! le show du userform
Salut.
Peut-être que la solution suivante pourrait te convenir. Elle fonctionne pour XL2013 et 2016, il faudrait vérifier si ça fonctionne en 2010 (je n'ai pas de quoi tester sous la main, mais je suppose que c'est la même option).
Elle n'utilise pas un lanceur, mais un raccourci qui va ouvrir une nouvelle instance d'Excel que tu pourras rendre invisible.
Dans le code de ton classeur "invisible"
Dans le Terminate du userform1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Sub Workbook_BeforeClose(Cancel As Boolean) Me.Save End Sub Private Sub Workbook_Open() Application.Visible = False UserForm1.Show End Sub
Tu crées un raccourci qui va lancer ton fichier invisible, et tu utilises l'option /x pour la création d'une nouvelle instance avec ce qui suit (en adaptant à ta version et à ton nom de fichier)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub UserForm_Terminate() Application.Quit End Sub
"C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE" /x D:\invisible.xlsm
Astuce: Pour retrouver ton chemin d'application, tape ? application.path dans la fenêtre d'exécution du VBE
Il faut que ton application soit bétonnée, car en cas de plantage, si pas bétonné, le fichier risque de rester ouvert mais invisible, imposant de passer par le gestionnaire des tâches pour tuer l'instance d'Excel.
Attention aussi que le fichier invisible doit être lancé par le raccourci pour être dans son instance personnelle. Si on ouvre directement le fichier alors qu'une instance d'Excel est déjà ouverte, c'est cette instance qui devient invisible, masquant les autres fichiers, avec les dégâts collatéraux lors de la fermeture du fichier invisible
[EDIT] Si tu veux utiliser ton lanceur, tu peux ajouter /x derrière le nom du fichier (toutes autres choses restant égales par rapport au code que j'ai fourni)
Code : Sélectionner tout - Visualiser dans une fenêtre à part shell "excel d:\invisible.xlsm /x"
@pierre
ta solution fonctionne nikel!!
j'ai un tout petit soucis avec
j'ai ajouté dans le userform en cas d'erreur un bouton pour afficher l'application parent du userform et non ca ne marche pas quand c'est lancé par le lanceur
j'ai essayé quand il est lancé du bureau ca fonctionne l'app redevient bien visible
je me pose donc la question:
n'y aura t-il pas un soucis d'acces au données des feuilles car visiblement on a pas acces a l'object application a partir du userform quand c'est lancé par le lanceur ?
edit:
apres test on a bien acces aux cellules et certaines propriétes de l'object application sauf "visible" bizare quand meme
edit2:
par contre on a toujours le meme soucis (a moitié tout du moins) le moindre evenement ou macro tournant dans le fichier lanceur reactive sa fenetre et donc le userform repasse en dessous
Oui cela me convient parfaitement, et je ne savais pas que c'était possible.
je n'enregistre pas le classeur à la fermeture, les données sont déjà exporter dans un fichier txt et importer a l'ouverture du fichier
Oui je vote oui pour cela ! cela fonctionne hyper bien !
Cela est une bonne idée cependant je n'ais pas précisé que je navigue entre plusieurs Userform et donc j'ouvre et je ferme les userform entre eux, si je sais ca ici dans que je vais changer d'userform celui-ci va quitter l'application et donc fermer l'userform.
Que pense tu de placer ca dans tout les boutons quitter des userform (sachant que la crois est désactiver).
J'ai effectuer ce procédé et cela fonctionne parfaitement. Cependant mon fichier pourras être ouvert par de nombreux poste, est t'il possible de précisé au raccourcie un genre depour qu'il penne lui même l'emplacement de Excel et du coup rendre impossible l'erreur de ne pas trouver Excel ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part application.path
Oui effectivement il va falloir que je bétonne le code, as-tu des proposition à me faire pour vérifier que le fichier ne soit pas déjà ouvert et que si il est déjà ouvert alors il le ferme.
Merci pour l'information, dans le processus d'ouverture personne iras ouvrir le fichier sources sans le raccourcie.
Merci pour l'information, c'est tellement simple que je ne l'ai pas trouver avant, j'ai trouver juste du compliqué xD.
Merci si il n'y a pas de solution pour le raccourci je ferais mon exécuteur. Encore merci à toutes les personnes qui on participer à la discussion. et tout particulièrement a Pierre Fauconnier.
Ps armi je tiens a te dire que j'ai pris tes remarque en compte, mon fichier n'influence pas les autre fichier Excel, c'est juste que dans la même instance le formulaire block l'acces au fichier Excel.
Cordialement,
Passepartout007
Bonjour passe partout
j'attire ton attention sur le probleme de hierarchie de fenetre
la methode de pierre fonctionne tres bien pour ce qui est d'ouvrir le userform dans une autre instance mais le moindre mouvement d'une autre fenetre quelconque ou macro tournant sur un eventuel autre classeur ouvert te fera disparaitre le userform en arriere plan
je maintient que:
si tu n'utilise pas d'api pour forcer ce userform au premier plan tu aura des désagrément
demonstration
cela dit pour transformer excel en pseudo "exe" j'entends par la que l'application soit invisible et ne laisse que le userform visible l'histoire du raccourci m'a seduit donc merci pierre
Re Patricktoulon
C'est toujours un plaisir d'échanger avec toi.
Je souhaite te demander, en quoi cela gêne que le formulaire puisse être en fond ? Pour y accéder a nouveau il suffira de réduire ou de déplacer les autres fenêtré.
Si tu pense à des problème technique n'hésite pas de me faire un retour.
Cordialement,
Passepartout007
Ca n'a pas beaucoup de sens de vouloir garder une userform devant. Le fait qu'il passe en arrière plan est tout à fait normal. C'est le comportement habituel des applications sous Windows, celle active passant devant les autres. Ca ne sert à rien de compliquer cela avec des api. Le seul problème, c'est que comme il est invisible sur la barre des tâches, on ne sait pas le réactiver facilement. Mais on ne peut pas avoir le beurre et l'argent du beurre. Maintenir tout le temps ce userform à l'avant-plan est évidemment handicapant pour l'utilisateur s'il veut le garder ouvert mais aller dans une autre fenêtre. De grâce, ne compliquons pas encore les choses.
Pour les autres questions, je pense qu'il faut un point d'entrée et un point de sortie, et que le userform ouvert au début doit rester ouvert tout le temps de l'utilisation de l'appli. Après, que tu ouvres d'autres userforms, pas de soucis, mais sans fermer celui-là. Et pour fermer l'appli, il faudra revenir à celui-là.
Ce genre de montage est déjà suffisamment casse-gu**, pas besoin d'ajouter de la complexité, inutile en plus...
ben le probleme il est simple
imagine tu es en train de taper du texte dans les textboxs de ton userform pour une raison ou une autre dans un autre classeur tu a une macro qui tourne voir meme un activate ou select et je ne sais quoi d'autre
ou une autre application (logiciele) tournant en fond qui dans ces parametres prend le focus l'ors dun evenement quelconque
ben voila tu es en train de taper et ton userform se fait la male
alors oui c'est pas grave tu retourne le chercher mais quand ca va t'arriver 10 fois en moins d'une minute je crois que ta souris passe par fenetre
je te dis ca car je suis pas le dernier a utiliser des userforms en tant qu'applicatif visuel avec application excel masquée et tu peux me croire il n'y a rien de plus enervant que ce genre de désagrément meme si ca fait rire en tout cas pas longtemps
comme je l'ai montré plus haut dans la discussion je fait la meme chose sauf que mon userform je le perds jamais
libre a toi d'y ajouter les 2 boutons manquants et te servir du bouton reduire si entre temps tu veux travailler sur une autre fenetre ou application si par exemple tu voudrais faire des copier coller d'ailleur vers tes textboxs du userform
mais apartir du moment ou le userform est en show(vba ou api)c'est lui le maitre (coucouche panier gentil userform reste tranquille )
Bonjour Pierre Fauconnier,
Je te remercie pour tes conseil je vais les prendre en considération afin d'éviter les problèmes.
Cependant tu n'as pas relever ma question sur le chemin de l'application Excel qui peux différé entre plusieurs ordinateur, est t'il possible d'avoir un raccourcie qui trouve de lui même ou se trouve l'application Excel ?
Cordialement,
Passepartout007
Bonjour,
Quitte à utiliser des API, autant modifier le style du formulaire pour qu'il s'affiche dans la barre des tâches.
On peut également modifier l'icône.
Tout cela est sympathique mais on bricole le fonctionnement standard d'Excel et c'est sans garantie.
Sinon pour ouvrir Excel dans une nouvelle instance, je crée simplement une nouvelle application avec CreateObject
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager