XL 2010 Resolu par PierreJean : UserForm Ouverture calendrier à côté de la textbox "cliquée"

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Je suis en plein dans mon premier UserForm.
J'ai bien avancé et, toujours grâce à vous, j'ai ajouté des fonctionnalités et surtout, j'ai compris vos codes.

Pour un meilleur confort de saisie, Je souhaite que le calendrier s'ouvre à côté de la textbox "cliquée" :
Angle haut/gauche du calendrier là où il y a les croix).
Vous le verrez en ouvrant ma pièce jointe.

Mes recherches ne m'ont pas permis de trouver comment modifier le code du calendrier de Roland.

Si vous pouviez me dire comment faire ..... :)
Avec mes remerciements,
Je vous souhaite à toutes et à tous une super journée,
Amicalement,
Lionel,
 

Pièces jointes

  • FormulairetestForum (1).xlsm
    93.2 KB · Affichages: 65

Si...

XLDnaute Barbatruc
Allo,
avec
VB:
Sub LECTURE()
With UserForm1
.ComboBox8.Enabled = False
.TextBox2.Enabled = False
.TextBox4.Enabled = False
.TextBox5.Enabled = False
.TextBox7.Enabled = False
.B_Modifier.Visible = True
End With
End Sub
il faut savoir que la propriété Enabled permet d’utiliser ou pas le contrôle. : à False ou 0, blocage et à True ou 1, déblocage. A toi de changer ;)!
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Dans mon calendrier j'ai mis une méthode Posit. La voici :
VB:
Public Sub Posit(ByVal O As Object, Optional ByVal X As Double, Optional ByVal Y As Double)
Rem. ——— Vous pouvez au préalable positionner l'UserForm par rapport à quelque chose.
'  O: Ce par rapport à quoi vous voulez le positionner. X et Y indiqueront comment :
'  X: -1: Collé au coté gauche, 0: Centré horizontalement, 1: Collé au coté droit.
'  Y: -1: Collé au bord supérieur, 0: Centré verticalement, 1: Collé juste en dessous.
'  D'autres valeurs entraineront un recouvrement partiel ou un certain éloignement.
'  Mais rien ne vous empêche de rectifier encore ensuite la propriétés Left ou Top
'  de l'UFmCalend pour ajouter un interstice en points au bord de l'objet.
Dim U As Object, G As Double, D As Double, H As Double, B As Double, K As Double, Z As Double
If TypeOf O Is MSForms.Control Then
  G = O.Left: H = O.Top: Set U = O.Parent
  Do: K = (U.Width - U.InsideWidth) / 2
     G = G + U.Left + K: H = H + U.Top + U.Height - U.InsideHeight - K
     If Not TypeOf U Is MSForms.Frame Then Exit Do
     Set U = U.Parent: Loop
  D = G + O.Width: B = H + O.Height
Else
  Z = ActiveWindow.Zoom / 100
  K = GetDeviceCaps(GetDC(0), 88) / 72
  G = ActiveWindow.PointsToScreenPixelsX(O.Left * K * Z) / K
  D = ActiveWindow.PointsToScreenPixelsX((O.Left + O.Width) * K * Z) / K
  K = GetDeviceCaps(GetDC(0), 90) / 72
  H = ActiveWindow.PointsToScreenPixelsY(O.Top * K * Z) / K
  B = ActiveWindow.PointsToScreenPixelsY((O.Top + O.Height) * K * Z) / K
  End If
Me.Left = (X * (D - G + Me.Width + 6) + G + D - Me.Width - 6) / 2 + 3
Me.Top = (Y * (B - H + Me.Height + 6) + H + B - Me.Height - 6) / 2 + 3
End Sub
Avec en tête :
VB:
Private Declare PtrSafe Function GetDC& Lib "user32.dll" (ByVal hWnd&)
Private Declare PtrSafe Function GetDeviceCaps& Lib "gdi32" (ByVal hDC&, ByVal nIndex&)
 

Pièces jointes

  • MonCalenMORISS.xlsm
    43.8 KB · Affichages: 69

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Pierre-Jean,
Bonjour à toutes et à tous,

Je reviens sur le sujet car je m'aperçois que la seconde date ne s'enregistre pas sur la feuille excel.
J'ai tenté de chercher, mais en vain, je ne vois pas ce qui ne va pas.
Si vous aviez la solution, ça m'arrangerait bien LOL
Je joins le classeur test.

Un grand merci comme d'habitude.
Amicalement,
Lionel,
 

Pièces jointes

  • FormulairetestForum.xlsm
    98.1 KB · Affichages: 38

pierrejean

XLDnaute Barbatruc
Re

Voila

Sub ENREGISTRER()
With UserForm1

Cells(1 + CURREG, 6) = .ComboBox8.Value

Cells(1 + CURREG, 2) = .TextBox2.Value
Cells(1 + CURREG, 4) = .TextBox4.Value
Cells(1 + CURREG, 5) = .TextBox5.Value
Cells(1 + CURREG, 7) = CDate(.TextBox7.Value)
Cells(1 + CURREG, 8) = CDate(.TextBox9.Value)


DoEvents

.Label10.Caption = [NBEnr]
.Label82.Caption = Cells(1 + CURREG, 1)

.B_Modifier.Visible = False

End With
 

Discussions similaires