Alternative à SaveSetting et GetSetting

Cédric06400

XLDnaute Nouveau
Bonjour à tous,

En préambule, je vous demande de l'indulgence, je suis novice en VBA, j'ai débuté mon apprentissage il y a quelques semaines.
J'ai mis à profit ce temps "perdu" (le confinement) pour créer un fichier Excel avec quelques UF qui doit me servir à prendre des RDV quand mes clients me contactent.
Mon "programme" fonctionne à merveille mais ...

J'ai mal compris la fonction SaveSetting, en effet je l'utilise pour mémoriser les choix, valeurs des objets de mes UF.

Ce que je n'ai pas compris ou mal compris c'est que le SaveSetting est propre à Excel et non au nom du fichier.
Si je résume les paramètres sauvegardés sont les derniers sauvegardés meme si je change de nom du fichier.

Ce que j'aimerai c'est que chaque RDV soit enregistré sous un nom disting et que je puisse retrouver mes paramètres lors d'une ouvertures ultérieure.

Le code que j’utilise en simplifiant est

Option Explicit
'Optionbuttons
Dim etatoptionOP1 As String
'Paramettre"
Dim Etattest As String
'
'
'
Private Sub Userform_QueryClose(Cancel As Integer, CloseMode As Integer)
'SaveUF1
UnHookMouse
Unload Me
End Sub
'
'
'
Private Sub UserForm_initialize()
Ouverture
If etatoptionOP1 = "Vrai" Then
OptionButton1.Value = True
End If
End Sub
'
'
'
Private Sub 'SaveUF1()

If OptionButton1.Value = True Then
SaveSetting appname:="MyApp", section:="UF1OptionButton1", _
Key:="etatoptionOP1", setting:="Vrai"
SaveSetting "MyApp", "UF1OptionButton1", "etatoptionOP1", "Vrai"
Else
SaveSetting appname:="MyApp", section:="UF1OptionButton1", _
Key:="etatoptionOP1", setting:="Faux"
SaveSetting "MyApp", "UF1OptionButton1", "etatoptionOP1", "Faux"
End If
End Sub
'
'
'
Private Sub Ouverture()
'OP1
etatoptionOP1 = GetSetting(appname:="MyApp", section:="UF1OptionButton1", _
Key:="etatoptionOP1")
End Sub
'
'
'
Private Sub OptionButton1_Click()
'Choix d'onneur d'ordre agence'
If Controls("OptionButton1").Value = True Then
RAZDonneurdordreliste
[Formulaire!B1] = "Agence"
End If
End Sub


Mes questions sont les suivantes :
Peut-il y avoir un SaveSetting pour chaque fichier ?
Si non puis-je me servir du "section " pour y mettre des Key de plusieurs dossiers ?
Pouvez vous m'aider ;)

Merciiii d'avance
Cédric
 

Cédric06400

XLDnaute Nouveau
Bonjour à tous,
Si j'ai compris
voici avec un code tout simple
les valeurs sont misent en ligne 1
Nombre de contrôls indifférents
Bruno
Bonjour Bruno,
En effet ta solution est simple et efficace.
Mais j'ai une erreur d'exécution 438 quand je l'applique à mon fichier.
(j'ai importé un UF simple de mon fichier pour tester).
Peux*tu m'éclairer ?
Merci
 

Pièces jointes

  • Test simple (6).xlsm
    32.4 KB · Affichages: 4

Cédric06400

XLDnaute Nouveau
Du coup, le détail avec type et nom t'intéresse ou juste la valeur te suffit ?
Hello,
J'ai bien compris les erreurs de mes codes.
J'adore ton dicton
En essayant continuellement, on finit par réussir.
Donc : plus ça rate, plus on a de chances que ça marche.(les Shadoks)


Dans un premier temps pour simplifier et m'éviter de lister tous les contrôles des mes USF je vais essayer la méthode de Bruno. Méthode qui si elle s'applique à mon fichier devrait me suffir. Je ne pense pas avoir besoin des détails avec les Types.

Merci
 

Cédric06400

XLDnaute Nouveau
Re,
Je cherchait ce matin pourquoi la solution de Bruno ne fonctionne pas avec mon fichier, il y a une erreur d'exécution 438.
En réalisant des test j'ai compris que son code ne fonctionne pas quand il y a des frames.
Certains de mes contrôles sont dans des frames.

Quelqu'un aurait'il une idée me débloquer?

J'ai bien lu quelque chose avec me.fram.controls mais je ne sais pas comment le coder.

Private Sub CommandButton1_Click()
'bouton test
For Each c In Me.Controls
i = i + 1
Cells(2, i) = c.Value
Next
End Sub

Private Sub UserForm_initialize()
For Each c In Me.Controls
i = i + 1
c.Value = Cells(2, i)
Next
End Sub

Merciiiii
 

Cédric06400

XLDnaute Nouveau
Bonjour,
Tu as de la chance j'ai rien à faire.
Voici un fichier exemple je viens de voir pour les frames et chez moi aucun PB
J'ai mis des explications
Bruno
Merci Ton fichier fonctionne parfaitement.
J'ai adapter ton code pour supprimer le SpinButton1. Cela fonctionne parfaitement sur ton UF.

Private Sub CommandButton1_Click()
'bouton valide
'lig = Me.SpinButton1.Value
For Each c In Me.Controls 'boucle à next sur tout controls
If c.Tag <> "" Then
i = i + 1
Cells(2, i) = c.Tag 'm'en suis servis 1 fois
Cells(2, i) = c.Value
End If
Next
End Sub

Private Sub UserForm_Initialize()
'lig = Me.SpinButton1.Value
For Each c In Me.Controls
If c.Tag <> "" Then 'si le control n'a rien en .tag on saute
i = i + 1 'incrémente i qui sera la colonne
c.Value = Cells(2, i) 'lig=ligne et i la colonne
End If
Next
Rows(2).Select
'si on est en derligne +1 on affiche Nouveau
'Label1.Caption = IIf(lig = Me.SpinButton1.Max, "NOUVEAU", "")
End Sub

Mais dès que je transpose ton code à mon UF cela merde. Pourtant c'est exactement le meme code. Il doit y avoir dans mon UF un truc qui bloque, je m'arrache les cheveux ;)

Merci d'avoir passé du temps pour moi.

Je vais me rabattre et essayer de coder la solution d'Eric.

Bien à toi
 

Pièces jointes

  • Test simple (7).xlsm
    23.3 KB · Affichages: 4

eriiic

XLDnaute Barbatruc
Bonjour à tous,

ma version revue ;-)
Je fais les Frame et les MultiPage, pb encore pour TabStrip
Je n'ai fait que la sauvegarde pour te donner un aperçu. La restauration est simple
eric

Edit : fichier supprimé, voir post #28
 
Dernière édition:

Discussions similaires

H
Réponses
19
Affichages
6 K

Statistiques des forums

Discussions
312 203
Messages
2 086 183
Membres
103 152
dernier inscrit
Karibu