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 :

Difficulté à déboguer une fonction


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut Difficulté à déboguer une fonction
    Bonjour,

    J'ai un souci à déboguer mon projet VBA.

    Le procédure que je suis pour déboguer est la suivante:
    - je marque un arrêt à la fin de ma fonction "End Function"
    - ensuite j'utilise la touche F8 qui me permet de pointer sur le début de la fonction et je retape sur F8 pour avancer dans le code.

    Mais le problème c'est que cela marche juste pour une de mes fonctions quand je refais la même procédure pour les autres et beh rien ne se passe.

    Avez vous une idée sur le problème ?

    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Met plusieurs points d'arrêt à l'intérieur de chacune de tes fonctions. De cette manière tu pourras "rentrer" à l'intérieur d'elles lors du mode pas à pas.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Citation Envoyé par Kimy_Ire Voir le message
    Met plusieurs points d'arrêt à l'intérieur de chacune de tes fonctions. De cette manière tu pourras "rentrer" à l'intérieur d'elles lors du mode pas à pas.
    Bonjour,

    J'ai fait ce que tu m'as conseillé j'ai placé pas mal de points d'arrêt dans une de mes fonctions pour la déboguer et j'ai appuyé sur F8 et donc la curseur a pointé sur une macro de protection de la feuille.

    Je suis vraiment perdue

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    A priori, si tu places un point d’arrêt dans ton code et que tu n’atteins pas ce point d’arrêt, c’est que ta fonction n’est pas appelée ou que tu en sors par un branchement.

    Cordialement.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Citation Envoyé par gFZT82 Voir le message
    Bonjour,

    A priori, si tu places un point d’arrêt dans ton code et que tu n’atteins pas ce point d’arrêt, c’est que ta fonction n’est pas appelée ou que tu en sors par un branchement.

    Cordialement.
    Bonjour,

    Justement je veux déboguer cette fonction là car c'est elle qui me récupère les données à partir de ma base sql server.

    Je n'ai pas de branchement particulier dans cette fonction là et j'appelle ma fonction dans mon code avec un "Call " !!!!!

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Bonjour,

    J'ai pu déboguer en créant une nouvelle macro et j'ai mis le code de ma fonction de dans.

    Mais le problème c'est que est ce que je dois supprimer la fonction et laisser juste le code de la macro ? est ce que je peux les laisser tous les deux ?

  7. #7
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Il faudrait que tu montres ce code pour nous permettre de t'aider.

    Cordialement

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 472
    Par défaut
    Citation Envoyé par gFZT82 Voir le message
    Bonjour,

    Il faudrait que tu montres ce code pour nous permettre de t'aider.

    Cordialement
    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
     
     
    Bonjour,
     
    Voilà le code du module que j'ai rajouté et qui contient le code de ma fonction :
     
     
    Sub Insert()
    Dim objDBHelper As New DBHelper
    Dim rs As ADODB.Recordset
    Dim strSP As String
    Dim params As Variant
    Dim test1 As Variant
    Dim test2 As Variant
     
        On Error Resume Next
        strSP = "sp_History"
        params = Array(Array("@IDAct", adVarChar, 70, IDAc, adParamInput) _
                     , Array("@Date", adDate, 10, DateExe, adParamInput))
        Set rs = objDBHelper.RunSPReturnRS(strSP, params)
        If Not rs.EOF Then
            Worksheets(gSheet3Name).Range("Heures") = rs.Fields("Quantity").Value
            Worksheets(gSheet3Name).Range("NUO") = rs.Fields("Amount").Value
            Worksheets(gSheet3Name).Range("Frais") = rs.Fields("PENAmount").Value
            Worksheets(gSheet3Name).Range("Achat") = rs.Fields("CHAmount").Value
     
            Worksheets(gSheet3Name).Range("HeuresA") = rs.Fields("QuantityA").Value
            Worksheets(gSheet3Name).Range("NUOA") = rs.Fields("AmountA").Value
            Worksheets(gSheet3Name).Range("FraisA") = rs.Fields("AmountA").Value
            Worksheets(gSheet3Name).Range("AchatA") = rs.Fields("AmountA").Value
     
     
        End If
        rs.Close
        Set rs = Nothing
    End Sub
    Et là vous avez le code de ma fonction d'origine :

    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
     
    Public Function Insert(ByVal IDAct As String)
    Dim objDBHelper As New DBHelper
    Dim rs As ADODB.Recordset
    Dim strSP As String
    Dim params As Variant
    Dim test1 As Variant
    Dim test2 As Variant
     
        On Error Resume Next
        strSP = "sp_History"
        params = Array(Array("@IDAct", adVarChar, 70, IDAc, adParamInput) _
                     , Array("@Date", adDate, 10, DateExe, adParamInput))
        Set rs = objDBHelper.RunSPReturnRS(strSP, params)
        If Not rs.EOF Then
            Worksheets(gSheet3Name).Range("Heures") = rs.Fields("Quantity").Value
            Worksheets(gSheet3Name).Range("NUO") = rs.Fields("Amount").Value
            Worksheets(gSheet3Name).Range("Frais") = rs.Fields("PENAmount").Value
            Worksheets(gSheet3Name).Range("Achat") = rs.Fields("CHAmount").Value
     
            Worksheets(gSheet3Name).Range("HeuresA") = rs.Fields("QuantityA").Value
            Worksheets(gSheet3Name).Range("NUOA") = rs.Fields("AmountA").Value
            Worksheets(gSheet3Name).Range("FraisA") = rs.Fields("AmountA").Value
            Worksheets(gSheet3Name).Range("AchatA") = rs.Fields("AmountA").Value
     
     
        End If
        rs.Close
        Set rs = Nothing
    End Function
    En gros ce code là permet de récupérer des données insérées dans des colonnes particulières d'un tableau croisé dynamique et ces données là doivent être stockée dans une base de données sql server.

    Je n'arrive pas à récupérer les données insérées dans mon tableau excel du coup je voulais déboguer pour détecter le problème mais je n'y arrivais pas c'est pour ce fait que j'ai rajouté une macro pour pouvoir le faire.

    Merci

Discussions similaires

  1. difficultés avec une fonction variadique
    Par minibus dans le forum Débuter
    Réponses: 1
    Dernier message: 24/07/2009, 14h02
  2. difficulté a comprendre une fonction
    Par roubas dans le forum MATLAB
    Réponses: 11
    Dernier message: 12/02/2009, 15h54
  3. Réponses: 10
    Dernier message: 11/01/2007, 21h45
  4. Difficulté à "inverser" une fonction
    Par gorgonite dans le forum Prolog
    Réponses: 13
    Dernier message: 05/10/2006, 10h13
  5. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14

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