IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Bug Application .Run


Sujet :

C#

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut Bug Application .Run
    Bonjour à tous,
    J'espère que vous pourrez m'aider parce que ce bug m'inquiète pas mal.
    J'ai codé il y a de cela quelques mois un usercontrol pour mon application (en fonction du bouton sur lequel j'appuie un user control se charge). Tout marchait bien et tout à l'heure j'ai voulu essayer juste pour voir et ça ne marchait plus (j'ai avancé mon projet via de nouveaux user control depuis).

    Celui ci est très compliqué avec de nombreuses fonctions.
    Donc une fonction qui permet de stocker une petite animation dans un fichier xml.
    Je m'explique :
    le fichier xml comporte la position de 5 points à chaque instant pendant 10 secondes. L'utilisateur a la possibilité à chaque instant de choisir un des points et de changer sa position via d'autres fonctions (qui fonctionnaient toutes).

    Donc je clique sur créer, le panel_systeme(qui est par défaut par dessus mon canvas) qui est par défaut à false passe à true(la visibilité). après avoir rentré un nom, je valide.
    Voici les procédures dans la fonction valider:
    -Copier le fichier xml de base
    -Remplir le fichier xml avec les infos rentrées lors de la création (nom, position de départ)
    -Les afficher (avec le contenu de microsoft.powerpacks.ovalshape je crée 5 ronds que j'affiche sur mon image).
    -Enfin le panel_systeme.visible passe à false.


    Je suis passé à seven depuis la dernière fois ou ça marchait. Peut etre que powerpacks.ovalshape n'est pas compatible avec windows 7 ? J'en doute.(j'ai la version 3.0 que je viens de réinstaller pour tester, mais la version 3.0 est sortie en 2008 soit avant seven)
    Ce site propose une version 10.0 que je ne trouve pas sur le site de microsoft, normal ? http://coolthingoftheday.blogspot.co...packs-100.html )
    En tout cas j'ai réinstallé la version 3.0, et un autre user control ou je m'en sers me montre que ça marche parfaitement.
    Le problème est donc ailleurs.


    Alors tout s'execute à priori normalement (j'ai mis un int h=0; à la dernière ligne avec un point d'arret et le déboggueur s'arrete bien). et mon try catch ne renvoie rien.


    Sauf qu'une fois l'exécution de la fonction terminée j'ai un message d'erreur sur mon Application.Run dans Program.cs. Note: Le panel n'est pas caché avant de planter.
    Voici l'erreur:
    L'exception System.ArgumentException n'a pas été gérée
    Message=Le paramètre n'est pas valide.
    Source=System.Drawing
    StackTrace:
    à System.Drawing.Graphics.GetHdc()
    à System.Drawing.BufferedGraphics.RenderInternal(HandleRef refTargetDC, BufferedGraphics buffer)
    à System.Drawing.BufferedGraphics.Render()
    à System.Windows.Forms.Control.WmPaint(Message& m)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.Label.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.Run(Form mainForm)
    à BPM2011.Program.Main() dans C:\***\Program.cs:ligne 36
    à System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
    à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()
    InnerException:
    On notera que lorsque je clique sur importer pour importer un ancien xml que j'avais créé (et donc qui marchait parfaitement) l'application plante avec un autre message d'erreur dans le catch cette fois.
    Je viens de lancer le programme sans passer par le déboggueur juste en cliquant sur le .exe et quand le message d'erreur apparait, je fais continuer(le panel.visible n'est pas repassé à false) et je clique sur le bouton pour enlever le panel et tout fonctionne parfaitement, tous mes ronds se sont bien affichés sur l'image je peux éditer leur trajectoire etc.
    Alors c'est un problème de mémoire ? trop de mémoire allouée ?


    Ce code marchait parfaitement avant, je ne vois pas d'ou cela peut provenir. Alors si vous pouviez m'aider ou au moins me donner des pistes pour corriger ce type d'erreur (peut etre que dans toute la programmation de mon logiciel ma façon de coder a été mauvaise ce qui cause ce problème). Depuis j'ai du rajouter quelques variables globales, sachant qu'il y a énormément de variables dans cet usercontrol ça peut avoir un lien?
    Aussi si vous aviez des conseils pour m'aider à comprendre ce genre de messages d'erreurs je suis preneur.

    M'aider à résoudre ce problème serait bien plus que de me sauver la vie, c'est la partie la plus importante de mon projet.



    Merci d'avance, r0seBa

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    Bonjour à tous, momn problème est toujours d'actualité.

    J'ai pas mal cherché sur internet en ce qui concerne la gestion de la mémoire en c#.
    Et à partir de là deux questions me viennent:

    -Quand utiliser GC.Collect ?
    -Dois-je déclarer mes usercontrol en public moncontrol nomvariable; ou public static moncontrol nomvariable; ? Je dois utiliser static ou pas? Les deux fonctionnnent dans l'exécution mais lequel est le mieux niveau gestion de la mémoire ?

    Sinon mon ancien problème est toujours d'actualité, visiblement c'est un problème liée à la mémoire de system.drawing (le bitmap ?) non ?

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    System.ArgumentException n'a rien à voir avec un problème de mémoire

    as tu des try catch dans la méthode qui plante ? essaye de mettre un handler sur l'évènement UnhandledException pour essayer d'avoir un stacktrace plus explicite ...
    si tu utilises des objets non managés il faut les disposer (bitmap, graphics etc...) sinon ca peut exploser si tu en créés souvent

    un lien vers ton autre problème ? si c'est celui ou tu fais .controls.clear, il ne faut jamais faire controls.Clear si on a plus besoin des controles, mais les diposer tous, sinon dans certains cas tu arrives vite à saturation de la mémoire (OutOfMemoryException)

    un bon programme n'a pas besoin de gc.collect
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    Bonjour,

    Merci de ta réponse.

    J'ai bien vérifié il y a des try catch partout dans la fonction qui plante, sans pour autant aller dans le catch. Ce qui est étrange c'est que quand je l'execute sans le débogueur en cliquant sur le .exe quand l'erreur apparait je clique sur continuer et tout marche normalement.

    Bref, je n'arrive pas à mettre d'handler sur l'exception, je m'inspire pourtant de msdn:
    http://msdn.microsoft.com/en-us/libr...=vs.95%29.aspx
    quand je copie de cette manière cela ne fonctionne pas au moment d'ajouter le using Windows, enfin plutot il apparait 101 erreurs d'ambiguité entre System.windows.forms et System.Windows

    Mais si vous me dites que c'est la bonne fonction à coller je corrigerais ces problèmes


    Et sur ce lien :
    http://msdn.microsoft.com/en-us/libr...exception.aspx

    Tout marche avec lui.(en remplaçant console.writeline par un dialogresult = messagebox.show)
    Quand j'exécute j'ai trois messages qui s'affichent "Le paramètre n'est pas valide".

    http://img42.imageshack.us/img42/3217/stacktrace.png

    Rien de bien nouveau quoi à part que ça s'affiche trois fois puis ça plante.


    Merci

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    le premier event d'erreur qui est dans system.windows c'est pour wpf, pas windows forms

    sinon j'ai une autre hypothèse, une image qui a été disposé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim b as new bitmap
    b.dispose
    ungraphics.DrawImage(b) ' cette ligne va planter pour b ne vaut pas Nothing

    et si tu veux tu peux m'envoyer un lien vers la solution en mp
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    Non ça ne semble pas etre ça, je ne dispose pas mon image.
    Je t'envoie le tout par MP.

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    ouah !
    ca va pas être simple ^^

    déjà à vue de nez 10k lignes de code c'est plus qu'énorme, et vu le code ca doit pouvoir tenir en moins de 2k lignes

    et puis il me manque pas mal de code extérieur pour espérer lancer quelque chose

    autre chose, il ne faut pas mélanger tout le code comme ca, un usercontrol ne doit contenir que du code d'affichage, et des propriétés, pas de connexion à une base de données, pas de lecture de données sur des forms extérieur etc...
    ca manque aussi de POO

    donc si tu as un descriptif de ce que ca doit faire, on peut re réfléchir à comment ca se code, il faudra 3 ou 4 classes derrière, ca sera plus lisible et le bug aura surement disparu

    vu que tu as déjà tapé 10k lignes de code, je sens que tu vas me dire que t'as pas le temps et le courage de tout reprendre à zéro
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    Le problème c'est que je peux pas envoyer tout le projet ça serait trop gros.

    En gros cette page sert à créer des systèmes pour les entraineurs de basket ils ont leurs 5 joueurs et ils peuvent décider des actions de leur joueur.

    Donc déjà une fonction par type d'action.
    Plus toutes les fonctions pour importer et charger les systèmes plus l'affichage etc.

    Je sais qu'il manque des trucs pour le lancer mais il faut la base de donnée et tout aussi ?


    Je vois pas comment faire pour ne pas me connecter à la base de donnée dans mon user control à vrai dire. Ou alors je me connecte dans la fonction quia ffiche l'usercontrol et j'utilise cette connexion dans l'usercontrol. Je sais pas si c'est clair...

    Oui c'est vrai que j'ai pas trop le courage de reprendre à zéro cette partie qui fonctionnait avant. Après si t'as des idées de classe (j'ai pas mal progressé dans la gestion des classes depuis que j'ai créé cette partie) je peux m'y atteler mais dans l'absolu je vois pas trop trop. peut etre une classe pour les points (qui contient par la meme occasion X1, Action1 etc.

    Si on pouvait éviter de tout recommencer ça serait pas mal !

    Merci d'avance

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    me passer le projet, on va laisser tomber, trop gros pour y voir quelque chose ; et puis à l'origine je fais du vb.net, le c# quand y a trop de ligne je suis perdu

    après pour la réorganisation, il faudrait que je comprenne ce que ca doit faire, et là c'est pas trop le cas

    mais si le UC affiche des joueurs et permet via un clic sur le joueur de faire des actions (le déplacer etc...)
    je verrais bien une classe joueur, propriétés : Equipe, Position, Direction ... Méthodes : Déplace, Tire, Dessine(g as graphics) etc...

    le usercontrol avec une propriété Joueurs List<T>, tu instancies tes joueurs en lisant dans la base de données ou autre, tu les ajoutes à la collection, le usercontrol s'occupe d'appeler la méthode dessine sur chaque joueur, quand on clic sur le usercontrol, tu fais un hittest pour voir si c'est sur un joueur, auquel cas demander à ce joueur les actions qu'il peut faire via une fonction sur la classe joueur
    etc...
    ou faire que joueur soit un control, et qu'il soit donc enfant du usercontrol pour qu'il chope directement l'évènement clic

    m'enfin le mieux c'est que celui qui instancie le usercontrol se débrouille pour récupérer les données et remplir des propriétés du usercontrol, qui lui est autonome et ne fait que manipuler ses données

    si tu dois par la suite enregistrer les données dans la base, tu peux mettre des évènements pour dire que ca a changé, et les propriétés en lecture pour que le form s'occupe de l'enregistrement

    et il faut éviter les tableaux de données de 0 à 500 avec un tableau par variable
    souvent une classe avec 5 propriétés et ensuite une collection pour ranger les instances est préférable
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    Le problème c'est le fait que le tableau fasse 500 ou qu'il y en ait beaucoup ?
    Si je les met dans une classe c'est bon?


    Mais le fait de mieux gérer ça va régler le problème ? Parce que le problème survient sans utiliser toutes ces fonctions mais juste en créant un nouveau système.

    Je pense alors faire une classe par joueur ou il y a sa position ses actions etc.
    Mais alors mieux vaut que dans chaque joueur je sauvegarde une position et que je fasse une collection de joueur (500)le tout *5 que de faire un 5 joueur qui chacun contient 5 tableaux ?

    Merci

  11. #11
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Citation Envoyé par r0seBa Voir le message
    Le problème c'est le fait que le tableau fasse 500 ou qu'il y en ait beaucoup ?
    Si je les met dans une classe c'est bon?
    les tableaux c'est nul (pas rapide etc...)
    autant de tableau c'est peut etre un problème de conception

    Citation Envoyé par r0seBa Voir le message
    Mais le fait de mieux gérer ça va régler le problème ? Parce que le problème survient sans utiliser toutes ces fonctions mais juste en créant un nouveau système.
    pas sur, mais j'aurais plus de chance de le trouver

    Citation Envoyé par r0seBa Voir le message
    Je pense alors faire une classe par joueur ou il y a sa position ses actions etc.
    Mais alors mieux vaut que dans chaque joueur je sauvegarde une position et que je fasse une collection de joueur (500)le tout *5 que de faire un 5 joueur qui chacun contient 5 tableaux ?
    malheureusement sans descriptif du truc (~ analyse fonctionnelle) je peux pas t'aider plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
          else if (Xb < 100 && Yb > 63 && Yb <= 195)
                {
                    switch (poste)
                    {
                        case 1://99,104
                            XRenvoi = 104;
                            break;
                        case 2://98,154 
                            XRenvoi = 154;
                            break;
                        case 3://47,91
                            XRenvoi = 91;
                            break;
                        case 4://53,166
                            XRenvoi = 166;
                            break;
                        case 5://44,132
                            XRenvoi = 132;
                            break;
                    }
                }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     case 3:
                            encours3++;
                            if (encours3 > 399)
                            {
                                encours3 = 399;
                            }
                            else
                            {
                                if (encours3 < 400 && Action3[encours3] == 0)
                                {
                                    X_3[encours3] = System.Convert.ToInt32(Math.Round(Xcalcul, 0));
                                    Y_3[encours3] = System.Convert.ToInt32(Math.Round(Ycalcul, 0));
                                    Info_3[encours3] = 0;
                                    Action3[encours3] = 10;
                                    if (Facea < 2)
                                    {
                                        encours33++;
                                        if (encours33 > 399)
                                        {
                                            encours33 = 399;
                                        }
                                        if (encours33 < encours3)
                                        {
                                            while (encours33 < encours3)
                                            {
                                                encours33++;
                                                X_33[encours33] = X_33[encours33 - 1];
                                                Y_33[encours33] = Y_33[encours33 - 1];
                                                Info_33[encours33] = 0;
     
                                            }
                                        }
                                        else
                                        {
                                            encours33 = encours3;
                                        }
                                        X_33[encours33] = X_33[encours33 - 1];
                                        Y_33[encours33] = Y_33[encours33 - 1];
                                        Info_33[encours33] = 0;
                                    }
                                }
                            }
    tous ces codes comme ça en dur et qui se répète 6 ou 7 fois c'est à éviter ; il faut rendre le code générique, et la POO et les classes servent à ca
    normalement au lieu de faire 6x la même chose, tu l'écris qu'une fois de manière générique, parce que peut importe que ca soit sur tel ou tel truc, ou que ca soit +1 ou +3 ce ne sont que des paramètres d'un traitement

    la variable chaine de connexion écrite 20x ca sert à rien aussi

    et je ne suis malheureusement pas exhaustif ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    Oui merci,
    tout ce que je fais désormais est moins répétitif, je cherche de plus en plus à utiliser les classes.
    Je pense que je vais commencer à transformer la page cet après midi.

    Mais dans l'absolu, une des questions que j'ai posé précédemment est importante dans la conception de ces classes.
    Mieux vaut une collection d'objet ou plutot un seul objet qui contient des tableaux de 500 entrées ?

    Chaque joueur possède à chaque instant la position X et la position Y, une action (passe tir etc) et une info supplémentaire.

    Merci

  13. #13
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par r0seBa Voir le message
    Mais dans l'absolu, une des questions que j'ai posé précédemment est importante dans la conception de ces classes.
    Mieux vaut une collection d'objet ou plutot un seul objet qui contient des tableaux de 500 entrées ?
    La première démarche est orientée objet, l'autre non. Sachant que C# est objet, la réponse en découle

  14. #14
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    il vaut mieux des classes
    parce que si tu as une méthode qui a besoin de x, y de l'angle etc, ta méthode va avoir 3 paramètres
    avec une classe, un seul paramètre joueur qui contiendra toutes les informations

    et le jour où tu rajoutes une propriété sur le joueur et que tu en as besoin dans cette méthode, en POO tu n'as pas à modifier l'appel de la méthode, vu que c'est le joueur que tu passes en paramètre
    et je ne te parles pas du cas où plusieurs méthodes avec ces paramètres s'appellent à la suite
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 172
    Par défaut
    Bonjour à tous,
    Mon problème est résolu, merci beaucoup pour votre aide.
    De plus les remarques sur mon code m'aideront à mieux programmer dans le futur, et même à arranger cette page.

    Il s'agissait en fait de la variable g dans les onpaint qui était disposée à la fin de la fonction et ceci bloquait l'éxecution de la page.

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/09/2006, 13h08
  2. [C#] Application.Run sans Form
    Par papouAlain dans le forum Windows Forms
    Réponses: 4
    Dernier message: 09/06/2006, 16h36
  3. [C#]Fenetre de chargement avant Application.run()
    Par 5:35pm dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2006, 03h02
  4. [VBA][EXCEL]Erreur '1004' avec "Application.Run"
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2006, 10h50
  5. Application.run ?
    Par bobymaw dans le forum Langage
    Réponses: 5
    Dernier message: 29/12/2005, 20h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo