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 d'exécution 9 : L'indice est en dehors des dimension du tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 6
    Par défaut Erreur d'exécution 9 : L'indice est en dehors des dimension du tableau
    Bonjour !

    Je souhaite utiliser une macro Excel pour renommer une série de fichiers pdf. Dans la colonne A se trouvent les noms d'origine et dans la colonne B les noms que je souhaite donner aux fichiers. Je suis toute débutante en VBA et j'ai combiné plusieurs programmes trouvés sur des forums pour arriver au résultat suivant :

    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
    Sub macro2()
     
     Sheets(Renommer).Select
        Dim derlign As Long
        Dim k As Long
        derlign = Range("A2:s2", "A5:s5").End(xlDown).Row
     
        For k = 2 To derlign
     
        Dim AncienNom As String, NouveauNom As String
        AncienNom = "Users/Coline/Desktop/renommage de fichiers pdf/LOAD/" & Range("A" & k)
        NouveauNom = "Users/Coline/Desktop/renommage de fichiers pdf/LOAD/" & Range("B" & k)
        On Error Resume Next
        Name AncienNom As NouveauNom
        If Err = 75 Then Exit Sub
        Next k
    End Sub
    Lorsque je lance le programme, l'erreur d'exécution 9 : l'indice est en dehors des dimensions du tableau apparaît. Après plusieurs tests je ne trouve pas ce qui provoque ce message d'erreur.

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    1- mettre ton code entre balise (#) pour faciliter la lecture
    2- je crois que l'erreur vient de la détermination de la dernière ligne non vide que je trouve bizarre
    (moi aussi autodidacte et peut être que c'est correcte ce que tu as écris à savoir )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    derlign = Range("A2:s2", "A5:s5").End(xlDown).Row
    je préfère et pour éviter tous risque déclarer l'onglet sujet de votre code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Ws As Worksheet 
    'Attribue la référence objet à la variable 
    'La feuille est un Objet: la variable doit donc être précédée de l'instruction Set lors de l'attibution. 
    Set Ws = Worksheets("Feuil2")
    et puis déclarer la dernière ligne comme ce ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dim derlig as long
     
    derlig = ws.Range("A" & Rows.Count).End(xlUp).Row
    pour tester la valeur de derlig vous pouvez récupérer cette valeur via message et la comparer avec vos données

    j'espère que ça t'aide à avancer

    Bonne continuation

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par ColineB Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets(Renommer).Select
    D'où vient ce Renommer ?
    Si c'est une variable, où (et comment) est-elle déclarée et initialisée ?
    Si c'est un nom d'onglet, il manque les guillemets.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 6
    Par défaut
    Merci BENNASR, cela me paraît effectivement mieux, mais je rencontre toujours le même message d'erreur lorsque je lance le programme corrigé comme suit :

    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
    Sub macro2()
    Sheets(Renommer).Select
    Dim derlign As Long
    Dim k As Long
    Dim Ws As Worksheet
    'Attribue la référence objet à la variable
    'La feuille est un Objet: la variable doit donc être précédée de l'instruction Set lors de l'attibution.
    Set Ws = Worksheets("Feuil1")
     
    Dim derlig As Long
    derlign = Ws.Range("A" & Rows.Count).End(xlUp).Row
     
    For k = 2 To derlign
     
    Dim AncienNom As String, NouveauNom As String
    AncienNom = "Users/Coline/Desktop/renommage de fichiers pdf/LOAD/" & Range("A" & k)
    NouveauNom = "Users/Coline/Desktop/renommage de fichiers pdf/LOAD/" & Range("B" & k)
    On Error Resume Next
    Name AncienNom As NouveauNom
    If Err = 75 Then Exit Sub
    Next k
    End Sub

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 6
    Par défaut
    Citation Envoyé par Menhir Voir le message
    D'où vient ce Renommer ?
    Si c'est une variable, où (et comment) est-elle déclarée et initialisée ?
    Si c'est un nom d'onglet, il manque les guillemets.

    Il s'agit du nom de mon fichier Excel dans lequel se trouvent les noms des fichiers.
    Lorsque j'ai copié cette partie du code, le nom du fichier s'est mis automatiquement à cet endroit-là.

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par ColineB Voir le message
    Il s'agit du nom de mon fichier Excel dans lequel se trouvent les noms des fichiers.
    Les objets Sheets ne référencent pas de fichiers mais des onglets (feuilles).

    Lorsque j'ai copié cette partie du code, le nom du fichier s'est mis automatiquement à cet endroit-là.
    Il est peu probable que l'enregistrement automatique de macro ait généré une variable.
    Donc, s'il a écrit cette ligne, c'est que Renommer est un nom de feuille (et non de fichier) et il l'a forcément mis entre guillemets.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2020
    Messages : 6
    Par défaut
    Menhir le nom s'est bien mis tout seul (ce que j'ai effectivement trouvé bizarre). J'ai suivi ton conseil et je l'ai remplacé par "Feuil1" comme suit, et le programme n'affiche plus de message d'erreur mais il ne se passe rien du tout, les fichiers ne sont pas renommés.

    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
    Sub macro2()
    Sheets("Feuil1").Select
    Dim derlign As Long
    Dim k As Long
    Dim Ws As Worksheet
    'Attribue la référence objet à la variable
    'La feuille est un Objet: la variable doit donc être précédée de l'instruction Set lors de l'attibution.
    Set Ws = Worksheets("Feuil1")
     
    Dim derlig As Long
    derlign = Ws.Range("A" & Rows.Count).End(xlUp).Row
     
    For k = 2 To derlign
     
    Dim AncienNom As String, NouveauNom As String
    AncienNom = "Users/Coline/Desktop/renommage de fichiers pdf/LOAD/" & Range("A" & k)
    NouveauNom = "Users/Coline/Desktop/renommage de fichiers pdf/LOAD/" & Range("B" & k)
    On Error Resume Next
    Name AncienNom As NouveauNom
    If Err = 75 Then Exit Sub
    Next k
    End Sub

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Ce que recommande Menhir (salut au passage) et de mettre le nom de l'onglet entre guillemets à savoir "Renommer" et non pas de remplacer par feuil1 :
    Sheets("Renommer").select

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par ColineB Voir le message
    Menhir le nom s'est bien mis tout seul
    Je le répète, si l'enregistrement automatique a mis un nom dans Sheets, c'était obligatoirement un nom d'onglet (et non de fichier) et il était encadré de guillemets.

    J'ai suivi ton conseil et je l'ai remplacé par "Feuil1" comme suit
    La question me semble triviale mais je préfère la poser : est-ce bien dans Feuil1 que se trouvent tes noms de fichiers ?
    Est-ce bien dans la colonne A ?

    il ne se passe rien du tout, les fichiers ne sont pas renommés.
    Fais tourner ton programme en pas-à-pas en observant le contenu des variables, en particulier derlign et AncienNom.

    On ne mets pas de déclaration de variable (Dim) dans une boucle.

    Supprime ton On Error pour voir la nature d'éventuelles erreur.
    Tu pourras éventuellement le remettre (ce que, personnellement, je déconseille fortement) lorsque le code sera fonctionnel.

Discussions similaires

  1. Erreur d'Exécution 9' : L'indice n'appartient pas à la selection
    Par Sara86 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/04/2013, 17h28
  2. Réponses: 13
    Dernier message: 27/04/2012, 10h57
  3. [Débutant] L'index est en dehors des limites du tableau
    Par Romain35 dans le forum VB.NET
    Réponses: 10
    Dernier message: 03/04/2012, 11h03
  4. erreur d'exécution 9, l'indice n'appartient pas à la sélection
    Par Quentin15 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/06/2011, 17h34
  5. [XL-2007] Erreur d'exécution '9' : l'indice n'appartient pas à la sélection
    Par Akhane dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/02/2011, 21h04

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