"Erreur d’exécution 9, l'indice n'appartient pas à la sélection"
Résolu
king
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Erreur d'execution 9 l'indice n'appartient pas à la selection
- Indice téléphonique - Guide
- A qui appartient ce numéro - Guide
- A qui appartient ce numéro de gsm belgique ✓ - Forum Opérateurs & Réseaux mobiles
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
7 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir,
le sujet est en cours de discussion ici: https://forum.excel-pratique.com/viewtopic.php?forum_uri=excel&t=89780&start=
quelle est la déclaration de udtVecteur?
quelle est la valeur de i au moment de l'erreur?
peut-être mieux avec:
tu fais
le sujet est en cours de discussion ici: https://forum.excel-pratique.com/viewtopic.php?forum_uri=excel&t=89780&start=
quelle est la déclaration de udtVecteur?
quelle est la valeur de i au moment de l'erreur?
peut-être mieux avec:
Loop While i < udtInitVect.NbrElt
tu fais
ReDim Comp(), puis tu utilises
udtInitVect.Comp(), c'est intentionnel?
Tu aurais une idée de comment afficher un vecteur de type A.Comp(i) avec MsgBox??
J'ai un problème de syntaxe par rapport à la récurrence.
J'ai un problème de syntaxe par rapport à la récurrence.
J'ai essayé ton code, mais il y a un message d'erreur au niveau de la ligne 4.
Je vois affiché A.Comp(i) = 0.
Tu vois pourquoi?
Je vois affiché A.Comp(i) = 0.
Tu vois pourquoi?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mon code pour initialiser le vecteur:
Et pour l'afficher:
Function udtInitVect() As udtVecteur
udtInitVect.nom = Application.InputBox("Donner le nom du vecteur", Type:=2)
udtInitVect.NbrElt = Application.InputBox("Donner le nombre de composantes", Type:=1)
ReDim udtInitVect.Comp(udtInitVect.NbrElt)
Dim i As Long
i = 1 ' ajouter pour initialiser le compteur i
While Not (i > udtInitVect.NbrElt)
udtInitVect.Comp(i) = Application.InputBox("Entrez la valeur de la composante " + CStr(i) + " de " + udtInitVect.nom, Type:=1)
i = i + 1 ' ajouter pour passer à la valeur suivante du vecteur
Wend
End Function
Et pour l'afficher:
msgVect1 = B.nom + " = "
i = 1 ' ajouter pour initialiser le compteur i
While Not (i > B.NbrElt)
msgVect1 = msgVect1 & vbCrLf & B.Comp(i) & vbCrLf
i = i + 1 ' ajouter pour passer à la valeur suivante du vecteur
Wend
MsgBox msgVect1
cela affiche les valeurs entrées avec inputbox, ainsi:
Option Explicit Public Type struct nn As String l As Long val() As Double End Type Function popul() As struct popul.l = 3 Dim i As Integer ReDim popul.val(1 To 3) popul.nn = Application.InputBox("nn", Type:=2) For i = 1 To 3 popul.val(i) = Application.InputBox(CStr(i), Type:=1) Next i End Function Sub testinput() Dim s As struct Dim i As Integer Dim msg As String msg = "" s = popul() msg = msg + s.nn + ": " For i = 1 To s.l msg = msg + CStr(s.val(i)) + "," Next i Debug.Print msg End Sub
aucune idée, j'ai essayé de faire exactement la même chose que toi, le plus fidèlement possible, à part les noms de type et de variable. j’espérais obtenir le même problème, ou que mon exemple ne fonctionne pas chez toi.
je n'ai pas une vue d'ensemble sur ton projet. tu as maintenant chez toi un cas qui fonctionne et un qui ne fonctionne pas.
tu peux soit analyser les différences entre les deux, soit atténuer ces différences, créer des cas intermédiaires, et découvrir à quel moment le comportement change.
à tout hasard: tout est dans un seul module, tu as bien déclaré tout comme moi, avec un type précis?
je n'ai pas une vue d'ensemble sur ton projet. tu as maintenant chez toi un cas qui fonctionne et un qui ne fonctionne pas.
tu peux soit analyser les différences entre les deux, soit atténuer ces différences, créer des cas intermédiaires, et découvrir à quel moment le comportement change.
à tout hasard: tout est dans un seul module, tu as bien déclaré tout comme moi, avec un type précis?
Public Type udtVecteur
nom As String
NbrElt As Long
Comp() As Double
End Type
Et l'erreur apparait à i = 0.
Pour i = 0, une valeur de la composante est bien demandée, mais ça bloque tout de suite après et affiche le message d'erreur.
C'est au niveau du ReDim que se situait le problème. Ma boucle marche correctement maintenant.