chtebel
Messages postés62Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention 3 janvier 2011
-
4 nov. 2008 à 08:17
chtebel
Messages postés62Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention 3 janvier 2011
-
4 nov. 2008 à 13:52
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!!???
chtebel
Messages postés62Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention 3 janvier 20111 4 nov. 2008 à 08:32
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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 4 nov. 2008 à 08:38
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
chtebel
Messages postés62Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention 3 janvier 20111 4 nov. 2008 à 08:44
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
chtebel
Messages postés62Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention 3 janvier 20111 4 nov. 2008 à 08:57
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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 4 nov. 2008 à 09:02
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
chtebel
Messages postés62Date d'inscriptionjeudi 22 décembre 2005StatutMembreDernière intervention 3 janvier 20111 4 nov. 2008 à 09:22
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