Worbook open et worksheet

Signaler
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
-
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
-
Bonjour,
j'ai un bug un peu bizarre que je ne comprends pas. En effet,
je veux à l'ouverture du classeur test.xls , activer les feuilles
rendements puis graph afin d'actualiser les deux listbox qui s'y trouve
mon code, tout simple:


Sub Workbook_Open()
Worksheets("rendements").Activate
Worksheets("graph").Activate
End Sub

mais ca bug, à l'ouverture, il faut alors que je stoppe l'execution et que je fasse du pas a pas et ca marche!!???

Quelqu'un a une idee?

bonne journée a tous

12 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,
Si tu dis que cela bug,EXCEL doit bien te dire quelques choses non?

si oui quoi?

Comment les listbox s'actualisent elles, comme ca en activant la feuille ?

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
1
salut,
j'initliase ma textbox comme suit:

Private Sub Worksheet_Activate()
If Worksheets("graph").Cells(100, 100) <> "ouvert" Then
Worksheets("rendements").periode_rend_list.Clear
Worksheets("rendements").periode_rend_list.AddItem "Journaliers"
Worksheets("rendements").periode_rend_list.AddItem "Hebdomadaires"
Worksheets("rendements").periode_rend_list.AddItem "Mensuels"
Worksheets("rendements").periode_rend_list.ListIndex = 0
Worksheets("graph").Cells(100, 100) = "ouvert"
End If
End Sub


et ma deuxieme textbox comme suit:

Private Sub Worksheet_Activate()


If Worksheets("graph").Cells(101, 100) <> "ouvertb" Then
Worksheets("graph").liste_maturity.Clear
Worksheets("graph").liste_maturity.AddItem "1M"
Worksheets("graph").liste_maturity.AddItem "3M"
Worksheets("graph").liste_maturity.AddItem "6M"
Worksheets("graph").liste_maturity.AddItem "12M"
Worksheets("graph").liste_maturity.ListIndex = 0
Worksheets("graph").Cells(101, 100) = "ouvertb"
End If
End sub

Voila les deux procedure a louverture et a la fermeture du classeur:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets("graph").Cells(100, 100) = "" 'on met des valeurs dans graphe pour dier kon a deja ouvert lune ou lotre
Worksheets("graph").Cells(101, 100) = ""
End Sub



Sub Workbook_Open()
Worksheets("rendements").Activate
Worksheets("graph").Activate
End Sub

jactive les deux feuilles a l'ouverture, a chaque activation les listbox se remplissent, les cellules 100 et 101 prennent alors les valeurs "ouvert" et "ouvertb" que je teste a l'activation suivante de la feuille, de maniere a ne pas recharger l'initialisation.


mais ca plante des l'ouverture sur les .Activate.
alors qu'en pas a pas ca marche si je stoppe l'exectution d'abord.



Mystere :-(??ou t'as une idee
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
1
J'ai utilisé la boite a outil controle pour faire mes listbox.
Si il ya une maniere plus simple de les initialiser une seule fois, je suis tout ouïe.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Re,
<li>Est ce que ces litbox sont les deux seules du classeur?</li><li>Pourquoi ne pas tester la valeur de la propriété ListCount d'une listbox plutot que de mémorisé ton passage dans une cellule. Car à l'ouverture les listbox sont vides non?
</li>

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
1
oui a l'ouverture elles sont vides. et ce sont les deux seules du classeurs.

tu vois ca comme ca:


Private Sub Worksheet_Activate()


If Worksheets("graph").liste_maturity.ListCount <> 0 Then
Worksheets("graph").liste_maturity.Clear
Worksheets("graph").liste_maturity.AddItem "1M"
Worksheets("graph").liste_maturity.AddItem "3M"
Worksheets("graph").liste_maturity.AddItem "6M"
Worksheets("graph").liste_maturity.AddItem "12M"
Worksheets("graph").liste_maturity.ListIndex = 0
Worksheets("graph").Cells(101, 100) = "ouvertb"
End If
End sub

??
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
1
oublie le "ouvertb" ;-) jai zappé de l'effacer
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
1
J'ai testé, ca semble marché. mais le prob est un peu différent. A l'ouverture du fichier , la page graph est activeé, et la listbox n'est pas pleine, il reste le terme 1M qui est resté, mais il est seul, je dois activer une autre feuille puis revenir pour que le script du dessus marche. c'est a dire qu'il considere kan meme ListCount=0. Apres ca marche nikel si j'active une autre page, puis celle ci.

C'est donc ce que je voudrai faire a l'ouverture mais cela ne marche pas ca bugg a activate...ca tourne un peu en rond.


2 solutions:
soit j'arrive a activer une autre page puis celle ci dans Workbook Open
soit il initialise bien des l'ouverture du fichier sur cette page graph.


tu as une solution pour un des deux problemes?
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Re,

Est ce code ne fonctionne pas? (pense en revanche à virer celui qui est dans le code des feuilles).

Private Sub Workbook_Open()
   With ActiveWorkbook.Worksheets("graph").liste_maturity
       Call .AddItem("1M")
       Call .AddItem("3M")
       Call .AddItem("6M")
       Call .AddItem("12M")
       .ListIndex = 0
   End With
   
   With ActiveWorkbook.Worksheets("rendements").periode_rend_list
       Call .AddItem("Journaliers")
       Call .AddItem("Hebdomadaires")
       Call .AddItem("Mensuels")
       .ListIndex = 0
   End With
   
End Sub , ----
[../code.aspx?ID=41455 By Renfield]

Tu noteras que le Clear est donc inutile puisqu'elles sont vides à l'ouverture

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
1
Il plante il devrait marcher mais a mon avis on est pas sur la bonne voie.

Il me demande d'activer les boutons ActiveX et apres me met l'erreur
"Erreur definie par l'applciation ou par l'objet"

il bloque direct sur:
With ActiveWorkbook.Worksheets("graph").liste_maturity

si je stoppe et qu'apres je fais du pas a pas ca marche.

sur que ca marcherait sur un autre pc. Tu crois que ca peut vnir de quoi?

securité? bouton ActiveX a autoriser par défaut?
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
1
explication sur le site de microsoft.

"Dans Microsoft Excel pour Mac, si vous ouvrez un classeur puis exécutez une procédure Visual Basic qui effectue une action impliquant une feuille de calcul qui contient un contrôle ActiveX, vous pouvez recevoir des messages d'erreur semblables aux suivants :
Erreur d'exécution '57121' : Impossible de sortir du mode création, le contrôle 'CheckBox1' ne peut pas être créé.
Erreur d'exécution '32809' : Erreur définie par l'application ou par l'objet.
L'erreur peut par exemple se produire lors de l'exécution d'une macro qui contient l'une des lignes de code suivantes :

ex
ActiveSheet.Controls.Delete


xName = Sheets(1).Name 'where Sheets(1) contains a control

c'est exactement ca, sauf que je suis sur un pc et pas sur mac.


jvais tenter d'ajouter les activeX a louverture du classeur et de les nommer. et de les supprimer en fermant. ca devrait etre la meilleure solution
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
Quel est le niveau de sécurité de ton Excel ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Messages postés
62
Date d'inscription
jeudi 22 décembre 2005
Statut
Membre
Dernière intervention
3 janvier 2011
1
niveau faible. ca ne doit pas venir de la.