Sauvegarde de variable interne à excel

  • Initiateur de la discussion Initiateur de la discussion Joue
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Joue

Guest
Bonjour,
J'ai un petit soucis avec Excel,
J'aimerais avoir 2 macros : une pour sauvegarder, l'autre pour charger mes données.

J'ai plusieurs centaines de variables que j'entre lors d'une saisie, j'aimerais pouvoir les récupérer lors d'une nouvelle ouverture du fichier : comment puis je faire ?

Mes varable sont du type :

Type Piece
Name As String
Indice As Integer
StockReel(1 To 52) As Double
IntCmd(1 To 52) As Double
IntFab(1 To 52) As Double
StockVirt(1 To 52) As Double
End Type

Dim ReferenceSQ(1 To 200) As Piece

For I = 6 To FinLigneNom
ReferenceSQ(N).Name = Worksheets(Nomenclature).Cells(I, 1)
ReferenceSQ(N).Indice = Worksheets(Nomenclature).Cells(I, 2)
ReferenceSQ(N).StockReel(Semaineactuelle) = Worksheets(Nomenclature).Cells(I, 18)
ReferenceSQ(N).StockVirt(Semaineactuelle) = ReferenceSQ(N).StockReel(Semaineactuelle)

For Semaine = Semaineactuelle To Semaineactuelle + 6
ReferenceSQ(N).StockReel(Semaine) = ReferenceSQ(N).StockReel(Semaineactuelle)
ReferenceSQ(N).StockVirt(Semaine) = ReferenceSQ(N).StockVirt(Semaineactuelle)
Next Semaine

N = N + 1
Next I
End If


Merci
 
Re : Sauvegarde de variable interne à excel

Bonjour,
J'ai un petit soucis avec Excel,
J'aimerais avoir 2 macros : une pour sauvegarder, l'autre pour charger mes données.

J'ai plusieurs centaines de variables que j'entre lors d'une saisie, j'aimerais pouvoir les récupérer lors d'une nouvelle ouverture du fichier : comment puis je faire ?

Mes varable sont du type :

Type Piece
Name As String
Indice As Integer
StockReel(1 To 52) As Double
IntCmd(1 To 52) As Double
IntFab(1 To 52) As Double
StockVirt(1 To 52) As Double
End Type

Dim ReferenceSQ(1 To 200) As Piece

For I = 6 To FinLigneNom
ReferenceSQ(N).Name = Worksheets(Nomenclature).Cells(I, 1)
ReferenceSQ(N).Indice = Worksheets(Nomenclature).Cells(I, 2)
ReferenceSQ(N).StockReel(Semaineactuelle) = Worksheets(Nomenclature).Cells(I, 18)
ReferenceSQ(N).StockVirt(Semaineactuelle) = ReferenceSQ(N).StockReel(Semaineactuelle)

For Semaine = Semaineactuelle To Semaineactuelle + 6
ReferenceSQ(N).StockReel(Semaine) = ReferenceSQ(N).StockReel(Semaineactuelle)
ReferenceSQ(N).StockVirt(Semaine) = ReferenceSQ(N).StockVirt(Semaineactuelle)
Next Semaine

N = N + 1
Next I
End If


Merci
Salut
au lieu de balader "centaines" de variables, stockes-les dans une feuille masquée.
A+
 
Re : Sauvegarde de variable interne à excel

Bonsoir à tous,

Simple en Excel... Format/Feuille et Masquer...

Même action en utilisant l'enregistreur de macro...

Outils/Macro/Nouvelle macro, tu refais cette action, tu arrêtes l'enregistement.... voilà, c'est bon.

Tu intègres ces quelques lignes dans ton code...

Ensuite, tu reviens avec des questions supplémentaires au besoin....
 
Re : Sauvegarde de variable interne à excel

Bonjour le fil

Bonjour


1) Clic-droit sur une feuille
2) Visualiser le code

Et la choisir à :
Visible: xlSheetHidden


Ou plus simple:

Format/Feuille/Masquer

C'est bien mais visualisable par l'utilisateur, donc il vaut mieux utiliser :

Visible: xlSheetVeryHidden

Mais là, c'est sans l'enregistreur, il ne sait pas faire ça!

Bonne soirée
 
Re : Sauvegarde de variable interne à excel

Re, Bonsoir Luki,

Vrai, il y a plusieurs solutions...

