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 :

Membre de méthode ou de données introuvable


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Brebiou
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 86
    Points : 88
    Points
    88
    Par défaut Membre de méthode ou de données introuvable
    Bonjour a tous, j'ai acheté cette macro a Siemens pour faire quelques économies de temps, mais lors de l'exécution, Excel me surligne ".dlgFindDBFile" et me dit "Membre de méthode ou de données introuvable".

    HotLine Siemens "Ca a toujours marché, mettez a jour Excel"...

    Donc je m'en remet a vous, si vous seriez plus futé que les gars de Siemens, ce qui ne m'étonnerait pas

    Voici le code:

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Sub Read_DB()
        Dim dlg As New dlgFile
        Dim objTextStream As Object
        Dim strLine As String
        Dim strMerker As String
        Dim nIndex As Integer
     
        nIndex = 10
     
    If CheckWorksheet Then
     
        dlg.dlgFindDBFile.ShowOpen
        Application.ScreenUpdating = False
     
        If dlg.dlgFindDBFile.FileName <> "" Then
            Worksheets("DB").Range("A9:E32767").ClearContents
            Worksheets("DB").Range("A9:E32767").Select
            Selection.Interior.ColorIndex = xlNone
     
            Set objTextStream = g_objFst.OpenTextFile(dlg.dlgFindDBFile.FileName, 1)
            If Not (objTextStream Is Nothing) Then
                'den Anfang suchen
                Do While objTextStream.AtEndOfStream <> True
                    strLine = objTextStream.Readline
                    If InStr(1, strLine, "DATA_BLOCK", vbTextCompare) > 0 Then
                        'DB-Anfang gefunden
                        If InStr(1, strLine, " DB ") > 0 Then
                            Worksheets("DB").Cells(1, 3) = Trim(Mid(strLine, InStr(InStr(1, strLine, "DATA_BLOCK", vbTextCompare) + 10, _
                                                                strLine, "DB", vbTextCompare) + 2))
                        Else
                            Worksheets("DB").Cells(1, 3) = Trim(Mid(strLine, InStr(InStr(1, strLine, "DATA_BLOCK", vbTextCompare) + 10, _
                                                                strLine, """", vbTextCompare) + 1))
                            Worksheets("DB").Cells(1, 3) = Mid(Worksheets("DB").Cells(1, 3), 1, Len(Worksheets("DB").Cells(1, 3)) - 1)
                        End If
                        Exit Do
                    End If
                Loop
                Do While objTextStream.AtEndOfStream <> True
                    strLine = objTextStream.Readline
                    If InStr(1, strLine, "TITLE", vbTextCompare) > 0 Then
                        Worksheets("DB").Cells(3, 2) = Trim(Mid(strLine, InStr(InStr(1, strLine, "TITLE", vbTextCompare) + 5, _
                                                            strLine, "=", vbTextCompare) + 1))
                    ElseIf InStr(1, strLine, "AUTHOR", vbTextCompare) > 0 Then
                        Worksheets("DB").Cells(3, 2) = Trim(Mid(strLine, InStr(InStr(1, strLine, "AUTHOR", vbTextCompare) + 6, _
                                                            strLine, ":", vbTextCompare) + 1))
                    ElseIf InStr(1, strLine, "FAMILY", vbTextCompare) > 0 Then
                        Worksheets("DB").Cells(4, 2) = Trim(Mid(strLine, InStr(InStr(1, strLine, "FAMILY", vbTextCompare) + 6, _
                                                            strLine, ":", vbTextCompare) + 1))
                    ElseIf InStr(1, strLine, "NAME", vbTextCompare) > 0 Then
                        Worksheets("DB").Cells(5, 2) = Trim(Mid(strLine, InStr(InStr(1, strLine, "NAME", vbTextCompare) + 4, _
                                                            strLine, ":", vbTextCompare) + 1))
                    ElseIf InStr(1, strLine, "VERSION", vbTextCompare) > 0 Then
                        strMerker = Trim(Mid(strLine, InStr(InStr(1, strLine, "VERSION", vbTextCompare) + 7, _
                                            strLine, ":", vbTextCompare) + 1))
                        Worksheets("DB").Cells(6, 2) = Left(strMerker, InStr(1, strMerker, "."))
                        Worksheets("DB").Cells(6, 3) = Right(strMerker, Len(strMerker) - InStr(1, strMerker, "."))
                    ElseIf InStr(1, strLine, "BEGIN", vbTextCompare) > 0 Then
                        'die Aktualwerte einlesen
                        ReadNextAktValue strLine, objTextStream, nIndex
                    Else
                        'die Variablen einlesen
                        ReadNextVar strLine, nIndex
                    End If
                Loop
                objTextStream.Close
            Else
                MsgBox "File not found"
            End If
        End If
     
        Application.ScreenUpdating = False
        Worksheets("DB").Cells(1, 1).Select
        Set dlg = Nothing
    End If
     
    End Sub
    Merci d'avance

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Il ne manquerait pas un morceau à ton code?

    dlgFile n'est pas un type standard de VBA.

    Alors, soit ce type est défini ailleurs, soit il y a une référence à ajouter à ton projet.

  3. #3
    Membre régulier Avatar de Brebiou
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 86
    Points : 88
    Points
    88
    Par défaut
    dlgFile est le nom d'une fenêtre, qui est vide soit dit en passant.

    Je vais me pencher du coté de la référence manquante, mais il n'est pas censé me prévenir?

    Je sais qu'il me manquant une référence de bases et qu'il me l'avait signalé alors que la, non...

    Merci pour les pistes

  4. #4
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par Brebiou Voir le message
    dlgFile est le nom d'une fenêtre
    Dans ce cas, il y a une incohérence dans ton code.
    dlgFile ne peut pas être, à la fois, le nom d'un objet et celui d'un Type (As ...).

  5. #5
    Membre régulier Avatar de Brebiou
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 86
    Points : 88
    Points
    88
    Par défaut
    Merci de tes réponses...

    En fait l'erreur n'était pas la.

    En voyant ton message, j'ai voulu bidouiller la source (qui n'est pas de moi, mais de Siemens), et machinalement je l'ai compiler, plus une seule erreur, tout marche nikel.

    Hier il me manquait la référence Microsoft Common Dialog Control (Comdlg32.ocx), je l'ai rajouté, et j'avais l'erreur qui est a l'origine de ce topic.

    Mais j'ai mal compris l'erreur, en fait il couinait a cause du ShowOpen, qu'il ne connaissait pas

    Du coup, je retiendrai qu'a l'ajout d'une référence, il faut redémarrer son ordinateur.

    Merci de m'avoir consacré du temps alors que je n'ai pas réfléchi assez et à bientôt

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par Brebiou Voir le message
    Du coup, je retiendrai qu'a l'ajout d'une référence, il faut redémarrer son ordinateur.
    Curieux...

    Je n'ai jamais eu le cas.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Salut,

    J'ai le même problème mais avec un ShowSave. Comment as tu fait pour que VB le reconnaisse ?

    Merci

  8. #8
    Membre régulier Avatar de Brebiou
    Homme Profil pro
    Automaticien
    Inscrit en
    Décembre 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 86
    Points : 88
    Points
    88
    Par défaut
    J'ai simplement ajouté l'activeX qui me manquait (Microsoft Common Dialog Control (Comdlg32.ocx)) et j'ai redémarré mon ordinateur...

    N'oublie pas de vérifier que tes références sont bien sélectionné.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/10/2010, 16h01
  2. Erreur de compilation: Membre de méthode ou de données introuvable
    Par toniodelavega dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/08/2010, 08h03
  3. Membre de méthode ou de données introuvable..
    Par Falcdyr dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/04/2008, 12h17
  4. Membre de méthodes ou de données introuvable
    Par titeZ dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/08/2007, 18h06
  5. Membre de méthode ou de donnée introuvable
    Par samtheh dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/07/2007, 09h37

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