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 :

L'indice n'appartient pas à la sélection [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut L'indice n'appartient pas à la sélection
    Bonjour à tous,

    Comme la plus part des personnes qui poste un message sur ce forum, j'au un problème avec ma petite programmation en VBA.
    Si une personne plus douée que moi (et la je n'en doute pas) peu me sortir de ma problématique je lui en serais très reconnaissant.

    J'ai un classeur Excel dans lequel il y a deux feuilles :
    - Feuil1 "suivi"
    - Feuil2 "graph"

    Dans la Feuil1 donc "suivi", il y a tableau de 62 colonnes et d'un nombre de ligne qui s'accroit au fur et a mesure du temps. Pour résumer un nombre de colonne constant un le nombre de ligne variable.

    J'essai de créer un graphique dans le Feuil2 "graph", avec pour abscisse les valeurs d'une colonne x (35 par exemple) et pour ordonnée la colonne y (4 car elle correspond à la date de la rentrée des informations de la ligne correspondante).

    Pour compliquer les choses le graphique ne commence pas forcement par la première ligne du tableau et ne termine pas forcement par la dernière ligne. C'est l'utilisateur du fichier Excel qui décidera par un choix de date de début et de date de fin qui est fait sur une autre Feuil.

    Pour créer ce graphique j'ai réalisé ce petit programme:


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Sub BoutonCreer1_Click()
    
    Dim date1 As Date
    Dim date2 As Date
    Dim celluletrouve, celluletrouvee As Range
    Dim m, j As Long
    Dim Derna As Long
    Dim i As Long
    Dim Tableau() As Variant, Tableau2() As Variant
    
    'choix des dates debut et fin par  l'utilisateur sur Feuil12
    
    date1 = Feuil12.Cells(5, 2) 
    date2 = Feuil12.Cells(5, 4)
    
    'recherche des numeros de ligne correspondant aux date demandées
    
    Set celluletrouve = Sheets("suivi").Range("D:D").Find(date1, lookat:=xlWhole)
    Set celluletrouvee = Sheets("suivi").Range("D:D").Find(date2, lookat:=xlWhole)
    If celluletrouvee Is Nothing Then
    MsgBox ("pas de production ce jour : " & date2)
    End If
    If celluletrouve Is Nothing Then
    MsgBox ("pas de production ce jour : " & date1)
    Else
    ligne = celluletrouve.Row
    ligne2 = celluletrouvee.Row
    End If
    
    'boucle pour ajouter ligne ayant la même date en fin de serie
    Sheets("Suivi").Activate
    Derna = Sheets("Suivi").Range("D65536").End(xlUp).Row
    Dim Résultat As Long
    For m = ligne To Derna
    If Sheets("Suivi").Range("D" & m) = date1 Then
    ligne = m + 1
    End If
    Next m
    ligne = ligne - 1
    
    'MsgBox ligne
    'MsgBox ligne2
    
    
    'calcul du nombre de ligne pour declaration tableau
    ligne3 = (ligne - ligne2) + 1
    'MsgBox ligne3
    
    
    Sheets("Suivi").Activate
    
    ReDim Tableau(ligne3)
    ReDim Tableau2(ligne3)
     
        'Création du tableau pour les Abscisses
       
        For i = ligne2 To ligne
    
    'ligne qui  declenché le message d'erreur 
            Tableau(i) = Feuil7.Cells(i, 35)
        Next i
     
        'Création d'un tableau pour les Ordonnées
        
        For i = ligne2 To ligne
            'Le tableau est rempli par des valeurs aléatoires pour
            'cet exemple
            Tableau2(i) = Feuil7.Cells(i, 4)
        Next i
     
        'Création graphique
        Charts.Add
        'Définit la localisation du graphique:
        'dans la feuille de calcul Feuil1 pour cet exemple
        ActiveChart.Location _
        Where:=xlLocationAsObject, Name:="graph"
     
        'Ajoute une série dans le graphique
        With ActiveChart
            .SeriesCollection.NewSeries
            .SeriesCollection(1).XValues = Tableau() 'Abscisses
            .SeriesCollection(1).Values = Tableau2() 'Ordonnées
            'Définit le type (Courbe)
            .ChartType = xlLine
        End With
    End Sub
    Le message d'erreur est le suivant :

    erreur d'exécution '9' :
    l'indice n'appartient pas à la sélection

    Je specifie la ligne qui declenche l'erreur en rouge.

    j'espère trouver de l'aide et remercie d'avance toutes les personnes qui pourront m'aider.

  2. #2
    Membre éprouvé
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Par défaut
    Bonjour,

    Tableau() est un tableau de ((ligne - ligne2) + 1) éléments, c'est a dire du nombre de lignes entre la date de début et la date de fin ...

    exemple : si la date de début est à la ligne 70 et date de fin à la ligne 100 ... on aura donc une variable tableau(30).

    La boucle "For i = ligne2 To ligne" et donc la valeur Tableau(i) boucle entre la date de debut et de fin, entre 70 et 100 dans mon exemple .... Tableau(i) est donc hors indice.

    Il faudrait revoir les lignes 16 à 28 et sortir de la procedure si les dates n'ont pas été trouvées ...

    Je n'ai pas regardé le reste du code ....

    Cordialement,

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut pour steph999
    Tout d'abord merci pour t'être penché sur mon problème.

    Je ne comprends absolument pas ce que tu me dis, la dimension du tableau est définie par la constante ligne3 qui est = à (ligne-ligne2)+1 sachant que 'ligne' est la ligne de date de fin et 'ligne 2' est la ligne de date de début.
    Si je suis ton exemple ligne3 sera bien = à 30
    tableau et tableau2 sont définis aux lignes 52 et 53
    En vérifiant avec msgbox ligne, ligne2 et ligne3 les valeurs sont exactes.


    cordialement

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,
    Vous dimensionner le tableau de 1 à 30 et si ligne2 est plus grand que 30 vous n'êtes plus dans la fourchette 1 à 30 d'où l'erreur.
    Essayez avec For i = 1 to ligne 3 pour voir

  5. #5
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 3
    Par défaut pour rjamin
    merci pour ton aide cela fonctionne, j'ai un autre problème maintenant mais je l'exposerais un peu plus tard car je n'ai pas le temps.

    merci encore, vraiment c'est super sympa de m'avoir aidé

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

Discussions similaires

  1. [AC-2007] Erreur : L'indice n'appartient pas à la sélection
    Par Nayko dans le forum VBA Access
    Réponses: 5
    Dernier message: 04/04/2014, 11h23
  2. Réponses: 13
    Dernier message: 27/04/2012, 10h57
  3. Tableau de valeurs : l'indice n'appartient pas à la sélection
    Par Maryy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/08/2008, 14h42
  4. 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
  5. l'indice n'appartient pas à la sélection ??
    Par Bernard83140 dans le forum Access
    Réponses: 4
    Dernier message: 06/05/2006, 22h27

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