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

Excel Discussion :

Macro VBA Selection aléatoire de titres - Error "Subscript out of range"


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Master Informatique et finance de marché
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Master Informatique et finance de marché
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Par défaut Macro VBA Selection aléatoire de titres - Error "Subscript out of range"
    Bonjour à tous,

    Je suis débutante en VBA et j'ai codé une macro qui consiste à sélectionner aléatoirement des titres en s'assurant qu'ils soient tous distincts. La macro prend en paramètre le nombre de titres que l'on souhaite avoir dans son PF. Voici mon code :


    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
    'Etape 1 : Selection aléatoire des titres du portefeuille
    Sub Creation_PF(Nb_titres_PF)
        Dim Position As Integer, Nb_Titres_OK As Integer, Titre As Integer
        Dim Pointeur As Integer, test As Boolean
        Position = 1 ' On démarre le tableau à la 1ere ligne
        Nb_Titres_OK = 0 'Pour l'instant aucun titre ditinct
        Do
            Randomize 'Initialisation du générateur aléatoire
            Titre = Int(Rnd() * 50) + 1 'On tire un titre au hasard
            Pointeur = 1
            test = False
            While Pointeur <= Position And test = False ' La variable test nous évite de _
            tous les éléments
                If Numeros_titre(Pointeur) = Titre Then               
     test = True
                End If
                Pointeur = Pointeur + 1
            Wend
            If test = False Then
                Numeros_titre(Position) = Titre
                Nb_Titres_OK = Nb_Titres_OK + 1
                Position = Position + 1
            End If
        Loop While Nb_Titres_OK < Nb_titres_PF
    End Sub
    Lorsque j'utilise la fonction Debug de VBA, il me signale que la ligne qui pose problème est la ligne 23. VBA me notifie une erreur : "Run-time error '9' : Subscript out of range.
    J'ai revu mon code un nombre incalculable de fois mais je ne vois vraiment pas ou est l'erreur.
    Pourriez-vous m'aider ?


    Merci beaucoup.

  2. #2
    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, bonjour !

    Rappel pour la prochaine fois : poster dans le bon forum, là où il y a le plus de passage …
    Ici c'est le forum des formules de feuilles de calculs !

    La ligne n°23 du code présenté correspond à End If donc je ne vois pas de relation !

    Suis ton code en mode pas à pas via la touche F8 tout en vérifiant le contenu de la fenêtre des Variables locales,
    ton erreur tu trouveras …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Master Informatique et finance de marché
    Inscrit en
    Septembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Master Informatique et finance de marché
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 6
    Par défaut
    Bonjour Marc L,


    Désolée, je suis nouvelle et j'ai du mal encore à repérer les fils de discussions. Je tâcherai à l'avenir de respecter les règles de post.

    Oui, alors apparement il a une différence de comptage de lignes entre ma macro vba et mon message
    Le problème porte donc sur la ligne 19 "If Numeros_titres(Pointeur) = Titre Then ".


    Merci pour votre aide.

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


    La ligne n°14 tu veux dire ?!

    Vu l'aide du message d'erreur pourtant claire, la variable Pointeur est en dehors des bornes de la soit disant
    variable tableau Numeros_titre, soit disant car n'a pas l'air d'avoir été déclarée comme telle !

    Bref, c'est simple à vérifier dans la fenêtre des Variables locales ou en insérant un Debug.Print dans le code.

    Une débutante devrait placer en tête de module l'instruction Option Explicit

Discussions similaires

  1. [XL-2013] Run-time error '9': Subscript out of range
    Par francoisem dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 16/12/2014, 10h06
  2. [XL-2007] Error 9 : subscript out of range
    Par Me.Leti dans le forum Excel
    Réponses: 5
    Dernier message: 28/08/2012, 11h06
  3. Réponses: 2
    Dernier message: 15/08/2010, 17h20
  4. [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, 09h26
  5. Réponses: 1
    Dernier message: 23/04/2008, 11h37

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