je voulais savoir ce que vous connaissiez et ou utilisiez pour=20
enregistrer des param=E8tres VBA de fa=E7on =E0 les r=E9cup=E9rer =E0 la =
r=E9ouverture=20
du classeur. Sans passer par un fichier ext=E9rieur (pas de .ini ni de=20
base de registre)
Il y a bien s=FBr la solution de garder une feuille masqu=E9e et invisi=
ble=20
que le code =E9crit et lit =E0 l'insu de l'utilisateur. On pourrait=20
=E9ventuellement imaginer un UserForm maintenu masqu=E9 (ce qui revient u=
n=20
peu au m=EAme).
Je trouve un peu "lourd" d'ajouter =E0 un classeur de tels objets si=20
c'est juste pour enregistrer une ou deux variables simples.
y a-t-il donc des m=E9thodes "l=E9g=E8res" pour stocker =E7a dans le cl=
asseur=20
ou dans les modules VBA ? Quels moyens simples imaginer ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Hervé
Bonsoir abcd, Tu peux utiliser un ou plusieurs noms (Insertion|Nom|Définir...) mais avec la macro tu peux les cacher de façon à ce qu'ils soient invisibles dans la boite en question (Insertion|Nom|Définir...). Les valeurs sont stockées sous forme de String, si elles sont numériques, utilise la fonction Val() pour les convertir en nombre à la récupération. De cette façon, si tu as peu de valeurs ça peut être une bonne solution. Teste pour voir :
'variables publiques pour être utilisées partout Public Val1 As Double Public Val2 As String
Sub LireNom() Dim Nom As Name
'si le nom n'existe pas On Error Resume Next
'récupère la 1ère valeur dans 'la variable publique Val1 (Double) Set Nom = ThisWorkbook.Names("Valeur1") If Err.Number = 0 Then 'doit être converti en nombre avec Val() Val1 = Val(Right(Nom, Len(Nom) - 1)) End If
'récupère la 2ème valeur dans 'la variable publique Val2 (String) Set Nom = ThisWorkbook.Names("Valeur2") If Err.Number = 0 Then Val2 = Right(Nom, Len(Nom) - 1) End If
MsgBox Val1 * 10 & vbCrLf & Val2
End Sub
Sub AjoutModifNom() Dim valeur1 As Double Dim valeur2 As String valeur1 = 125.789 valeur2 = "Test"
'inscrit les valeurs dans des Noms cachés 'les valeurs sont inscrites sous forme de chaine 'pour les nombres, faire une convertion avec Val() 'False = invisible ThisWorkbook.Names.Add "Valeur1", valeur1, False ThisWorkbook.Names.Add "Valeur2", valeur2, False
End Sub
Sub SupprimerNom() Dim Nom As Name On Error Resume Next Set Nom = ThisWorkbook.Names("Valeur1") Nom.Delete Set Nom = ThisWorkbook.Names("Valeur2") Nom.Delete
End Sub
Hervé.
"abcd" a écrit dans le message news:
Bonjour aux programmeurs
je voulais savoir ce que vous connaissiez et ou utilisiez pour enregistrer des paramètres VBA de façon à les récupérer à la réouverture du classeur. Sans passer par un fichier extérieur (pas de .ini ni de base de registre)
Il y a bien sûr la solution de garder une feuille masquée et invisible que le code écrit et lit à l'insu de l'utilisateur. On pourrait éventuellement imaginer un UserForm maintenu masqué (ce qui revient un peu au même).
Je trouve un peu "lourd" d'ajouter à un classeur de tels objets si c'est juste pour enregistrer une ou deux variables simples.
y a-t-il donc des méthodes "légères" pour stocker ça dans le classeur ou dans les modules VBA ? Quels moyens simples imaginer ?
merci pour vos échanges
Bonsoir abcd,
Tu peux utiliser un ou plusieurs noms (Insertion|Nom|Définir...) mais avec
la macro tu peux les cacher de façon à ce qu'ils soient invisibles dans la
boite en question (Insertion|Nom|Définir...). Les valeurs sont stockées sous
forme de String, si elles sont numériques, utilise la fonction Val() pour
les convertir en nombre à la récupération. De cette façon, si tu as peu de
valeurs ça peut être une bonne solution. Teste pour voir :
'variables publiques pour être utilisées partout
Public Val1 As Double
Public Val2 As String
Sub LireNom()
Dim Nom As Name
'si le nom n'existe pas
On Error Resume Next
'récupère la 1ère valeur dans
'la variable publique Val1 (Double)
Set Nom = ThisWorkbook.Names("Valeur1")
If Err.Number = 0 Then
'doit être converti en nombre avec Val()
Val1 = Val(Right(Nom, Len(Nom) - 1))
End If
'récupère la 2ème valeur dans
'la variable publique Val2 (String)
Set Nom = ThisWorkbook.Names("Valeur2")
If Err.Number = 0 Then
Val2 = Right(Nom, Len(Nom) - 1)
End If
MsgBox Val1 * 10 & vbCrLf & Val2
End Sub
Sub AjoutModifNom()
Dim valeur1 As Double
Dim valeur2 As String
valeur1 = 125.789
valeur2 = "Test"
'inscrit les valeurs dans des Noms cachés
'les valeurs sont inscrites sous forme de chaine
'pour les nombres, faire une convertion avec Val()
'False = invisible
ThisWorkbook.Names.Add "Valeur1", valeur1, False
ThisWorkbook.Names.Add "Valeur2", valeur2, False
End Sub
Sub SupprimerNom()
Dim Nom As Name
On Error Resume Next
Set Nom = ThisWorkbook.Names("Valeur1")
Nom.Delete
Set Nom = ThisWorkbook.Names("Valeur2")
Nom.Delete
End Sub
Hervé.
"abcd" <temp.nospamdc2@gmail.com> a écrit dans le message news:
OvGwwqiiFHA.3656@TK2MSFTNGP09.phx.gbl...
Bonjour aux programmeurs
je voulais savoir ce que vous connaissiez et ou utilisiez pour
enregistrer des paramètres VBA de façon à les récupérer à la réouverture
du classeur. Sans passer par un fichier extérieur (pas de .ini ni de
base de registre)
Il y a bien sûr la solution de garder une feuille masquée et invisible
que le code écrit et lit à l'insu de l'utilisateur. On pourrait
éventuellement imaginer un UserForm maintenu masqué (ce qui revient un
peu au même).
Je trouve un peu "lourd" d'ajouter à un classeur de tels objets si
c'est juste pour enregistrer une ou deux variables simples.
y a-t-il donc des méthodes "légères" pour stocker ça dans le classeur
ou dans les modules VBA ? Quels moyens simples imaginer ?
Bonsoir abcd, Tu peux utiliser un ou plusieurs noms (Insertion|Nom|Définir...) mais avec la macro tu peux les cacher de façon à ce qu'ils soient invisibles dans la boite en question (Insertion|Nom|Définir...). Les valeurs sont stockées sous forme de String, si elles sont numériques, utilise la fonction Val() pour les convertir en nombre à la récupération. De cette façon, si tu as peu de valeurs ça peut être une bonne solution. Teste pour voir :
'variables publiques pour être utilisées partout Public Val1 As Double Public Val2 As String
Sub LireNom() Dim Nom As Name
'si le nom n'existe pas On Error Resume Next
'récupère la 1ère valeur dans 'la variable publique Val1 (Double) Set Nom = ThisWorkbook.Names("Valeur1") If Err.Number = 0 Then 'doit être converti en nombre avec Val() Val1 = Val(Right(Nom, Len(Nom) - 1)) End If
'récupère la 2ème valeur dans 'la variable publique Val2 (String) Set Nom = ThisWorkbook.Names("Valeur2") If Err.Number = 0 Then Val2 = Right(Nom, Len(Nom) - 1) End If
MsgBox Val1 * 10 & vbCrLf & Val2
End Sub
Sub AjoutModifNom() Dim valeur1 As Double Dim valeur2 As String valeur1 = 125.789 valeur2 = "Test"
'inscrit les valeurs dans des Noms cachés 'les valeurs sont inscrites sous forme de chaine 'pour les nombres, faire une convertion avec Val() 'False = invisible ThisWorkbook.Names.Add "Valeur1", valeur1, False ThisWorkbook.Names.Add "Valeur2", valeur2, False
End Sub
Sub SupprimerNom() Dim Nom As Name On Error Resume Next Set Nom = ThisWorkbook.Names("Valeur1") Nom.Delete Set Nom = ThisWorkbook.Names("Valeur2") Nom.Delete
End Sub
Hervé.
"abcd" a écrit dans le message news:
Bonjour aux programmeurs
je voulais savoir ce que vous connaissiez et ou utilisiez pour enregistrer des paramètres VBA de façon à les récupérer à la réouverture du classeur. Sans passer par un fichier extérieur (pas de .ini ni de base de registre)
Il y a bien sûr la solution de garder une feuille masquée et invisible que le code écrit et lit à l'insu de l'utilisateur. On pourrait éventuellement imaginer un UserForm maintenu masqué (ce qui revient un peu au même).
Je trouve un peu "lourd" d'ajouter à un classeur de tels objets si c'est juste pour enregistrer une ou deux variables simples.
y a-t-il donc des méthodes "légères" pour stocker ça dans le classeur ou dans les modules VBA ? Quels moyens simples imaginer ?
merci pour vos échanges
abcd
pour du texte, j'imagine qu'il faut aussi virer les guillemets Set Nom = ThisWorkbook.Names("Valeur2") Val2 = Mid(Nom, 3, Len(Nom) - 3)
mais je ne savais pas cette possibilité, c'est une première bonne i dée.
Un peu bidouille (la type de la variable n'est pas gardé) mais c'est déjà une méthode efficace pour de petite variables.
D'autres astuces ?
pour du texte, j'imagine qu'il faut aussi virer les guillemets
Set Nom = ThisWorkbook.Names("Valeur2")
Val2 = Mid(Nom, 3, Len(Nom) - 3)
mais je ne savais pas cette possibilité, c'est une première bonne i dée.
Un peu bidouille (la type de la variable n'est pas gardé) mais c'est
déjà une méthode efficace pour de petite variables.
pour du texte, j'imagine qu'il faut aussi virer les guillemets Set Nom = ThisWorkbook.Names("Valeur2") Val2 = Mid(Nom, 3, Len(Nom) - 3)
mais je ne savais pas cette possibilité, c'est une première bonne i dée.
Un peu bidouille (la type de la variable n'est pas gardé) mais c'est déjà une méthode efficace pour de petite variables.
D'autres astuces ?
anonymousA
bonjour,
Il te faut pour utiliser ces instructions une référence à Microsoft Visual Basic Extensibilty 3.5. une autre manière possible, c'est d'enregistrer dans un module bien précis de ton fichier des élements de variable, p.e ici dans le module2 a été enregistré la variable tataE ( à la ligne 3 du code dans le module2). Par l'instruction suivante ailleurs dans ton code, tu récupères la valeur 45 de la manière suivante
Ce n'est pas forcément la méthode la plus simple mais en dehors de casser le code VBA du projet, elle permet de rendre inaccessibles les données à contrario des méthodes de masquage de feuille ou de noms cachés dont la facilité d'accès par un code VBA ultrasimple est grande. Les valeurs peuvent changer ( utilisation de la métode find et Replaceline de la bibliothèque VBIDE.
A+
Bonjour aux programmeurs
je voulais savoir ce que vous connaissiez et ou utilisiez pour enregistrer des paramètres VBA de façon à les récupérer à la réouverture du classeur. Sans passer par un fichier extérieur (pas de .ini ni de base de registre)
Il y a bien sûr la solution de garder une feuille masquée et invisible que le code écrit et lit à l'insu de l'utilisateur. On pourrait éventuellement imaginer un UserForm maintenu masqué (ce qui revient un peu au même).
Je trouve un peu "lourd" d'ajouter à un classeur de tels objets si c'est juste pour enregistrer une ou deux variables simples.
y a-t-il donc des méthodes "légères" pour stocker ça dans le classeur ou dans les modules VBA ? Quels moyens simples imaginer ?
merci pour vos échanges
bonjour,
Il te faut pour utiliser ces instructions une référence à Microsoft
Visual Basic Extensibilty 3.5.
une autre manière possible, c'est d'enregistrer dans un module bien
précis de ton fichier des élements de variable, p.e ici dans le module2
a été enregistré la variable tataE ( à la ligne 3 du code dans le
module2). Par l'instruction suivante ailleurs dans ton code, tu
récupères la valeur 45 de la manière suivante
Ce n'est pas forcément la méthode la plus simple mais en dehors de
casser le code VBA du projet, elle permet de rendre inaccessibles les
données à contrario des méthodes de masquage de feuille ou de noms
cachés dont la facilité d'accès par un code VBA ultrasimple est grande.
Les valeurs peuvent changer ( utilisation de la métode find et
Replaceline de la bibliothèque VBIDE.
A+
Bonjour aux programmeurs
je voulais savoir ce que vous connaissiez et ou utilisiez pour
enregistrer des paramètres VBA de façon à les récupérer à la réouverture
du classeur. Sans passer par un fichier extérieur (pas de .ini ni de
base de registre)
Il y a bien sûr la solution de garder une feuille masquée et invisible
que le code écrit et lit à l'insu de l'utilisateur. On pourrait
éventuellement imaginer un UserForm maintenu masqué (ce qui revient un
peu au même).
Je trouve un peu "lourd" d'ajouter à un classeur de tels objets si
c'est juste pour enregistrer une ou deux variables simples.
y a-t-il donc des méthodes "légères" pour stocker ça dans le classeur
ou dans les modules VBA ? Quels moyens simples imaginer ?
Il te faut pour utiliser ces instructions une référence à Microsoft Visual Basic Extensibilty 3.5. une autre manière possible, c'est d'enregistrer dans un module bien précis de ton fichier des élements de variable, p.e ici dans le module2 a été enregistré la variable tataE ( à la ligne 3 du code dans le module2). Par l'instruction suivante ailleurs dans ton code, tu récupères la valeur 45 de la manière suivante
Ce n'est pas forcément la méthode la plus simple mais en dehors de casser le code VBA du projet, elle permet de rendre inaccessibles les données à contrario des méthodes de masquage de feuille ou de noms cachés dont la facilité d'accès par un code VBA ultrasimple est grande. Les valeurs peuvent changer ( utilisation de la métode find et Replaceline de la bibliothèque VBIDE.
A+
Bonjour aux programmeurs
je voulais savoir ce que vous connaissiez et ou utilisiez pour enregistrer des paramètres VBA de façon à les récupérer à la réouverture du classeur. Sans passer par un fichier extérieur (pas de .ini ni de base de registre)
Il y a bien sûr la solution de garder une feuille masquée et invisible que le code écrit et lit à l'insu de l'utilisateur. On pourrait éventuellement imaginer un UserForm maintenu masqué (ce qui revient un peu au même).
Je trouve un peu "lourd" d'ajouter à un classeur de tels objets si c'est juste pour enregistrer une ou deux variables simples.
y a-t-il donc des méthodes "légères" pour stocker ça dans le classeur ou dans les modules VBA ? Quels moyens simples imaginer ?