Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme de compilation incomprehensible [ Langages dérivés / VBA ] (Morgoline)

jeudi 9 octobre 2008 à 11:03:29 | Probleme de compilation incomprehensible

Morgoline

Bonjour a tous,

je poste un nouveau message toujours concernant mon probleme de macro excel au comportement etrange.

alors j'ai modifié mon code depuis et simplifier mon application et je pense avoir identifier le probleme.

voila je demande via une Msg box a l'utilisatuer de mon fichier excel si il veut creer des boutons graphiques pour chaque feuille du classeur. j'ai donc une application sub dans un module qui me permet de de gerer les differentes reponse de l'utilisateur et d appeler la procedure de creation de buton. jsuque la ok ... la macro d interaction avec l utilsateur etant appeler des l'ouverture du classeur ,.

mais voila quand je ceer un bouton la procedure se deroule normalement jusqu'a la fin car s'affiche un message qui ne fait pas parti de la prcedure elle meme juste apres la creation du bouton sur la feuille. mais au monent ou je click sur ce message bime .... plantage Excel tout s'arrete , se ferme, et message  : la memoire ... ne pas pas etre ecrite apparait  !!!

ce qui me chiffone c'est que si je lance ma procedure de creation independament elle marche tres bien pour chaque feuille.
de plus et c'est la le plus etrange, si j'ouvre le classeur que je refuse de mettre des bouton et que je vais dans VBa editor, que la je fais debug > compiler et que je relance le programme au niveau de l'ouverture de classeur tout se deroule pour le mieux .

en revanche si je ferme le classeur et que je le reouvre et que je fais directement ce que la macro me demande la j'ai a nouveau une erreur et tout plante ...

alors se peut il que mon projet ne se compile pas a l'ouverture?
y a t il moyen de forcer la compilation a l'ouverture quelque chose du style application.debug.run
ou voyez vous une erreur dan mon code ..

merci de m'aider car la je suis pommé j'ai tout eclusé comme pirouette pour me debarraser de cela mais rien y fait et je ne trouve rien sur le net a ce propos .

voila mon code si vous pouvez le tester pour me dire ce qui vous en pensé je vous en serai tres obligé...

PROCEDURE D INTERFCE AVEC UTILISATEUR
Sub Open_Workbook()
Dim j As Integer

Dim error As Boolean
Dim obj As OLEObject

New_try:
Dim i As Long
Dim answser 'idéclaration de la variable, avec reponse comme nom
Dim answser_graphs

 ActiveWorkbook.Activate
 answser = MsgBox("Do you want to add Graphical Application ?", vbYesNo + vbQuestion, "Validation")

    Select Case answser
    Case vbYes       'on click yes
   
    On Error GoTo Problem
       
      For i = 1 To Worksheets.Count
            Worksheets(i).Activate
            Worksheets(i).Visible = True
           
            error = False

            For Each obj In Worksheets(i).OLEObjects
                 
                    If obj.Name = "GraphButton" Or obj.Name = "ValidationButton" Then
                        error = True
                        Exit For
                    End If
                   
            Next obj
       
            answser_graphs = MsgBox("Add Graphical Application on sheet : " & Worksheets(i).Name, vbYesNo + vbQuestion, "Sheet Insertion Button")
       
            Select Case answser_graphs
                    Case vbYes       'on click yes
                        If error = False Then
                        Call Module1.Button_Graph_creation(Worksheets(i).Name)  ||||ICI J APPEL MA CREATION DE BOUTON
                        MsgBox " Graphs Buttons added successfully !", vbInformation ||||| LA CA PASSE
                        |||||||| LA CA PLANTE
                        Else
                        MsgBox " Sheet : " & ActiveSheet.Name & " already contains Graphs applications ", vbInformation
                       
                        End If
                   
                    Case vbNo        'on click no
                    MsgBox " No Button added !", vbInformation
            End Select        'end
           
        Next i
   
   
    Case vbNo        'on click no
   
    End Select        'end

Exit Sub

Problem:
   
    MsgBox "Error occured, please try again !", vbInformation
    j = j + 1
    If j < 3 Then
        GoTo New_try
    Else
        MsgBox " This error need you to restar Excel if you want to add the Graphs, sorry", vbInformation
       
        Exit Sub
    End If
End Sub


PROCEDURE DE CREATION DE BOUTON DYNAMIQUE
'Purpose: Allow to create dynamically 2 Buttons on the sheet to add graph application

Sub Button_Graph_creation(Worksheet_Name As String) ' Worksheet_Name is the name of the sheet were we place the buttons
Dim Code As String 'code will contain the code of the bur´toon we will create
Dim NextLine As String ' to situate where we are placing the code
Dim Last_cell As Long ' to know where is the last cell in used
Dim oOLE_G As Object ' object type to identifie an create the button Graph
Dim oOLE_V As Object ' object type to identifie an create the button Validation
Dim Ws As Worksheet ' the worksheet where we will use the button

'Application.ScreenUpdating = False

Set Ws = Worksheets(Worksheet_Name)
Last_cell = Ws.UsedRange.Columns.Count ' to know what is the last column in used

'to add a first button
Set oOLE_G = Ws.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
        Link:=False, DisplayAsIcon:=False, Left:=Ws.Cells(1, Last_cell).Left, Top:=5, Width:=100, Height:=50)

' to change the name of this button and it captation
With oOLE_G
        .Name = "GraphButton"
        .Object.Caption = "Graphs"
    'Ws.OLEObjects(Ws.OLEObjects.Count).Object.Caption = "Graphs"
End With