La première, comme dit dans mon post plus haut, l'enregistreur pour commencer à se familiariser avec quelques instructions en Vba... Mais Joue semble un peu habitué à coder...

Ensuite, d'autres...

Et, enfin, c'est l'application elle-même et son besoin qui peut diriger....

Bonne soirée et attendant plus.

Jean-Pierre
 
Re : Sauvegarde de variable interne à excel

Re,

En doublant Pascal sur le fil, (il est overbooké ces jours-ci)un extrait d'un prochain sujet en FAQ pour conserver les variables à la fermeture du classeur:

Stocker des variables dans une feuille cachée (XlSheetVeryHidden) sans nommer les cellules.

Adapté au variables nombreuses, dans des projets évolutifs.
Le principe est d’utiliser une feuille cachée comme table des variables :
Le nom des variables en ligne 1, leurs valeurs en ligne 2.
Le repérage de la valeur se fait par une fonction qui va chercher le nom de la variable en ligne 1 et renvoie la cellule ( comme objet « range »)qui contient la valeur en ligne 2.
Fonctionne en lecture/écriture avec la propriété value de l'objet range

Avantages : très souple et facile à utiliser, facile d’y ajouter des variable au fur et à mesure des besoins. Pas de noms qui risquent d’être écrasés.
Si on a besoin de plus de 256 variables, il suffit de permuter le système et de travailler sur les 2 premières colonnes.

L'exemple suivant crée une table par ajout d'une feuille et lance la macro de test.

Exemple à coller dans un module standard d’un classeur vierge

(lancer la macro « CreationExemple »)

Code:
Option Explicit
   'Déclaration du nom de la table dédiée aux variables à conserver comme constante,
   'plus facile à modifier en tête de module que dans le code
  Const Konst_NomTableDesVariables As String = "T_Variables_T"
  '----------------------------------------------------------------------------------
  'Fonction qui permet  de lire/ecrire la variable dans la table
  '-----------------------------------------------------------------------------------
  Function Fn_Variable(NomVariable As String) As Range
  Dim TableVariables As Worksheet, idx As Integer
      ' Référencement de la table des variables
      Set TableVariables = Worksheets(Konst_NomTableDesVariables)
      'recherche du nom de variable dans la 1ere ligne
      idx = Application.Match(NomVariable, TableVariables.Rows(1), 0)
      'renvoi de l'objet "range" qui correspond à la cellule qui contient la valeur de la variable, ou "nothing" si elle n'existe pas
      Set Fn_Variable = IIf(idx = 0, Nothing, TableVariables.Cells(2, idx))
  End Function
  '---------------------------------------
  ' Macro pour tester la fonction
  '----------------------------------------
  Sub test_FonctionVariable()
   
   
  ' Ecriture de la valeur  " prenom" dans la table (On utilise ici la proprité par défaut d'un objet range :Value)
      Fn_Variable("prenom") = InputBox("Entrez votre prénom")
  ' Ecriture de la valeur  " nom" dans la table
      Fn_Variable("nom") = InputBox("Entrez votre nom")
  ' Ecriture de la valeur  " age" dans la table
      Fn_Variable("age") = InputBox("Entrez votre âge")
      
  'lecture des 3 variables et renvoi dans le msgbox
  MsgBox "Vous vous appelez   " & Fn_Variable("prenom") & " " & Fn_Variable("nom") & " et vous avez " & Fn_Variable("age") & " ans."
   
  'Worksheets("T_Variables_T").Visible = xlSheetVeryHidden
  End Sub
   
  '---------------------------------------------------------------------------------
  ' Macro de démonstration du principe, F5 pour la lancer
  '---------------------------------------------------------------------------------
  Sub CreationExemple()
  Dim NewWks As Worksheet
   
   'Ajout d'une feuille  au classeur pour la démo
      Application.DisplayAlerts = False
      On Error Resume Next
      Worksheets("T_Variables_T").Delete
      Set NewWks = Worksheets.Add
      
      With NewWks
          .Name = "T_Variables_T"
  'création de 3 titres de variables dans la table
          .Cells(1.1) = "nom"
          .Cells(1, 2) = "prenom"
          .Cells(1, 3) = "age"
          Range("A1:D1").Font.Bold = True
      End With
   'Appel de la procédure de test
      Call test_FonctionVariable
      Application.DisplayAlerts = true
  End Sub
Bonne soirée


Edit, Salut JeanPierre!
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
881
Réponses
3
Affichages
879
Réponses
6
Affichages
737
Retour