Position UserFrom

Hulk

XLDnaute Barbatruc
Hello tout le monde :)

Voilà un petit souci sur lequel je tourne depuis un moment sans trouver la combine :mad:

J'ai un UserForm qui par défaut s'ouvre au centre de l'écran, et je souhaiterais pouvoir modifier cette position de départ si je clique sur un bouton...

Le mieux est de voir le fichier joint, ma demande est plus précise.

Merci d'avance pour votre aide !
 

Pièces jointes

  • Position Userform.xlsm
    22.6 KB · Affichages: 41
C

Compte Supprimé 979

Guest
Re : Position UserFrom

Salut Hulk ;)

Surtout ne te fâche pas ... :D

Pour ce que tu souhaites, il te faut enregistrer les coordonnées dans une feuille du classeur
Voir fichier joint

A+
 

Pièces jointes

  • Hulk_Position Userform.xlsm
    23.8 KB · Affichages: 55

Hulk

XLDnaute Barbatruc
Re : Position UserFrom

Hello Bruno :)

Impec Bruno !

Pourtant il me semblait avoir fait un truc du genre avec un Label invisible... sans réussite :rolleyes:

Bref, heureusement que t'es là :cool:

Merci encore et bon week à toi et tous !
 
C

Compte Supprimé 979

Guest
Re : Position UserFrom

Salut gilbert_RGI

Très très bonne idée ;)

Voici le code pour Mister Hulk
Code:
Option Explicit' Fonctions API pour lire et écrire dans les fichier INI
Public Declare Function GetPrivateProfileString Lib "kernel32" _
        Alias "GetPrivateProfileStringA" _
        (ByVal lpApplicationName As String, _
        ByVal lpKeyName As Any, _
        ByVal lpDefault As String, _
        ByVal lpReturnedString As String, _
        ByVal nSize As Long, _
        ByVal lpFileName As String) As Long


Public Declare Function WritePrivateProfileString Lib "kernel32" _
        Alias "WritePrivateProfileStringA" _
        (ByVal lpApplicationName As String, _
        ByVal lpKeyName As Any, _
        ByVal lpString As Any, _
        ByVal lpFileName As String) As Long

 Public Function EcrireIni(stFicIni As String, stSection As String, stKey As String, stValeur As String)
' Ecriture d'une valeur dans un fichier INI
' stSection est le la partie designée entre crochets ([option] par exemple)
' stKey est le nom de la clé à récupérer (COULEUR=... par exemple)
' stValeur est la valeur à stocker
  Dim FicIni As String, lgRep As Long
  FicIni = ThisWorkbook.Path & "\" & stFicIni
  ' Mise en place du buffer de lecture
  lgRep = WritePrivateProfileString(stSection, stKey, stValeur, FicIni)
  If lgRep <= 0 Then
    ' Erreur au niveau du fichier INI
    Dim iFile As Integer
    iFile = FreeFile
    Open FicIni For Output As #iFile
    Print #iFile, "[" & stSection & "]"
    Print #iFile, stKey & "=" & stValeur
    Print #iFile, Chr(10)
    Close #iFile
    'EcrireIni = "Erreur"
    Exit Function
  End If
End Function

Public Function LireIni(stFicIni As String, stSection As String, stKey As String)
' Lecture d'une valeur dans un fichier INI
' stSection est le la partie designée entre crochets ([option] par exemple)
' stKey est le nom de la clé à récupérer (COULEUR=... par exemple)
Dim stBuf As String, FicIni As String, lgBuf As Long, lgRep As Long
FicIni = ThisWorkbook.Path & "\" & stFicIni
' Mise en place du buffer de lecture
stBuf = Space$(255)
lgBuf = 255
lgRep = GetPrivateProfileString(stSection, stKey, "", stBuf, lgBuf, FicIni)
If lgRep <= 0 Then
    ' Erreur au niveau du fichier INI
    'LireIni = "Erreur"
    Exit Function
End If
LireIni = Trim$(Left$(stBuf, lgRep))
End Function

