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 :

[VBA-E]erreur 91: variable objet ou variable de bloc With...


Sujet :

Macros et VBA Excel

  1. #1
    cdk
    cdk est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [VBA-E]erreur 91: variable objet ou variable de bloc With...
    Bonjour
    J'ai crée dans une feuille Excel, grâce au visual basic editor, des routines qui vont lire des données dans une feuille Excel fermée pour les mettre dans une base Access.
    Cette application marchait parfaitement depuis plus d'un an MAIS depuis 15 jours, sans que je n'ai rien modifié ni dans la feuille contenant les macros, ni dans l'organisation des feuilles où sont récupérées les données, j'ai une erreur '91' "Variable objet ou variable de bloc with non définie" ?!!!!!

    L'erreur se produit dans une macro précise (trouvée à l'époque sur l'excellent site de Fréderic Sigonneau) qui lit la valeur d'une cellule ou d'un groupe de cellule dans une feuille Excel via une connexion ADO

    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
    Function GetValueWithADO(Classeur As String, Feuille As String, cell As Range)
    'renvoie la valeur de la cellule Cell de la feuille Feuille
    'du classeur fermé Classeur
    'Note : cette fonction est utilisable dans une feuille de calcul
    'Ex : =GetValueWithADO("D:\TestADO.xls";"feuil1";A1)
    Dim RcdSet As Object
    Dim strConn As String
    Dim strCmd As String
    Dim dummyBase As Range
     
      'prépare une "base de données" bidon pour la clause SELECT
      '(une entête fictive et une ligne de données)
      Set dummyBase = cell.Resize(2)
     
      'prépare les commandes ADO et SQL
      strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                    "Data Source=" & Classeur & ";" & _
                    "Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"";"
    '*******************************************
    'msgbox -> strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\monchemin\resultats060220.xls;Extended Properties="Excel 8.0;HDR=No;IMEX=1;";
    '*******************************************
     
      strCmd = "SELECT * FROM [" & Feuille & "$" & dummyBase.Address(0, 0) & "]"
     
    '*******************************************
    'msgbox -> strCmd =  SELECT * FROM [feuil1$A1:A2]
    '*******************************************
     
      'crée l'objet Recordset
      Set RcdSet = CreateObject("ADODB.Recordset")
     
      'va chercher l'info
    '*******************************************
    ' ERREUR SUR CETTE LIGNE:
      RcdSet.Open strCmd, strConn, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly, adCmdText
    '*******************************************
      'et la renvoie
      GetValueWithADO = Application.Clean(RcdSet(0))
      'autre syntaxe possible
      'GetValueWithADO =Application.Clean(RcdSet.GetString(NumRows:=1))
      'nettoyage
      Set RcdSet = Nothing
    End Function 'fs

    Je n'arrive pas à comprendre ce qui a pu changer puisque je n'ai modifié et que ce code fonctionnait !!!

    Merci par avance pour toute info, idée...

    cdk

    Edit
    Bienvenue sur le forum
    Lis les règles du forum, elles pourront t'aider à trouver ce que tu cherches.
    Afin que ton code soit lisible, encadre-le des balises Code et /code. Tu sélectionnes ton code puis un clic sur le bouton Code en haut de la fenêtre d'édition.
    Pour corriger, le bouton "Editer" est là pour ça.
    Conseils gracieusement offert par ouskel'n'or
    Remarque : Dans le code, la mise en caractères gras est inopérante

  2. #2
    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
    Points : 15 543
    Points
    15 543
    Par défaut
    Juste une idée. Essaie avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With RcdSet
          .Open strCmd, strConn, 0, 1, 1 'adOpenForwardOnly, adLockReadOnly, adCmdText 
    ....
     
    End with
    A tout hasard, surtout que tu auras un pb plus bas

    Tu dis

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tu n'aurai pas renommer les feuilles de ton classeur .? la feuil1 existe-t'ell toujours .?

  4. #4
    cdk
    cdk est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour

    Merci pour vos remarques

    Les feuilles du classeur fermé n'ont pas été renommé (j'ai testé, l'erreur se produit aussi maintenant avec des feuilles déjà importées normalement)

    l'erreur persiste avec
    With RcdSet
    .Open ...
    End with

    ??? Je me demande bien ce qui a pu se produire ???

  5. #5
    cdk
    cdk est déconnecté
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé !!!

    Ce qui s'est passé est que j'ai remplacé en janvier ma version test de l'excellent AVAST antivirus par une licence du non moins excellent Kasersky Antivirus et que ce dernier, par defaut, bloque tout (execution ou script) dans la protection en temps réel contre les macro VBA.

    En enlevant la protection le temps des transferts ça marche !!!

    cdk

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

Discussions similaires

  1. [AC-2002] Erreur 91 : variable objet ou variable de bloc width non définie
    Par shakapouet dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/06/2012, 09h28
  2. Erreur 91 : variable objet ou variable de bloc with non définie
    Par blobsam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2011, 17h19
  3. [XL-2007] Message d'erreur : Variable objet ou Variable de bloc With non définie
    Par toushusss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2011, 10h02
  4. erreur 91 variable objet ou variable de bloc with non définie
    Par ballantine's dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 03/12/2009, 16h41
  5. Réponses: 2
    Dernier message: 02/06/2006, 13h47

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