' the code we are placing in the procedure which is called after a click on this buton
    Code = "Sub GraphButton_Click()" & vbCrLf
    Code = Code & " Load Menu " & vbCrLf
    Code = Code & "Menu.Show " & vbCrLf
    Code = Code & "End Sub"

    With ActiveWorkbook.VBProject.VBComponents.Item(Ws.CodeName).CodeModule
        NextLine = (.CountOfLines + 1)
        .insertlines NextLine, Code
    End With

Set oOLE_G = Nothing ' realse the parameter
Set Ws = Nothing ' realse the parameter

'Application.ScreenUpdating = True

End Sub

PROCEDURE D APPEL AU DEMARRAGE
Sub Workbook_Open()
Call Open_Workbook
End Sub


samedi 18 octobre 2008 à 22:23:00 | Re : Probleme de compilation incomprehensible

rvblog

Membre Club
Salut Morgoline,

bon, je ne viens pas avec une solution toute faite, dommage! Mais comme tu n'as pas eu beucoup de réponses, ben ça en fait au moins une.

Cependant, ça ne m'enlèvre pas le droit de soulever quelques points:
Que se passe-t-il si tu n'affiches pas la MsgBox (dans le cas d'un succès d'ajout, de toutes façons, il parait inutile de confirmer la création, après avoir demandé une confirmation de la volonté de création, ça fait beaucoup de messages)?
Qu'en est-il de ce "Menu" qu'on charge dans le code non compilé (celui qui est ajouté à la volée dans la procédure Button_Graph_creation)? Vu le côté "tardif" du plantage (peut-être lié à l'affichage modal de la MsgBox), il s'agit peut-être d'un problème avec ce "Menu".

dis nous en plus, et continue à ne pas baisser les bras,

rvblogn
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!


jeudi 23 octobre 2008 à 10:21:29 | Re : Probleme de compilation incomprehensible

Morgoline

Bonjour Msieur...

Alors desole our la repose tardive mais j'ai abandonné l'idee de trouver une solution a ce probleme de M...bip bip!

je reprends quand meme au cas ou quelqu un tombe dans la meme panique que moi !

Donc si je retire la message box a la noix qui dit " Boutons added sucessfully " ca ne change rien du tout toujours le meme souci.

Menu est un formulaire independant de cette procédure il est appelé lors du clic sur le bouton ajouté a la feuille et c'est donc pour cela que je n'en ais pas parlé :

en fait ce que fais mon programme de facon sequenciel et en francaios c'est cela :

-demander a utilisateurs si il desire creer une appilaction graphique sur la feuille active
-si oui appelle a la creation automatique de bouton
-puis passage a une autre feuille

et ainsi de suite jusqu a ce que toutes les feuilles aient visitées

a ce moment la une procedure graphique est appellée a chaque clic sur le bouton d'une des feuilles

voila, je confirme quand meme le soucis de ce probleme de compilation car je ne comprends decidement pas pourquoi le fait de compiler le programme ne le fais pas planter...

jeudi 23 octobre 2008 à 10:37:02 | Re : Probleme de compilation incomprehensible

rvblog

Membre Club
Salut,

essaies de charger un autre formulaire que Menu (un qui ne fait rien, pour exclure la possibilité que Menu fasse quelque chose de pas bien).
essaies aussi de charger ce formulaire plus convenablement, en gardant une référence à lui (pour éviter la multi-instanciation).
essaies aussi de t'assurer de ne pas l'afficher modalement.

à+

jeudi 23 octobre 2008 à 10:43:28 | Re : Probleme de compilation incomprehensible

baloc

a tu essayé de rajouter un
on error resume next.

sa te feras sauté le problème pour voir si il ne vient pas de plus loin.

et une victoire de plus pour Mr canard



Cette discussion est classé dans : end, code, to, ws, name


Répondre à ce message

Sujets en rapport avec ce message

Plantage Excel raison inconnue et suspicieuse [ par Morgoline ] Bonjour a tous et a toutes,je me resouds finalement a poster ici une question qui me turlyupine depuis 1 semaisne et que je n'arrive pas a resoudre so initialisation d'un objet dans un objet [ par kershin ] Bonjour à tous,J'ai du pour des raisons professionnelles me mettre au VB depuis une petite semaine. Jusqu'ici tout allait bien, mais je suis confronté CODE POUR GROUPE D'OPTIONS CREE DYNAMIQUEMENT [ par sgtdaf ] Bonjour, Voilà, je souhaite créer dynamiquement un groupe d'options sur un formulaire EXCEL et qu'une fois crée chaque bouton option déclenche un év les ' d'une requêtre SQL dans du code VB [ par IAmIvyAlice ] Bonjour,Voici mon problème, j'aimerais lister les database de mon serveur, j'ai trouvé le code qui fait ça :select NAME from master..sysdatabases WHER Optimisation code VBA pour remplissage d'une page [ par violette42 ] Bonjour,je suis novice en developpement dans VBA pour Excel et j'ai un probleme de temps de traitement sur le code suivant:1) Je fais mes calculs a pa Raccourcir un code [ par cruise1406 ] Est-ce que quelqu'un saurait comment rendre plus lisible et surtout plus court mon morceaux de code car je dois répété ceci pour chaque chk :Private S Variable activeworkbook.name ? [ par schevs10 ] Bonjour,Voici mon code ci dessous :'''envoi un le fichier "Test2"ActiveWorkbook.SendMail Recipients:="blabla@blabla.fr", Subject:="Base de données" regrouper des codes [ par croky23 ] Bonjour le forum pour chaque cellule j'ai rentré ce code If [C5] C_code Then 'C_code étant le non d'un textbox      [C6500].End(xlUp).Offset(1, 0).Se My.MyApplication [ par veler ] Salut,J'ai un code que j'aimerais compilé via mon application.J'ai un petit problème avec la class MyApplication. Mon compilateur me dit que IsSingleI


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.