userform

  • Initiateur de la discussion David
  • Date de début
D

David

Guest
Salut le forum

Peut-on afficher un userform sans qu'il ne bloque la feuille .
Je voudrais que l'userform soit affiché et que je puisses travailler sur la feuille.

@+ david
 
M

michel

Guest
bonjour David

si tu utilises Excel97 , tu peux ecrire

'stephen Bullen Excel97
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function EnableWindow Lib "User32" _
(ByVal hWnd As Long, ByVal bEnable As Long) As Long

Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Sub UserForm_Activate()
EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub

Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
End Sub



pour les versions ulterieures d'Excel …. c'est plus simple

Sub lanceUSF()
UserForm1.Show 0
End Sub



bonne soirée
michel
 
E

Eric C

Guest
Bonjour le forum
Bonjour David, bonjour Michel

Michel, je me permet de te solliciter. Je suis sous XL97 au bureau et ai essayé ton code. Il me permet de déplacer mon USF mais je ne peux pas travailler sur mon projet comme par exemple sélection d'un item dans une liste de validation. Ou alors je n'ai pas placé le code au bon endroit.
Je désirerai afficher un USF déplaçable qui, à l'aide de labels, donne la marche à suivre pour débuter dans un fichier. Lorsque l'utilisateur a saisi la manoeuvre, il quitte en disant de ne plus afficher la prochaine fois en cochant un checkBox (Ca je ne vois comment faire). Puis, tant que j'y suis peut on aller à la ligne dans un label comme l'on fait dans une cellule Alt Enter ?

Te remerciant d'avance de ta compréhension.
@ ++ Eric C
 
M

michel

Guest
bonsoir Eric

sous excel 97 , les actions dans la feuille sont un peu limitées lors de l'affichage d'un USF non modal , mais normalement il n'y a pas de soucis pour acceder aux listes deroulantes
( voir l'exemple dans le classeur joint )

pour aller à la ligne dans un Label il faut utiliser Ctrl + Entrée

j'ai mis un exemple dans l'USF pour ne plus le réafficher , si le checkbox est coché

si ton USF s'affiche lors de l'ouverture du classeur tu peux utiliser

Dim Debut As Integer, Lignes As Integer
If CheckBox1 = True Then
With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").codemodule
Debut = .ProcStartLine("Workbook_Open", 0)
Lignes = .ProcCountLines("Workbook_Open", 0)
.DeleteLines Debut, Lignes
End With
End If



bonne soiree
michel
 
E

Eric C

Guest
Bonjour le Forum
Bonjour Michel

Je te remercie énormément de ton aide apportée. Désolé de ne pas avoir répondu plus tôt. Je testerai ton fichier dès jeudi (repos mardi mercredi).
Encore un grand merci de ta promptitude et de ton soucis de vouloir aider les personnes soucieuse de vouloir aller de l'avant.
@ ++ Eric C
 
E

Eric C

Guest
Bonjour le forum
Bonjour Michel

2péccable ton fichier ainsi que ton USF. Je me permets à nouveau une question : Dans ton USF (Case à cocher) tu fais référence à Rectangle 3 ?
D'après quel critère le chiffre 3 est-il attribué ?

Merci d'avance
@ ++ Eric C
 
M

michel

Guest
bonsoir Eric

à chaque fois que tu créées une forme automatique , un numero d'incrementation est attribué , "rectangle 1" , "rectangle 2" ...etc... quand tu cliques sur la forme tu peux voir son appellation dans la zone de nom , en haut à gauche dans les barres d'outils et de menus excel

dans mon fichier est indiqué "rectangle 3" , car j'avais testé différentes méthodes avant d'envoyer le classeur


bonne soiree
michel
 

Discussions similaires

Statistiques des forums

Discussions
312 194
Messages
2 086 069
Membres
103 110
dernier inscrit
Privé