Faire déplacer des objets avec les barres de difilement
12 réponses
Apitos
Bonjour =E0 tous,
Est-il possible d'avoir dans une feuille Excel, des objets qui se
d=E9placent avec les barre d'outils tels que des boutons, commentaires,
zones de texte ou info bulles et dans lesquels il y'a des formules par
exemple ?
Supposons un Userform avec un Label que l'on initialise avec le contenu en formule de A1 voici deux versions (la seconde est pour 97 où le userform n'est pas directement utilisable en non modal)
'''Version pour Excel 2K ou+
'''Code Userform1 Private Sub UserForm_Initialize()
Me.StartUpPosition = 3 Me.Left = 450 Me.Top = 250 Label1 = Feuil1.[a1].formula End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''' '''dans Thisworkbook
Private Sub Workbook_Open() Feuil1.Activate UserForm1.Show 0 End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''' '''code de Feuil1
Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, [a1]) Is Nothing Then Unload UserForm1 Call toto End If End Sub
Private Sub toto() UserForm1.Show 0 End Sub ''''''''''''''''''''''''''''''''''''''''''''''''
'Version pour Excel97
'''''''''Code Userform
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
Me.StartUpPosition = 3 Me.Left = 450 Me.Top = 250 Label1 = Feuil1.[a1] End Sub ''''''''''''''''''''''''''''''''''''''''''''
'''dans Thisworkbook
Private Sub Workbook_Open() Feuil1.Activate UserForm1.Show End Sub '''''''''''''''''''''''''''''''''''''''''' '''code de Feuil1
Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, [a1]) Is Nothing Then Unload UserForm1 Call toto End If End Sub
Private Sub toto() UserForm1.Show End Sub '''''''''''''''''''''''''''''''''''''''''''''''''''''''
On 29 sep, 11:44, Apitos wrote:
Bonjour LSteph,
> Utilises un userform non modal, ainsi il restera toujours à sa place > dans l'écran (place que tu peux déterminer)
As-tu un exmple ?
> >Au fait je ne sui pas un fumeur ... > moi non plus enfin depuis qqs années, mais rieur, oui je le reste! > ;-)
Même caractère à peu près ::)
Supposons un Userform avec un Label que l'on initialise avec le
contenu en formule de A1
voici deux versions (la seconde est pour 97 où le userform n'est pas
directement utilisable en non modal)
'''Version pour Excel 2K ou+
'''Code Userform1
Private Sub UserForm_Initialize()
Me.StartUpPosition = 3
Me.Left = 450
Me.Top = 250
Label1 = Feuil1.[a1].formula
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''
'''dans Thisworkbook
Private Sub Workbook_Open()
Feuil1.Activate
UserForm1.Show 0
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''
'''code de Feuil1
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, [a1]) Is Nothing Then
Unload UserForm1
Call toto
End If
End Sub
Private Sub toto()
UserForm1.Show 0
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''
'Version pour Excel97
'''''''''Code Userform
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
Supposons un Userform avec un Label que l'on initialise avec le contenu en formule de A1 voici deux versions (la seconde est pour 97 où le userform n'est pas directement utilisable en non modal)
'''Version pour Excel 2K ou+
'''Code Userform1 Private Sub UserForm_Initialize()
Me.StartUpPosition = 3 Me.Left = 450 Me.Top = 250 Label1 = Feuil1.[a1].formula End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''''' '''dans Thisworkbook
Private Sub Workbook_Open() Feuil1.Activate UserForm1.Show 0 End Sub ''''''''''''''''''''''''''''''''''''''''''''''''''' '''code de Feuil1
Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Not Intersect(Target, [a1]) Is Nothing Then Unload UserForm1 Call toto End If End Sub
Private Sub toto() UserForm1.Show 0 End Sub ''''''''''''''''''''''''''''''''''''''''''''''''
'Version pour Excel97
'''''''''Code Userform
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