Pour tester
Code:
Sub Test()
  EcrireIni "Test.ini", "SECTION1", "Clé1", "Valeur1"
  MsgBox LireIni("Test.ini", "SECTION1", "Clé1"), vbInformation, "RESULTAT"
End Sub

A+
 
Dernière modification par un modérateur:

gilbert_RGI

XLDnaute Barbatruc
Re : Position UserFrom

pour la base des registres pas très compliqué non plus

pour la sauvegarde employer le mot : SaveSetting

pour la lecture : GetAllSettings

pour detruire une entrée ou toutes autres données : DeleteSetting

ces mots sont bien expliqués dans l'aide :cool:

attention tout de même
 

gilbert_RGI

XLDnaute Barbatruc
Re : Position UserFrom

Re, Slt Gilbert :)

Oula, binz tout ça...

Y a t-il un avantage probant à utiliser cette méthode plutôt que ta p'tite combine Bruno ?

pour les données dans la base des registres impliquent que le fichier soit ouvert sur l'ordi manipulant le fichier
pour les données sur un ini ou txt impliquent que le fichier suive le xl..
pour les données sur une page sup du fichier augmentent un peu le poids du fichier
 

Hulk

XLDnaute Barbatruc
Re : Position UserFrom

Re,

Ok merci Gilbert... Il y a aussi le fait qu'on ne peut, par mégarde, effacer les données sur la feuille...

J'verrais bien ce qui me convient le mieux.

Merci infiniment à vous deux !
 
C

Compte Supprimé 979

Guest
Re : Position UserFrom

Re,

L'utilisation d'un fichier INI est très simple et moins risqué (à mon gout)
Et pas de risque d'effacer les données, tu peux également masquer le fichier INI (propriété windows)

pour les données sur un ini ou txt impliquent que le fichier suive le xl..
Pas nécessairement, dans le code donné c'est le cas, mais le chemin d'accès peut-être tout autre
;)

A+
 
Dernière modification par un modérateur:

gilbert_RGI

XLDnaute Barbatruc
Re : Position UserFrom

un exemple

Code:
Sub ecrire_BR()
    SaveSetting "MyApp", "Startup", "Top_donnee", 75
    'SaveSetting "MyApp", "Startup", "Left_donnee", 50
End Sub
Sub lire_BR()
On Error GoTo suite
'HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MyApp\Startup
    MySettings = GetAllSettings(appname:="MyApp", section:="Startup")
    MsgBox MySettings(0, 1)
    MsgBox MySettings(1, 1)
    Exit Sub
suite:
    MsgBox "Pas de données"
End Sub
Sub detruit_entree_BR()
On Error Resume Next
    DeleteSetting "MyApp", "Startup"
    DeleteSetting "MyApp"
End Sub
:cool:
 

toune21

XLDnaute Impliqué
Re : Position UserFrom

Bonjour à tous,

Voilà j'ai un User juste pour visulaliser des codes.
Et j'ai ça avec mon bouton "visu des codes"

Private Sub CommandButton1_Click()
With UserForm1 ' position de l'userform dans la feuille saisie
.Show 0 ' permet de travaillé sur la feuille
.Left = 720 ' position à droite de la fenêtre
.Top = 120 ' position verticale de l'user par rapport à la feuille
End With
End Sub
Alors évidement je me suis un amusée à chercher les positions.
Si cela peut aider.

Amicalement
MM
 

gilbert_RGI

XLDnaute Barbatruc
Re : Position UserFrom

Bonjour à tous,

Voilà j'ai un User juste pour visulaliser des codes.
Et j'ai ça avec mon bouton "visu des codes"

Private Sub CommandButton1_Click()
With UserForm1 ' position de l'userform dans la feuille saisie
.Show 0 ' permet de travaillé sur la feuille
.Left = 720 ' position à droite de la fenêtre
.Top = 120 ' position verticale de l'user par rapport à la feuille
End With
End Sub
Alors évidement je me suis un amusée à chercher les positions.
Si cela peut aider.

Amicalement
MM

Ok mais c'est temporaire à la prochaine ouverture l'usf ne sera plus à la place après le déplacement :rolleyes:
 
Dernière édition:

Discussions similaires