Problème Excel VBA: "l'indice n'appartient pas à la sélection"

bichon1998 Messages postés 10 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,

J'ai créé ce petit code ce matin:
Sub test()
Dim i As Integer
For i = 3 To 5
Dim X() As Single
If Cells(i, 3).Value >= Cells(10, 2).Value And Cells(i, 4).Value >= Cells(11, 2).Value And Cells(i, 5).Value <= Cells(12, 2).Value And Cells(i, 6).Value >= Cells(13, 2).Value Then
X(i) = 0.6 * (Cells(i, 3).Value / Cells(10, 2).Value) + 0.2 * (Cells(i, 4).Value / Cells(11, 2).Value) + 0.1 * (Cells(12, 2).Value / Cells(i, 5).Value) + 0.1 * (Cells(i, 6).Value / Cells(13, 2).Value)
Else: X(i) = 100
End If
Next i

MsgBox "X(4)"

    Application.Run "'database AS.xls'!test"
End Sub


En gros, c'est assez simple, j'ai 3 lignes (L3 à L5 ici) et pour chaque ligne je voudrais calculer un X(i) à partir des données de cette ligne. Mais quand j'exécute mon programme, j'obtiens: "Erreur d'exécution '9' L'indice n'appartient pas à la selection."

Pourriez-vous me débloquer svp ?
Merci d'avance
Bichon

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour Bichon,

    Salut Michel,

    Tu déclares ton tableau dans une boucle???
    For i = 3 To 5
        Dim X() As Single

    Hum hum...

    Et tu ne le dimensionnes jamais...

    Et "X(4)" ne risque pas de t'afficher la valeur de l'indice 5 de ton tableau.
    MsgBox "(X4)" va afficher : (X4)
    et MsgBox X4 va provoquer la même erreur 9...

    Essaye déjà, tout simplement :
    Sub test()
    Dim i As Integer
    Dim X(5) As Single
    
    For i = 0 To 5
        X(i) = 0.6 * i
    Next i
    
    MsgBox X(4)
    End Sub


    Une fois compris ce principe, tu pourras ajouter tes tests...
    1
    1. bichon1998 Messages postés 10 Statut Membre
       
      Merci Pijaku,
      J'ai essayé ton code et c'est ok. Ca devrait m'aider pour la suite !
      0
    2. bichon1998 Messages postés 10 Statut Membre
       
      Une dernière question Pijaku.
      J'ai terminé mon code et tout est ok. Merci à toi. Cela permet d'afficher le résultat grâce à MsgBox. Cependant, quand j'appuie sur OK, le message refuse de disparaitre et je suis obligé de fermer Excel avec le gestionnaire de tâches pour relancer ma macro.
      As-tu une explication ?
      0
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > bichon1998 Messages postés 10 Statut Membre
         
        Sans code complet ni fichier, non je n'ai pas d'explication.
        0