XL 2016 VBA - Classeur Complément Excel - Comment conserver des valeurs ?

Dudu2

XLDnaute Barbatruc
Bonjour,

Affaire un peu spéciale:
  • Le code utilisé est placé dans un classeur chargé en Complément Excel
  • Je travaille avec plusieurs UserForms que l'utilisateur peut évidemment déplacer à sa convenance où il veut et en particulier sur un 2ème écran.
  • Entre 2 affichages d'un UserForm donné, je conserve sa dernière position pour le ré-afficher à l'endroit où il l'avait préalablement déplacé.

Problème:
  • Hélas, lorsque le dernier classeur se ferme, je perds tous les positionnements car le Complément n'est plus utilisé et il sera rechargé à la prochaine ouverture d'un classeur avec des variables toutes ré-initialisées.

Question:
  • Comment conserver des valeurs dans un Complément d'une exécution à l'autre ?
  • Puis-je écrire dans une feuille du Complément ? Non !
  • Dois-je externaliser ces valeurs dans un fichier texte ?
 
Solution
re
exemple comme ça vite fait
je crée un xlam avec une petite fonction pour dire bonjour

dans le module dans le XLAM
VB:
Public Function hello()
MsgBox "bonjour"
End Function
je nomme le project pour le reconnaitre dans mes refs
1645816102077.png


je le sauve dans le dossier qui est destiné aux addins

je vais dans les options excel et j'active mon xlam

dans un nouveau classeur maintenant


je vais dans mes refs et je coche la reference au xlam
1645816271862.png


voilà mon xla est activé est installé dans le cnew classeur
je test la fonction pour voir
voilà ca marche
1645816367308.png


maintenant je vais enregistrer un mot dans la cellule A1 de la feuille(1) du xlam

VB:
Sub ecriture()    'dans la feuille(1) du xlam
'ecriture
    With...

Jacky67

XLDnaute Barbatruc
Bonjour,

Affaire un peu spéciale:
  • Le code utilisé est placé dans un classeur chargé en Complément Excel
  • Je travaille avec plusieurs UserForms que l'utilisateur peut évidemment déplacer à sa convenance où il veut et en particulier sur un 2ème écran.
  • Entre 2 affichages d'un UserForm donné, je conserve sa dernière position pour le ré-afficher à l'endroit où il l'avait préalablement déplacé.

Problème:
  • Hélas, lorsque le dernier classeur se ferme, je perds tous les positionnements car le Complément n'est plus utilisé et il sera rechargé à la prochaine ouverture d'un classeur avec des variables toutes ré-initialisées.

Question:
  • Comment conserver des valeurs dans un Complément d'une exécution à l'autre ?
  • Puis-je écrire dans une feuille du Complément ? Non !
  • Dois-je externaliser ces valeurs dans un fichier texte ?
Bonjour à tous,
Perso, pour mémoriser une position d'un userform dans un classeur, j'utilise ceci
VB:
Private Sub UserForm_Initialize()
    Me.StartUpPosition = 0
    Me.Top = [Userform1Top]
    Me.Left = [Userform1letf]
End Sub

Private Sub UserForm_Layout()
 ActiveWorkbook.Names.Add Name:="Userform1Top", RefersTo:=UserForm1.Top
 ActiveWorkbook.Names.Add Name:="Userform1letf", RefersTo:=UserForm1.Left
End Sub
Créer et lancer "Private Sub UserForm_Layout()" en premier
A adapter également aux autres userform
 

Pièces jointes

  • Affiche position userform.xlsm
    18.6 KB · Affichages: 4
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
exemple comme ça vite fait
je crée un xlam avec une petite fonction pour dire bonjour

dans le module dans le XLAM
VB:
Public Function hello()
MsgBox "bonjour"
End Function
je nomme le project pour le reconnaitre dans mes refs
1645816102077.png


je le sauve dans le dossier qui est destiné aux addins

je vais dans les options excel et j'active mon xlam

dans un nouveau classeur maintenant


je vais dans mes refs et je coche la reference au xlam
1645816271862.png


voilà mon xla est activé est installé dans le cnew classeur
je test la fonction pour voir
voilà ca marche
1645816367308.png


maintenant je vais enregistrer un mot dans la cellule A1 de la feuille(1) du xlam

VB:
Sub ecriture()    'dans la feuille(1) du xlam
'ecriture
    With Workbooks("testhello.xlam")
        .IsAddin = False
        DoEvents
        .Sheets(1).Cells(1) = "Salut @Dudu2"
        .IsAddin = True
        .Save
    End With
End Sub

voila
je ferme tout xlam et classeur porte d'entré et tout et tout ;)

je ré ouvre mon new classeur
je lis la cellule du xlam
VB:
Sub testLecture()
    With Workbooks("testhello.xlam")
        MsgBox .Sheets(1).Cells(1)
    End With
End Sub
re
voilà terminé tu sais ou memoriser tes données😁

PS:
sur certaines config VA SAVOIR POURQUOI ??;
on est meme pas obligé de deactiver le xlam en tant addins ".isaddin=( fase/true ) "
je n'ai jamais trouvé pourquoi


je veux voir les feuilles de mon xlam
VB:
Sub VoirLesFeuillesDuXlamDansVBE() ' et regarder la cellule A1
 Workbooks("testhello.xlam").IsAddin = False
End Sub
le xlam s'affiche alors comme un classeur normal

voyons voir ce qu'il y a d’écrit en A1 dans le xlam
1645817110241.png
 
Dernière édition:

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo