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 array indice n'appartient pas a la sélection


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juin 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Erreur d'exécution array indice n'appartient pas a la sélection
    Bonjour tout le monde,

    J'avance depuis un certain moment sur un fichier et j'avais pour habitude de manipuler des arrays, mais depuis un petit moment je suis bloqué sur un message d'erreur

    Erreur d'exécution '9' : L'indice n'appartient pas à la sélection


    C'est très étrange puisque cette partie de code fonctionnait parfaitement bien avant et je n'ai rien modifié à cet endroit.


    Ce que j'ai déjà essayé de faire :

    – Vérifier les valeurs de n et e

    – Vérifier la valeurs de .cells(e, 2)

    – Changer n ou e par un nombre

    – Augmenter la taille de l'array

    – déclarer l'arrêt seulement dans la section

    et surment d'autres choses...



    Du coup je sais que c'est l'array qui pose un problème.

    Mais je ne sais pas quoi faire pour résoudre le problème...

    Pour déclencher l'erreur :

    Appuyer sur clear, puis sur etape 1

    choisir une taille de travée


    Appuyer sur etape 2 puis etape 3.



    Je vous joints le fichier concerné :



    Je vous remercie par avance de votre précieuse aide
    Fichiers attachés Fichiers attachés

  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
    12 932
    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 : 12 932
    Points : 28 927
    Points
    28 927
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    C'est très étrange puisque cette partie de code fonctionnait parfaitement bien avant et je n'ai rien modifié à cet endroit.
    A quel endroit ?

    La publication de votre code vous apportera certainement plus de réponses que de déposer un classeur obligeant ainsi les contributeurs à ouvrir celui-ci. Personnellement, je n'ouvre pas les classeurs joints.
    Une bonne explication, la publication du code qui pose problème et une éventuelle illustration de vos données si cela s'avère utilise est largement suffisant pour un utilisateur averti

    Un excellent tutoriel à lire sur le sujet Utiliser les variables tableaux en VBA Excel

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 919
    Points
    55 919
    Billets dans le blog
    131
    Par défaut
    Salut.

    Cette erreur survient lorsque l'indice que tu utilises pour pointer vers une case de ton tableau est trop petit ou trop grand. Lorsque le code plante, regarde les valeurs des variables utilisées pour manipuler le tableau, tu verras vite laquelle est hors valeurs. Tu peux le voir via:
    • la fenêtre des variables locales;
    • l'infobulle lorsque tu promènes la souris sur les variables;
    • la fenêtre des valeurs espions;
    • un ? mavariable dans la fenêtre d'exécution.



    Note que, par défaut et sauf exceptions(*), un array démarre à l'indice 0 => Dim tableau(5) créera donc un tableau de 6 lignes allant de 0 à 5, et l'indice i utilisé pour pointer une des cellules du tableau devra être 0 <= i <= 5. Tableau(6) plantera donc le code avec l'erreur que tu rencontres.


    (*) La ligne Option Base peut modifier l'indice bas par défaut. Ainsi Option Base 1 fera commencer l'indice d'un tableau créé à 1 => Dim Tableau(5) créera alors un tableau de 5 lignes allant de 1 à 5 => Tableau(0) et Tableau(6) planteront le code avec l'erreur que tu rencontres:
    • Option Base ne joue qu'au niveau du module au début duquel la ligne est présente => Option Base 1 doit donc être reprise au début de CHAQUE module dans lequel on veut l'utiliser;
    • Option Base ne peut prendre que 0 ou 1, Option Base 0 revient au même que l'absence de la ligne;
    • Un array qui reçoit une plage de cellules tableau = range("a1:b10") commence toujours à 1, quelle que soit la ligne Option Base;
    • Un array créé avec Split commence toujours à 0, quelle que soit la ligne Option Base: Tableau = Split("Pierre;Martine", ";") crée un tableau dont les indices vont de 0 à 1, quelle que soit la ligne Option Base;
    • Une variable valorisée avec Array est soumise à la ligne Option Base. Avec option Base 0, Tableau = array(1,2,3) crée un tableau dont les indices vont de 0 à 2. Avec Option Base 1, la même ligne crée un tableau dont les indices vont de 1 à 3;
    • Une variable valorisée avec VBA.Array sera un tableau d'indice 0, quelle que soit la ligne d'option => Tableau = VBA.Array(1,2,3) créera un tableau dont les indices iront de 0 à 2 sans tenir compte de la ligne Option Base;
    • On peut déroger à l'option en spécifiant les bornes: Dim Tableau(10 to 12) crée un tableau de 3 lignes dont les indices vont de 10 à 12;
    • On peut créer des tableaux avec des indices négatifs: Dim Tableau(-5 To -3) crée un tableau de 3 lignes dont les indices vont de -5 à -3;
    • On peut créer des tableaux multidimensionnels en mixant les bases: Dim Tableau(1 to 2, 0 to 2) est possible, de même que Dim Tableau(-5 To 4, 1 To 3, 0 To 5);
    • Lorsque l'on spécifie x et pas x To y, x doit toujours être >= à la base définie par Option Base;
    • Lorsque l'on spécifie x To y, y doit toujours être >= x;

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénierie de Maintenance
    Inscrit en
    Août 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénierie de Maintenance

    Informations forums :
    Inscription : Août 2018
    Messages : 28
    Points : 42
    Points
    42
    Par défaut Erreur d'exécution array indice n'appartient pas a la sélection
    bonsoir à tous !

    Dans la Sub Materiel_Montage

    boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If .Cells(e, 1) > 0 Then
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    matmont(n, 2) = .Cells(e, 2) 'nomenclature
    à cet endroit, matmont est dimensionné de 0 à 10 et n=11 d'où un bug.

    -> Maîtriser n max ou la valeur d'index n ou redim matmont suivant le pb AMHA

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Juin 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juin 2021
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses.

    Philippe : Okay ca marche!

    Pierre Fauconnier : Merci beaucoup pour cette réponse trés détaillée qui me donne des outils supplémentaires !

    Thekat : yes !

    j'étais persuadé d'avoir essayé d'augmenter la taille du tableau mais j'avais eu le même problème avec n=0. Mais bon pour aujourd'hui le problème ne semble plus être présent quand j'augmente la taille de l'array...

    Désolé de vous avoir embêté avec un truc pareil...

    Mais merci

Discussions similaires

  1. Erreur d’exécution macro ''l'indice n'appartient pas a la sélection"
    Par Buzz_thio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/02/2016, 00h15
  2. Erreur d’exécution macro ''l'indice n'appartient pas a la sélection"
    Par Buzz_thio dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2016, 23h59
  3. [XL-2007] Erreur d'exécution 9 : indice n'appartient pas à la sélection
    Par pétrin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2014, 09h56
  4. erreur execution 9: l'indice n'appartient pas à la sélection
    Par newvision dans le forum Général VBA
    Réponses: 1
    Dernier message: 29/04/2010, 14h38
  5. erreur execution 9: l'indice n'appartient pas à la sélection
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/07/2007, 12h00

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