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

Fermé
bichon1998
Messages postés
9
Date d'inscription
mercredi 25 mars 2015
Statut
Membre
Dernière intervention
27 mars 2015
- Modifié par pijaku le 25/03/2015 à 13:19
pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
- 25 mars 2015 à 15:27
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

pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 695
25 mars 2015 à 13:24
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
bichon1998
Messages postés
9
Date d'inscription
mercredi 25 mars 2015
Statut
Membre
Dernière intervention
27 mars 2015

25 mars 2015 à 13:55
Merci Pijaku,
J'ai essayé ton code et c'est ok. Ca devrait m'aider pour la suite !
0
bichon1998
Messages postés
9
Date d'inscription
mercredi 25 mars 2015
Statut
Membre
Dernière intervention
27 mars 2015

25 mars 2015 à 14:43
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
pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 695 > bichon1998
Messages postés
9
Date d'inscription
mercredi 25 mars 2015
Statut
Membre
Dernière intervention
27 mars 2015

25 mars 2015 à 15:27
Sans code complet ni fichier, non je n'ai pas d'explication.
0