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 :

Run-time error '9': Subscript out of range [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 23
    Par défaut Run-time error '9': Subscript out of range
    Bonjour à tous !

    Je sais que cette erreur à déjà été traitée de nombreuses fois, mais je n'ai malheureusement pas pû trouver réponse à ma situation malgrès les nombreuses solutions proposées. Je me retourne donc vers vous.
    Je dois extraire des infos de plus de 5000 fichiers excel (infos de form controls, activeX, ext ...). Pour cela, je possède un fichier contenant toutes les infos nécessaires à cette extraction de données :
    - Une première colonne contenant le nom de mon fichier
    - Une seconde contenant le chemin de mon fichier
    - Les prochaines colonnes serviront à stocker les données nécessaires

    Je possède le bout de code suivant (je veux tout d'abord boucler sur les 900 premiers fichiers) :
    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
    Dim YSheet As Integer
    
    Sub GetDataFromFile()
    Dim sh As Worksheet
    Dim File As String
    
    Set sh = ActiveSheet
    YSheet = 2
    While YSheet <> 900
        File = Workbooks("Mydatas.xlsm").Worksheets("Feuil1").Cells(YSheet, 2).Value
        Workbooks.Open Filename:=File
        If IsWorksheet("MachineDatas") = True Then
            Worksheets("MachineDatas").Activate
        Else
            GoTo NextIteration
        End If
        CheckBoxAndOptions
        TextBox
        Other
    NextIteration:
        Application.DisplayAlerts = False
        If ActiveWorkbook.Name = Workbooks("Mydatas.xlsm").Worksheets("Feuil1").Cells(YSheet, 1).Value Then ActiveWorkbook.Close
        Application.DisplayAlerts = True
        YSheet = YSheet + 1
    Wend
    End Sub
    Pour les fichiers ne possédant pas la feuille "MachineDatas", je veux l'ignorer et passer au fichier suivant.

    Le code ci-dessus marche très bien dans 90% des cas, je ne viens pas forcément vers vous pour trouver une solution toute faite, mais pour comprendre quelle est l'origine de mon problème. Dans les 10% restant, l'erreur suivante apparait pour la ligne de mon code en rouge :

    Run-time error '9':

    Subscript out of range
    Cependant, mon fichier s'ouvre quand même et c'est la que je ne comprends pas quel est le réel problème. Etant donné que le fichier s'était bien ouvert, j'ai essayé d'esquiver l'erreur avec un On Error Resume Next mais je ne dois pas assez bien maîtriser ceci pour l'utiliser, de plus, ça m'embête de laisser passer ceci sans même l'avoir compris.

    Le chemin de mon fichier est exact, l'extension de mes fichiers aussi, tout se passé sans encombre quand je copy past le path de mon fichier.

    Je vous remercie par avance du temps accordé à mon problème, et je vous souhaite une agreeable journée,
    Cordialement,
    François

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voir du coté du gestionnaire d'erreurs
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On Error Resume Next ' Va à l'instruction suivante en cas d'erreur 
    Worksheets("L").Range("A1") = "Hello"
    On Error GoTo 0 ' Rend la main à VBA
    A lire La gestion des erreurs dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 23
    Par défaut
    Bonjour à tous et tout d'abord merci pour vos réponses et votre temps accordé à mon problème.

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Voir du coté du gestionnaire d'erreurs
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On Error Resume Next ' Va à l'instruction suivante en cas d'erreur 
    Worksheets("L").Range("A1") = "Hello"
    On Error GoTo 0 ' Rend la main à VBA
    A lire La gestion des erreurs dans Excel
    Bonjour Philippe,

    Je vais me pencher un peu plus là-dessus merci pour le lien, je vous tiens au courant sur ce que cela donne mais j'ai déjà essayé de manipuler ces gestions d'erreurs sans succès, l'erreur demeurait ...

    Citation Envoyé par Marc-L Voir le message


    Bonjour,

    il faudrait commencer par vérifier ce que contient la variable au moment de l'erreur,
    certainement un fichier n'existant pas dans le chemin indiqué !

    La fonction Dir renvoie une chaîne vide quand le fichier n'existe pas …
    Bonjour Marc,

    La variable File contient malheureusement le bon Path de mon fichier, la colonne correspondante à ce dernier vient d'un parcours de plusieurs dossiers et sous-dossiers, un MsgBox de ma variable me montre également que ce chemin est le bon. Je vais tout de même essayer de verifier une nouvelle fois cela avec la function Dir.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 23
    Par défaut
    Rebonjour,

    J'ai re essayé la gestion d'erreur avec tout type de On Error, et pas moyen, toutes les erreurs possibles et inimaginables sont esquivées, mais pas celles-ci, si quelqu'un d'autre à une idée!

    Merci d'avance,
    Cordialement,
    François

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai re essayé la gestion d'erreur avec tout type de On Error, et pas moyen, toutes les erreurs possibles et inimaginables sont esquivées, mais pas celles-ci
    Toutes les erreurs doivent être interceptées. Le tout est de savoir comment les gérer.
    On ne gère pas toutes les erreurs de la même façon.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 23
    Par défaut
    Bonjour Philippe,

    Merci du temps accordé à mon problème et de ta réponse.
    Je suis actuellement en train de prendre le temps pour réussir à capter l'erreur en fonction de mon code proposé.

    J'espère donc trouver comment "gérer" cette erreur en "l'esquivant" grâce à "On Error", cependant j'aimerai comprendre quelle est l'origine de cette erreur dans le but d'être plus apte à la gérer.

    Je me demandais si, vu que j'ouvre un nouveau fichier Excel, je ne devais pas faire la gestion d'erreur également sur ce fichier (j'ai lu quelques articles sur des fichiers .xlam), n'hésitez pas à donner votre avis là-dessus.
    Je pense cependant que le problème ne doit pas venir de là et doit être resolvable plus simplement.

    Je procède sûrement mal pour ouvrir mon fichier ?

    Cordialement,
    François

  7. #7
    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,

    il faudrait commencer par vérifier ce que contient la variable au moment de l'erreur,
    certainement un fichier n'existant pas dans le chemin indiqué !

    La fonction Dir renvoie une chaîne vide quand le fichier n'existe pas …

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

Discussions similaires

  1. [XL-2007] Error 9 : subscript out of range
    Par Me.Leti dans le forum Excel
    Réponses: 5
    Dernier message: 28/08/2012, 10h06
  2. Réponses: 2
    Dernier message: 15/08/2010, 16h20
  3. [debutant] Run-time error '9': Subscript out of range
    Par NikoBe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/12/2008, 08h26
  4. Réponses: 1
    Dernier message: 23/04/2008, 10h37
  5. [VBA] Run-time error : '35600' Index out of bound
    Par neo2k2 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/03/2008, 16h23

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