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 :

Erreur EXCEL VBA 91.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 9
    Par défaut Erreur EXCEL VBA 91.
    Bonjour à tous !

    Je vais faire concret, je n'y connais rien au Visual Basic ! Je sais bien utilisé EXCEL, mais quand j'ai une erreur VBA je suis perdu, mais il y a un autre problème. Je dois rendre mon dossier au travail lundi sans faute. Et le problème c'est que je ne peux pas finir mon dossier avec cette erreur !

    C'est pourquoi je m'en remet à vous. Voici la ligne de code concernée affichée par EXCEL lorsque je clique sur "débogage". Je vous met la ligne concernée en rouge.

    Le message d'erreur complet est "Variable objet ou variable de bloc with non définie".

    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
    ' Mise en couleur des cellules des feuilles de risques en aval
    Public Sub setSeverity(CodeNameFeuilleActive As String, theColor As Long)
        Dim Start As Boolean, i As Integer, CodeNameFeuilleRef As String, lastColorIndex As Long, FeuilleRef As Worksheet, Ref As Range, IntitSynthese As String, lastPattern As Long
        ' Par sécurité :
            With ActiveCell
                gRow = .Row
                gCol = .Column
            End With
        Application.ScreenUpdating = False
        Start = False
            For i = 1 To 4
                CodeNameFeuilleRef = "risk_" & i
                If CodeNameFeuilleRef = CodeNameFeuilleActive Then Start = True
                Set FeuilleRef = Conversion(ThisWorkbook, CodeNameFeuilleRef)
                Set Ref = FeuilleRef.Cells(gRow, gCol)
                If Not Start Then
                    lastColorIndex = Ref.Interior.ColorIndex
                    lastPattern = Ref.Interior.Pattern
                End If
                If Start Then
                    FeuilleRef.Unprotect
                    Ref.Interior.ColorIndex = Range(CodeNameFeuilleActive).Cells(theColor, 1).Interior.ColorIndex
                    Ref.Interior.Pattern = Range(CodeNameFeuilleActive).Cells(theColor, 1).Interior.Pattern
                        If DRisques.CBRisqueImportant Then
                            Ref.Interior.Pattern = Notice.Range("RisqueNonRenseigné").Offset(DRisques.LNiveau.ListIndex, 1).Interior.Pattern
                        End If
                    Protection FeuilleRef
                End If
            Next
    Merci beaucoup à vous ! N'hésitez pas à demander si vous avez besoin d'autres informations.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je n'ai pas Excel 2016 et ignore ce que fait cette ligne de code avec cette version :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set FeuilleRef = Conversion(ThisWorkbook, CodeNameFeuilleRef)
    Que fait-elle ?

    A moins que tu n'appelles là une procédure de ton cru. Si oui : montre son code

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Peut-on voir la procédure "conversion" également ? Ainsi que l'appel de ta procédure setSeverity (pour visualiser les paramètres que tu as fournis)

    On dirait que FeuilleRef est Nothing .... mais sans éléments complémentaires on ne peut pas être plus fiable et précis.

    Tu peux déjà tester ce que contient la variable FeuilleRef pour écarter cette hypothèse

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour,

    en mode débogage regarder la valeur de chacune des trois variables de la ligne dans la fenêtre Variables locales,
    ayant un doute sur la méthode d'affectation de FeuilleRef


    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 9
    Par défaut
    Merci de vos réponses rapides.

    Quand vous dites que vous voulez la procédure de conversion, comment puis-je vous la délivrer ?

    Quand vous dites "tester" voir ce que contient la variable, comment faire ?

    Voulez-vous que je vous donne l'entièreté du code du fichier ?

    En vous remerciant ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    tu as dans ton fichier une fonction qui s'appelle "conversion"

    on voudrait que tu la copie intégralement sur le forum
    ceci, pour vérifier si tu gères correctement tous les cas possibles, y compris le fait qu'il puisse renvoyer (ou non) un objet Nothing

    +

    la ligne de code de la procédure principale qui appelle la sous-procédure setSeverity()
    un truc du genre setSeverity(MonPremierArgument, MonSecondArgument,etc...)
    ceci afin qu'on puisse vérifier que tu fournis les paramètres adéquats à ta procédure

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 9
    Par défaut
    La fonction conversion est dans le ruban des fonctions/outils d'EXCEL ou de VBA ? Car je ne la trouve pas pour l'instant. Je continue de chercher je vous tiens au courant.

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2016
    Messages : 9
    Par défaut
    ah j'ai trouvé ! c'est dans une liste déroulante a côté du code et on choisi soit "setseverity" ou "conversion"

    pour conversion il me renvoit à cette partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' MG 13/3/2014 - Pour remplacer la fonction getSheetByCodeName
    Public Function Conversion(wb As Workbook, f As String) As Object
    ' Permet à partir du CodeName, de passer à la feuille de classeur correspondante (l'objet).
    End Function
    et pour setseverity :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    ' Mise en couleur des cellules des feuilles de risques en aval
    Public Sub setSeverity(CodeNameFeuilleActive As String, theColor As Long)
        Dim Start As Boolean, i As Integer, CodeNameFeuilleRef As String, lastColorIndex As Long, FeuilleRef As Worksheet, Ref As Range, IntitSynthese As String, lastPattern As Long
        ' Par sécurité :
            With ActiveCell
                gRow = .Row
                gCol = .Column
            End With
        Application.ScreenUpdating = False
        Start = False
            For i = 1 To 4
                CodeNameFeuilleRef = "risk_" & i
                If CodeNameFeuilleRef = CodeNameFeuilleActive Then Start = True
                Set FeuilleRef = Conversion(ThisWorkbook, CodeNameFeuilleRef)
                Set Ref = FeuilleRef.Cells(gRow, gCol)
                If Not Start Then
                    lastColorIndex = Ref.Interior.ColorIndex
                    lastPattern = Ref.Interior.Pattern
                End If
                If Start Then
                    FeuilleRef.Unprotect
                    Ref.Interior.ColorIndex = Range(CodeNameFeuilleActive).Cells(theColor, 1).Interior.ColorIndex
                    Ref.Interior.Pattern = Range(CodeNameFeuilleActive).Cells(theColor, 1).Interior.Pattern
                        If DRisques.CBRisqueImportant Then
                            Ref.Interior.Pattern = Notice.Range("RisqueNonRenseigné").Offset(DRisques.LNiveau.ListIndex, 1).Interior.Pattern
                        End If
                    Protection FeuilleRef
                End If
            Next
        ' Report couleur dans la synthèse
        Set FeuilleRef = Conversion(ThisWorkbook, "synthese")
        Set Ref = FeuilleRef.Cells(gRow, gCol)
        FeuilleRef.Unprotect
        Ref.Interior.ColorIndex = Range(CodeNameFeuilleActive).Cells(theColor, 1).Interior.ColorIndex
        Ref.Interior.Pattern = Range(CodeNameFeuilleActive).Cells(theColor, 1).Interior.Pattern
            If DRisques.CBRisqueImportant Then
                Ref.Interior.Pattern = Notice.Range("RisqueNonRenseigné").Offset(DRisques.LNiveau.ListIndex, 1).Interior.Pattern
            End If
            If lastColorIndex <> FeuilleRef.Cells(gRow, gCol).Interior.ColorIndex Or lastPattern <> FeuilleRef.Cells(gRow, gCol).Interior.Pattern Then
                    If CodeNameFeuilleActive = "risk_2" Then
                        IntitSynthese = "CI"
                    ElseIf CodeNameFeuilleActive = "risk_3" Then
                        IntitSynthese = "EC"
                    Else
                        IntitSynthese = ""
                    End If
                FeuilleRef.Cells(gRow, gCol) = IntitSynthese
            End If
        Protection FeuilleRef
        Application.ScreenUpdating = True
    End Sub

  9. #9
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    J'espère que ce n'est pas encore un bête Copier / Coller de code …




    _________________________________________________________________________________________________________
    Copier / Coller n'est pas coder !

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Tu dois quand-même savoir, puisque tu as écrit cette ligne de code, au moins ce qu'elle est supposée faire, non ? (voir mon message plus haut).
    Ben voilà (messages croisés) --->> Elle ne fait rigoureusement rien et retourne donc Nothing.

Discussions similaires

  1. Message d'erreur Excel VBA
    Par progheure dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/02/2013, 10h10
  2. Erreur sur hasTitle Excel vba
    Par celiaaa dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/06/2007, 12h55
  3. EXCEL/ VBA Erreur sur le code VBA : rediriger l’erreur
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/12/2006, 16h28
  4. erreur de conexion a une base de donneés access avec excel(vba)
    Par leo13 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/11/2006, 09h09
  5. [VBA-E] Message Erreur EXCEL
    Par flyfrog dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/05/2006, 14h43

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