Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2011, 17h43   #1
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Par défaut Superposition de USF

Bonsoir,

Soit un fichier excel.
A l'ouverture, un USF1 s'affiche en non modal et en plein écran.
Par dessus USF1, USF2 s'affiche (pour demander un mot de passe).
Après validation de USF2, USF3 ou 4 s'affiche selon la réponse apportée en USF2.

Problème : parfois (c'est ce qui me parait bizarre), les USF3 ou 4 s'affiche sous le USF1.

J'ai tout essayé : masquer USF1 puis le réafficher et afficher par dessus USF3 ou 4, afficher directement par dessus USF3 ou 4, cacher en utilisant "hide", décharger en utilisant "load", ...

Bref c'est surtout le coté aléatoire qui me semble pas net.

Une solution ?

Merci
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 20h21   #2
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu...!!!

bonjour

il y a plusieur facon de faire mais certaines sont tres complexe

la solution la plus simple comme ca vite fait serait d'utiliser les apis

connais tu l'utilisations des apis (utilisation de librairie de dll)

il y en a une qui pourrais faire ton affaire
c'est la user32.dll(librairie concernant l'affichage des fenetres)

Citation:
donc il faut determiner le handle(poignée de la fenetre )
pour cela on utilisera l'api "findwindow"
Citation:
ensuite il nous faut afficher le usf 1 en plein ecran
pour cela on utilisera le "showwindow"
Citation:
ensuite pour que les usf 2,3et 4 ne se retrouvent pas en dessous le usf 1
il faut rendre le usf1 papa de tout les autres
pour cela on utilisera le setparent
voici en piece jointe un exemple que j'ai fait en fonction de ta demande
a toi d'adapter l'appel de la macro a ton mot de passe

moi je me suis simplement servi de deux boutons dans le userfom2

ensuite on regle le probleme du usf 1 pour que l'on ne puisse plus le reduire
(qu'il reste en plein ecran )
la solution c'est de bloquer le sysmenu(sa caption et son bouton )
pour cela on aura besoin de getsystemmenu et de deletemenu

voila allez un exemplaire sera plus parlant

en esperant que ca te soit utile et que tu en comprenne le code

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 20h36   #3
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Bonsoir,

Merci pour la réponse. Je connais très peu les apis (jamais utilisé, juste entendu parler).
Je ne peux pas essayer ce soir je n'ai pas de pc avec moi.

Cependant, entre temps, j'ai trouvé d'où venait le problème :
Quand je valide le USF2 en cliquant avec la souris le bug se produit.
Quand je valide avec la touche "entrée" tout fonctionne correctement.

Une idée de la source du problème ?

Merci
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 20h41   #4
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut re

oui

c'est ce que je disais précédemment
quand tu clique sur un control dans un userform c'est celui ci qui prend le focus forcement

récupère mon exemple ,essaie le,li le code tu va comprendre il est relativement simple


bonne utilisation

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 21h47   #5
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Une autre solution serait de mettre l'intégralité de ce que contient ton UserForm dans un composant Cadre (possible de supprimer l'encadrement et le caption pour que seul le composants qu'il contient soient visibles). On va l'appeler FrameGlobal dans la suite.
Celui-ci fera donc la taille du UserForm.

Ensuite tu crées un autre Cadre, appelons-le FramePassWord, plus petit et qui contient les éléments qui se trouvent actuellement dans ton USF2. Tu définies sa propriété Visible à False pour l'instant.

Lors de l'utilisation de ton UserForm, lorsque tu souhaites demander un mot de passe, tu passes FrameGlobal à visible False et FramePassWord à visible True.

Tu fais pareil avec tes USF3 et 4 que tu remplaces par des Cadres dans ton USF1, c'est simple et rapide.

Si tu es intéressé mais que mes explications ne sont pas suffisamment claire, fait signe.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/11/2011, 23h08   #6
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Citation:
A l'ouverture, un USF1 s'affiche en non modal et en plein écran.
tu as besoin d'un mode non modal car tu veux que les utilisateurs puissent écrire sur le feuille direct (bien que plien écran = ?) ou pour quelle raison ?

cordialement,

Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

Didier

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 09h27   #7
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Bonjour,

En fait, j'ouvre un USF en plein écran pour éviter que les utilisateurs aient accès à la feuille. C'est une protection en quelque sorte.

Quand je mets ce code :
Code :
1
2
3
 
userform1.show
userform2.show
Je dois fermer le USF1 pour que USF2 s'affiche.

Si je mets ce code :
Code :
1
2
3
 
userform1.show 0
userform2.show
Ca fonctionne bien mais pas pour les autres USF si je valide le USF2 avec la souris (voir plus haut).

Je vais voir haut.

Je vais regarder pour les solutions proposées plus haut.

Jusqu'à lors je n'utilisais pas les API parce qu'il me semble que ça pose problème si on passe d'une version office à une autre non ?

Merci
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 09h39   #8
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Citation:
En fait, j'ouvre un USF en plein écran pour éviter que les utilisateurs aient accès à la feuille. C'est une protection en quelque sorte.
Ce n'est pas fait pour ça

Avant de bricoler les API, testes avec tes USF en modal et en jouant sur Hide, Unload, Show et Load => facile et stable en comparaison.

Pour éviter les accès, tu crée une Feuille "de garde" avec juste un titre / logo dessus et tu interdit l'accès aux autres etc.



Cordialement,

Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 10h22   #9
Invité régulier
 
Inscription : février 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 50
Points : 7
Points : 7
Citation:
Envoyé par Ormonth Voir le message
Bonjour,


Avant de bricoler les API, testes avec tes USF en modal et en jouant sur Hide, Unload, Show et Load => facile et stable en comparaison.
J'ai essayé ce genre de manip' (avec le USF de protection) mais ça ne fonctionne pas quand on clique avec la souris.

Citation:
Envoyé par Ormonth Voir le message
Pour éviter les accès, tu crée une Feuille "de garde" avec juste un titre / logo dessus et tu interdit l'accès aux autres etc.
N'étant pas un as du vba je vais plutôt me tourner vers cette solution.
Par contre, comment supprimer le cadre noir qui entoure la cellule active ? (je dis bien ne pas afficher le cadre et non les bordures).

Merci
AidezMoiSvp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 10h51   #10
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

tu te fais une page de garde (cf image jointe sur aplli de ventilation de données d'import).
  • le fond visible est une image sans bord
  • tu la décales et sélectionnes B3
  • tu places ton image en haut à gauche
  • tu protège ta feuille sans aucune option permissive
  • tu gères le reste pas code
Le but est de protéger l'utilisateur contre les fausses manip, après il fait son boulot qui consiste à utiliser les données et pas à rechercher une solution pour faire détourner ton truc, ce qui restera toujours possible


Cordialement,

Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

Didier
Images attachées
Type de fichier : jpg Ventilo-DG.jpg (38,2 Ko, 4 affichages)
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 11h27   #11
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut re

bonjour a tous

je suis assez d'accord avec qwazerty

tu met ton usf 1 en plein ecran

tu y met 1 frame nommée par exemple "mot_de_passe" visible avec les control correspondant a ceux du usf2

et deux autre correspondant au usf3 et usf4 avec tout leur controls

au clic de ceux ci rendre visible la frame "frame3" ou "frame4" visible

beaucoup moins compliqué car la plus besoins d'apis et qu'un seul usf

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h45.


 
 
 
 
Partenaires

Hébergement Web