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

VBA Access Discussion :

Méthode "Range" de l'objet "_Application" a échoué [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut Méthode "Range" de l'objet "_Application" a échoué
    Bonjour à tous,

    Bon voilà plusieurs jours que je cherche sur le web (ce forum ci, stackoverflow, commentcamarche ...) mais rien n'y fait ...

    J'utilise depuis des lustres un bout de code pour compter le nombre de lignes non vides ...

    L'idée est simple, je reçois des fichiers EXCEL tous les mois de plusieurs pays. Le fichier est préformaté et donc le même pour chaque pays ...

    Ce fichier EXCEL est ensuite importé dans ma base ACCESS ... Tout fonctionne pour tous les pays mais il se trouve que sur UN fichier (pourtant j'ai vérifié il a le bon format, le bon nom avec les onglets etc ...) et sur ce fichier bien spécifique j'ai l'erreur

    "La Méthode "Range" de l'objet "_Application a échoué" qui tombe sur le code suivant ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    varnbrelignes_bos = appXL.Range("BOS!M21").End(xlDown).Row
    Je fais la même chose pour un autre onglet ça fonctionne ... sur les autres fichiers ça fonctionne sur les deux onglets ...

    Franchement je ne comprend vraiment pas ... J'ai testé avec la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    varnbrelignes_bos = appXL.Range("BOS!M21")
    l'erreur tombe encore ... en gros il semble que ça vienne vraiment de la méthode Range ... Et juste sur ce fichier et même plus précisément cet onglet ... Qui pourtant je le répète, semble avoir le bon format etc ...

    Une idée ?

    Merci à tous,

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Se pourrait-il qu'il y ait un caractère non visible dans le nom de l'onglet ?
    Ou un zéro à la place d'une lettre o ?

    A+

  3. #3
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 909
    Par défaut
    Bonjour,
    Je vais peut-être dire une connerie mais euh... les coordonnées des cases Excel en VBA, ce n'est pas que des nombres ?
    Je suis d'accord que les colonnes sous Excel soient des lettres mais me semble qu'il faut les convertir en donnée numérique dans le Vba access.

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut
    Hello,

    Merci de vos retour

    - J'ai tenté de modifier moi même le nom de l'onglet au cas où il comporte un caractère spécial ou autre ... Je l'ai donc renommé avec le bon nom et le problème persiste

    - Concernant les colonnes en lettre à convertir en numérique je n'ai jamais vu ça et comme précisé ce bout précis de code fonctionne parfaitement pour tous les autres fichiers excels renvoyés par mes filiales.

    D'autres pistes ?

    merci encore,

    Cdlt,

  5. #5
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    La seule autre piste est cette remarque que l'on peut lire dans l'aide en ligne, au sujet de la propriété Application.Range.
    Utilisée sans qualificateur d'objet, cette propriété est un raccourci de ActiveSheet.Range (elle renvoie une plage de la feuille active ; si la feuille active n'est pas une feuille de calcul, la propriété échoue).
    Sinon, je tenterai une approche différente.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim appXL As Excel.Application
    Dim oWbk As Excel.Workbook
    Dim oSht As Excel.Worksheet
    Ouverture du classeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oWbk = appXL.Workbooks.Open("chemin complet vers classeur")
    Référencement de la feuille:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set oSht = oWbk.Worksheets("BOS")
    Maintenant je peux utiliser oSht en lieu et place de appXL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    varnbrelignes_bos = oSht.Range("M21").End(xlDown).Row
    oSht.Range est, d'un point de vue syntaxe, plus explicite que appXL.Range.

    A+

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Octobre 2009
    Messages : 127
    Par défaut
    Hello,

    Merci beaucoup c'est résolu de cette manière !

    Clairement, utiliser les bouts du codes qu'on a fait lors de ses premiers pas de dev c'est pas le top ! C'était vraiment moche de tout concaténer comme ça.

    Pourtant hier j'avais bien testé le coup de décomposer en passant par une feuille puis de faire ça ... j'avais du faire une bourde quelque part ...

    Encore merci !

    Bonne journée

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

Discussions similaires

  1. Méthode non acceptée : ajout d'un objet dans une collection
    Par Nzs26 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 09/11/2007, 19h31
  2. Réponses: 3
    Dernier message: 22/05/2006, 21h15

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