Modification code - VBA

Bonjour le forum,

Je rencontre une difficulté à modifier mon code pour obtenir ce que je souhaite.

Je voudrais que lorsque je clic sur le bouton Modifier Min/Max de l'userform, ca demande un mot de passe pour pouvoir modifier les textsboxes ==> cette partie je l'ai réussie.

Cependant, je voudrais que lorsque ces textsboxes sont modifiées, qu'elles restent à la même valeur, c'est-à-dire que là dès que je ferme le fichier, les valeurs ne sont pas enregistrées et on est obligé de les re-rentrer. Or, le but c'est que ces valeurs peuvent être modifiées uniquement par les responsables, mais puissent rester pour que les opérateurs puissent les visualiser.

De plus, ces valeurs Min / Max devront se coller dans le fichier excel comme les autres valeurs que les opérateurs doivent rentrer. Normalement ca le fait déjà.

Je ne sais pas si j'ai été bien précis et clair dans ma demande, je reste à disposition pour des questions complémentaires.

Le fichier est en PJ,

10ts-dessus-24.xlsm (64.40 Ko)

Merci par avance pour toutes réponses ou pistes,

Cdlt

Bonjour,

les valeurs par défaut .Text sont initialisables dans vba directement sur la propriété.

Si elle est amenée à être modifiée, tu peux mettre la nouvelle valeur dans TextJableMax01.Tag, et la réinitialiser dans UserForm_Activate()
Si elle doit survivre à la fermeture du fichier, le plus simple est de sauvegarder dans une feuille Paramètres plutôt que .Tag.
eric

Bonjour Eric et merci pour ta réponse,

J'ai donc essayé dans un premier temps la méthode avec un fichier cacher.

Le code suivant m'indique une erreur :

Private Sub UserForm_Initialize()

TextMini = FeuilleCachée.Range("B1")

End Sub

Une idée ?

Si elle est amenée à être modifiée, tu peux mettre la nouvelle valeur dans TextJableMax01.Tag, et la réinitialiser dans UserForm_Activate()

Je suis pas certain d'avoir compris cette partie... Pour être certain que l'on parle de la même chose, j'ai que deux valeurs qui doivent être fixes (et modifiables par admin uniquement) :

image

Merci,

Cdlt,

Bonjour,

ci-jointe une proposition

14ts-dessus-24-1.xlsm (52.79 Ko)

Bonjour,

Merci thev pour la proposition.

J'ai essayé votre code, mais il a affiché une erreur à la validation.

J'ai pas mal travaillé sur le fichier depuis ce matin, et je pense avoir trouvé une solution. Je la partage avec vous, si cela peut vous être utile ....

N'hésitez pas à me donner votre avis, que ce soit sur l'éstétique ou point de vu sécurité (bien sur je vais protéger la feuillecachée ;))

10ts-dessus-24.xlsm (81.32 Ko)

Merci à vous deux pour votre aide et vos pistes,

Cdtl,

Bonjour, Arthur le problème de votre version c'est que vos paramètres

Public Declare Function FindWindowA Lib "user32" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Ne sont du coup utilisable que pour une version excel 32bits.

Bonjour Xmenpl,

J'ai effectivement rencontré ce problème sur d'autre PC ... en me demandant d'ou pouvait venir le problème. Y a-t-il un moyen de repasser en 64 bits ??

Merci,

Cdlt,

Edit : J'ai apporté une modification, peut être que ca peu fonctionner ... Pouvez-vous essayer ?

6ts-dessus-24.xlsm (74.65 Ko)

Merci,

Bonjour,

La version que j'ai fournie gère le 32 et le 64bits. Par ailleurs, je n'ai pas constaté d'erreur à la validation.

Je confirme je n'ai pas non plus de message erreur sur la version de Thev. ou alors je n'ai pas trouvé à quel moment ?

Quand aux déclaration de variable pour 32 ou 64 bits il faut utiliser PtrSafe au début et LongPtr à la fin pour la version 64.

Vous auriez alors un code dans le genre exemple :

#If VBA7 Or Win64 Then
Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As LongPtr)

#Else
Declare Sub keybd_event Lib "user32" ( _
        ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
        ByVal dwExtraInfo As Long)

#End If

Bonjour ,

il faut utiliser PtrSafe au début et LongPtr à la fin pour la version 64.


Oui.

Sauf que les variables de type Long en 32 bits ne sont pas toutes à convertir en LongPtr pour le 64 bits. En fait, seule les variables de type adresse (type HWND en C+) doivent l'être. C'est la difficulté de l'adaptation.

Rechercher des sujets similaires à "modification code vba"