Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/10/2011, 08h43   #1
Invité de passage
 
Homme
Conseil - Consultant en systèmes d'information
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 2
Points : 2
Par défaut Durée de vie d'un objet

Bonjour à tous,


Je cherche comment conserver un objet de classe, créé à l'ouverture du classeur dans la procédure Workbook_open, jusqu'à la fermeture du classeur pour accéder à ses propriétés tout au long de l'ouverture du classeur.

Merci pour votre aide.
JLP64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 09h12   #2
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Bonjour

En déclarant ta variable Public dans un module, si j'ai bien compris ta question.



bonne journée
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/10/2011, 09h45   #3
Invité de passage
 
Homme
Conseil - Consultant en systèmes d'information
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 2
Points : 2
Bonjour,

J'ai effectivement déclaré l'objet Public dans un module standard, mais je constate que je le perd systématiquement après avoir créé un ComboBox (set ole= Feuil1.OLEObject.ADD ...) dans une procédure sélection_Change sur la feuille 1. C'est un mystère épais .
JLP64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 13h13   #4
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut heu

bonjour

ta variable doit etre en public dans un module standard ainsi que la macro qui declenche la classe


au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/10/2011, 14h30   #5
Invité de passage
 
Homme
Conseil - Consultant en systèmes d'information
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 2
Points : 2
Merci pour ta réponse.

En complément je t'indique que l'objet qui devrait conserver la propriété est créé à l'ouverture du fichier dans la procédure Workbook_open. La variable objet est bien déclarée public dans un module standard.

Si j'ai bien compris ta remarque, il ne faut pas que j'instancie l'objet dans cette procédure d'événement dans le module de classeur, mais dans un module standard. Je crée donc une fonction qui instancie la classe dans un module standard . Cett fonction étant appelé par Workbook_open à l'ouverture.

J'attend ta validation avant de lancer la modif.

Nota : J'ai observé que si je change le combobox par un contrôle de formulaire Dropdown je n'ai plus aucun problème, l'instance est conservée pendant toute la d'ouverture du classeur.

Encore merci.
JLP64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 14h46   #6
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut re

c'est exactement ca

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 15h38   #7
Invité de passage
 
Homme
Conseil - Consultant en systèmes d'information
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 2
Points : 2
Re,

J'ai réalisé la modif proposée, sans succès.
Entre temps un ami est tombé sur un blog de 2009 ( forum excel) signalant la perte inopinée des variables publics lors de la création dynamique d'un combobox.
Dans mon appli je ne passe par pas un user form, est-ce là la cause du pb.

A+
JLP64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 18h42   #8
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 829
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 829
Points : 2 857
Points : 2 857
Envoyer un message via MSN à patricktoulon
Par défaut re

bonjour
j'avoue que la je cale

pourrais tu poster ton code

rassure moi tu travaille bien sur un classeur et pas plusieurs?????

au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 08h46   #9
Invité de passage
 
Homme
Conseil - Consultant en systèmes d'information
Inscription : septembre 2011
Messages : 8
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 8
Points : 2
Points : 2
Bonjour,

Merci pour ton opiniâtreté sur le sujet.

Je te rassure, je travaille bien avec un seul classeur.
Ci après le code (désolé je ne connais pas encore la manip pour insérer les lignes de code déroulantes comme je le vois dans les messages):


Voici le code situé dans le module de feuille

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Public Sub combo_click()
suppress
End Sub
 
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
    If Target.Column = 1 And Target.Row >= 4 Then
        With Target
            Set Ole = Feuil1.OLEObjects.Add(ClassType:="Forms.combobox.1", Link:=False, Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height)
        End With
       Ole.Name="Combo"
        With Feuil1.OLEObjects("Combo").Object
            .AddItem "Essai1"
            .AddItem "Essai2"
        End With
 
        'Pour vérifier que la valeur de la propriété Instant est bien conservée
        Feuil1.Cells(Target.Row, 2) = zone.instant
      End If
 
End Sub
 
Public Sub suppress()
    With Me.OLEObjects("Combo")
        '.TopLeftCell.Value = .Value
        .Delete = False
    End With
End Sub
Voici le code dans le module de classeur

Code :
1
2
3
Public Sub Workbook_Open()
    instancier
End Sub
Le code dans le module standard

Code :
1
2
3
4
5
6
7
Public zone As ClsZONE
Public Ole As OLEObject
 
Public Sub instancier()
    Set zone = New ClsZONE
    Feuil1.Cells(1, 2) = zone.instant
End Sub
Et enfin dan sle module de classe Zone

Code :
1
2
3
4
5
Public instant As Date
 
Private Sub Class_Initialize()
instant = Now
End Sub

Merci pour ton aide.
JLP64 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h13.


 
 
 
 
Partenaires

Hébergement Web