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

Macros et VBA Excel Discussion :

bloquage d' excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    Bonjour
    Je suis travaille actuellement sur un logiciel de "pricing" en finance, sous VBA et Excel, dans lequel j'ai fait des macros en VBA.
    Ce sont des calculs qui peuvent etre parfois assez "longs". (environ 1 minute)

    Il se touve que quand je lance ces calculs, Excel s'execute, mais il plante apres ces calculs. Plus exactement, il se bloque.

    Pour debloquer excel, il faut cliquer sur la crois rouge en haut a droite.
    Et pour reutiliser excel, il faut sauvergarder le fichier, puis le fermer et le relancer.
    Mais meme apres cette operation, ca se rebloque


    Est ce que vous comprenez le probleme auquel je suis confronté?
    Si vous avez deja rencontré ce genre de pb, comment peut on les resoudre?

    Il ne me semble pas que les calculs soient intensifs.
    Ca dure tout au plus une minute.
    Il faut savoir que j'utilise des DLL, que j'ai faite moi meme, mais ca ne change rien.
    faut il libere de la mémoire?
    Merci

    en revanche quand j'ouvre l'environnemen VBA
    et que je lance macro apres macro, ca ne se bloque pas tout le temps

    Je pb est que l'utilisateur du fichier ne vas pas ouvrir vba et lancer les macros a la main
    il va cliquer sur les boutons du logiciel VBA, et qui le font bloquer comme je le decris precedemment

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Citation Envoyé par deubelte Voir le message
    en revanche quand j'ouvre l'environnemen VBA
    et que je lance macro apres macro, ca ne se bloque pas tout le temps

    Je pb est que l'utilisateur du fichier ne vas pas ouvrir vba et lancer les macros a la main
    il va cliquer sur les boutons du logiciel VBA, et qui le font bloquer comme je le decris precedemment
    Salut
    Déjà, édite tes postes au lieu d'en ajouter

    Si "ca ne se bloque pas tout le temps", il serait interessant de savoir
    - quand
    - si c'est toujours au même endroit
    - si ça dépend du travail demandé
    etc...

    S'il se bloque, c'est qu'il a de bonnes raisons de le faire.

    Comme tu n'as pas de message d'erreur, je pense plutôt à un problème extérieur, sauf que ça peut simplement être une boucle infinie, mais là, ma boule de cristal étant en panne, je ne peux pas t'aider.

    Regardes si dans tes macros, tu as des instructions dont le champ est "Application" et vérifies qu'elles ne provoquent pas ton problème

    Si tu as des macros à lancement automatique, (worksheet_Change par exemple) vérifies qu'elles n'induisent pas une séquence infinie, etc...

    Comme je ne suis pas devin, je ne peux aller plus loin sans infos

    A+

  3. #3
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    merci pour la reponse

    Citation Envoyé par Gorfael
    Si "ca ne se bloque pas tout le temps", il serait interessant de savoir
    - quand
    Generalement, a la fin de la macro que je veux exectuer.

    Citation Envoyé par Gorfael
    - si c'est toujours au même endroit
    Oui, a la fin.

    Citation Envoyé par Gorfael
    - si ça dépend du travail demandé
    non

    En gros, la feuille excel reste figée. Je ne peux plus cliquer dessus.

    Citation Envoyé par Gorfael
    sauf que ça peut simplement être une boucle infinie
    pas de boucle infinie, ni d'appel recursif.

    Citation Envoyé par Gorfael
    Application
    Il y a des declaration avec "application" du style:
    Application.AddIns.Add
    ou

    Application.ScreenUpdating = False

    ou :
    Application.Pi()

    Citation Envoyé par Gorfael
    (worksheet_Change par exemple)
    non

    Ce qui se passe, c'est que la macro s'execute tres bien.
    Mais la feuille excel reste figée lorsque je passe de l'envi VBA vers l'envi Excel.
    Il faut fermer la feuille pour la relancer.
    Pour l'instant, je declare tous les types, toutes les variables avec byval, byref
    et on verra ensuite

    peut etre est-ce un pb de mémoire.

    Mais je peux pas en dire plus

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Souvent,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.screenupdating = false
    suffit et il n'est pas nécessaire que la macro se termine par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    application.screenupdating = true
    , mais parfois, ne pas repasser le rafraîchissement d'écran à TRUE en fin de macro peut bloquer l'affichage. J'ai déjà constaté cela notamment après une modification de mise en page.

    Dès lors, il serait peut-être intéressant que tu ajoutes une ligne en fin de macro.

    Tu nous dis ce qu'il en est?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Avant toute macro, mets déjà et si ce n'est déjà fait
    Le seul moyen de savoir si toutes tes variables sont déclarées.
    Les questions que je me pose...
    As-tu des goto dans ton code ?
    Fais-tu appel à un Timer ?
    Utilises-tu Application.screenUpdating = False ?
    Le remets-tu à true en sortie ?
    Etc.
    Pour t'aider, il serait intéressant de nous montrer le code de sortie de macro.
    A+

  6. #6
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    Citation Envoyé par Pierre Fauconnier
    Tu nous dis ce qu'il en est?
    non pb,

    par ailleurs, j'en profite pour vous signaler une autre erreur
    je viens de declarer touts les types:

    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
    Function sig(ByVal f As Double, ByVal k As Double, ByVal beta As Double, ByVal nu As Double, ByVal alpha2 As Double, ByVal _
     tex As Double, ByVal rho As Double)
    Dim D1, D2, z, N11, N12, N13, n1 As Double
     
    D1 = 1 / ((f * k) ^ (0.5 - 0.5 * beta) * (1 + (1 - beta) ^ 2 / 24 * (Log(f / k) ^ 2 + (1 - beta) ^ 4 / 1920 * (Log(f / k) ^ 4))))
     
    z = nu / alpha2 * (f * k) ^ (0.5 - 0.5 * beta) * Log(f / k)
     
    D2 = 1 / (Log((Sqr(1 - 2 * rho * z + z * z) + z - rho) / (1 - rho)))
     
    N11 = (1 - beta) ^ 2 / 24 * alpha2 ^ 2 / (f * k) ^ (1 - beta)
    N12 = 0.25 * rho * beta * nu * alpha2 / (f * k) ^ (0.5 - 0.5 * beta)
    N13 = (2 - 3 * rho * rho) / 24 * nu * nu
     
    n1 = (1 + tex * (N11 + N12 + N13))
     
    sig = alpha2 * z * D2 * n1 * D1
    'SIG = z
    End Function
    et quand je lance, et que le curseur jaune se trouve sur D1
    il y a un message d'erreur qui dit:

    Run-time errror 16
    expression too complex

    Ca le faisait pas avant

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pour D1, utilise des variables intermédiaires
    Citation Envoyé par deubelte
    Ca le faisait pas avant
    Je suppose que ça doit dépendre de la charge du µp à l'instant T...
    Le pb est que pendant qu'il travaille sur une ligne, la procédure se poursuit. Laisse-lui du temps de faire les calculs
    Si tu ne veux pas utiliser de variables intermédiaires, teste en ajoutant un DoEvents après chaque ligne de calculs (sans garantie aucune mais tu peux tester, tu en tireras toujours "une" conclusion...)
    A+

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Attention
    Ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim D1, D2, z, N11, N12, N13, n1 As Double
    ne déclare par D1, D2... comme Double, mais seulement n1. Les autres variables sont par défaut des Variant.

    Tu es obligé d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim D1 as Double, D2 as Double, ...
    pour préciser le type de chaque variable.

    As-tu pu tester le screenupdating = true ?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    merci pour la reponse
    Fais-tu appel à un Timer ?
    >>non
    Utilises-tu Application.screenUpdating = False ?
    >>oui, mais plus maintenant
    Le remets-tu à true en sortie ?
    >non

    As-tu des goto dans ton code ?
    >>non

    Au fait, quel est l'intérêt, outre bien sur pour la propreté du code, de déclarer les types?
    Y a t il une raison autre que la rapidité du code?


    Sinon, j'ai enlevé les screenupdating, il semle que ca ne plante plus.

  10. #10
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    Merci pour l'info:
    Ta ligne
    Code :

    Dim D1, D2, z, N11, N12, N13, n1 As Double

    ne déclare par D1, D2... comme Double, mais seulement n1. Les autres variables sont par défaut des Variant.

    Tu es obligé d'écrire
    Code :

    dim D1 as Double, D2 as Double, ...

    pour préciser le type de chaque variable.

    Parce que je croyais que ca declarait toute la ligne en double
    et je fais ca tout le temps

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Sinon, j'ai enlevé les screenupdating, il semble que ca ne plante plus.
    Une explication possible : Application.screenUpdating = False accélère les procédures. En l'enlevant, tu les ralentis. Essaie de le remettre et d'ajouter un DoEvents entre chaque ligne de calculs. Tu testes et tu nous dis. Si c'est bon, ce sera plus propre que d'enlever un code qui accélère les procédures.
    Mais remets-le à True en sortie.
    A+

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Le screenupdating permet d'accélérer l'exécution du code, parfois de manière substantielle.

    Il est donc, à mon sens, préférable de le laisser, mais de vérifier la sortie de la macro.

    Personnellement, je n'aimes pas les Exit Sub, car ils permettent trop de portes de sortie.
    Je préfère utiliser une étiquette Fin après laquelle je ferme mes objets, je remets mes options d'application (screenupdating, Calculation, ...) comme elles étaient avant ma macro...
    Exemple de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub MaMacro()
        On Error Goto Fin:
        Application.Screenupdating = False
        if Condition1 then goto Fin ' plutôt que Exit Sub
        ...
        ...
     
    Fin:
        if err<>0 then msgbox "Erreur"
        Application.ScreenUpdating = True
    End Sub
    Code plus propre, une seule sortie de procédure ou de fonction. Tu contrôles donc mieux les différents paramètres, et tu peux sortir "proprement" de ta procédure

    Ok?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    Ok, merci pour les reponses

    je vais essayer le DoEvent
    Je sais pas ce que c'est mais je vais etudier

    Je vais modifier tous les typages que j'ai fait du style
    Dim ,,,,, as double


    Parfois quand je lance une macro, et que je la stope,
    il y a un message d'erreur qui dit:

    Ca signifie quoi?
    Merci

  14. #14
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par deubelte Voir le message
    Parfois quand je lance une macro, et que je la stope,
    il y a un message d'erreur qui dit:

    Ca signifie quoi?
    Merci
    Tu peux avoir ce problème avec l'installation/désinstallation d'Add-In, lorsque l'Add-In est désinstallé puis appelé par le code (souvent évènementiel). Mais cette erreur générique peut avoir beaucoup d'autres causes, et il serait illusoir e de croire que les messages d'erreurs sont tous explicites. Pour ma part, je considère par défaut qu'ils sont tous sybillins...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Ouskel'n'or...

    C'est effectivement un problème Input/Output...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par deubelte
    je vais essayer le DoEvent
    Je sais pas ce que c'est mais je vais etudier
    J'ai bien mis à tout hasard... DoEvents permet (pas toujours) au système de faire ses petites affaires avant de passer à autre chose

    Salut Pierre, de retour ? Tu manquais

  17. #17
    Membre éprouvé
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Par défaut
    Ok merci
    Je vais voir pour doevent

    Mais voici en fait comment je declare ma macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub Macro
    Call Function1
    Call Function2
    Call Function3
    ...
    End sub
    Je peux faire par exemple:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Macro
     
    Application.Screenupdating=False
    Call Function1
    Call Function2
    Call Function3
    ..
    Application.Screenupdating=True
    End sub
    Je pense que il y avait plusieurs Application.Screenupdating=True
    dans les fonctions.
    Comme je ne declarais pas a la fin:
    Application.Screenupdating=False,
    ca fait qu'on avait des déclarations "emboitées".

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Ta dernière proposition est effectivement plus mieux

  19. #19
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    J'ai bien mis à tout hasard... DoEvents permet (pas toujours) au système de faire ses petites affaires avant de passer à autre chose

    Salut Pierre, de retour ? Tu manquais
    Beaucoup de boulot pour l'instant... Mais je m'accorde une petite pause...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [VB6] [Excel] Résultat d'une requete ds une feuille
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 07/01/2003, 17h52
  2. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55
  3. [Kylix] kylix et excel
    Par gothe dans le forum EDI
    Réponses: 1
    Dernier message: 19/09/2002, 19h44
  4. Réponses: 2
    Dernier message: 22/07/2002, 12h13
  5. [Kylix] Excel via kylix
    Par Billy joel dans le forum EDI
    Réponses: 1
    Dernier message: 23/05/2002, 11h57

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