"Erreur d’exécution 9, l'indice n'appartient pas à la sélection"
Résolu/Fermé
king
-
Modifié par NHenry le 25/02/2017 à 21:17
yg_be Messages postés 23436 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 janvier 2025 - 27 févr. 2017 à 23:12
yg_be Messages postés 23436 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 janvier 2025 - 27 févr. 2017 à 23:12
A voir également:
- Erreur d'execution 9 l'indice n'appartient pas à la selection
- Erreur 0x80070643 - Accueil - Windows
- A qui appartient ce numéro - Guide
- Indice téléphonique - Guide
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- A quel opérateur appartient ce numéro ✓ - Forum Opérateurs & Réseaux mobiles
7 réponses
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
Ambassadeur
1 559
Modifié par yg_be le 25/02/2017 à 21:48
Modifié par yg_be le 25/02/2017 à 21:48
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.
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
26 févr. 2017 à 12:21
26 févr. 2017 à 12:21
par exemple:
dim message as string message="" for i =0 to message=message+A.Comp(i) next i msgbox message
king
>
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
26 févr. 2017 à 14:09
26 févr. 2017 à 14:09
Erreur d'exécution 13, Incompatibilité de type
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?
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
26 févr. 2017 à 14:13
26 févr. 2017 à 14:13
message=message+cstr(A.Comp(i))
ou
message=message&A.Comp(i)
ou
message=message&A.Comp(i)
king
>
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
26 févr. 2017 à 14:26
26 févr. 2017 à 14:26
J’avais déjà essayé les 2, et ça affiche 000
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
26 févr. 2017 à 14:39
26 févr. 2017 à 14:39
je pense que Application.InputBox("...", Type:=1) te retourne 0.
king
>
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
26 févr. 2017 à 14:42
26 févr. 2017 à 14:42
Ah ouais. Et qu'est ce que je fais dans ce cas?
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
26 févr. 2017 à 14:57
26 févr. 2017 à 14:57
as-tu essayé avec des nombres entiers?
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
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
26 févr. 2017 à 20:11
26 févr. 2017 à 20:11
et si tu affiches dans la fonction udtInitVect()?
king
>
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
26 févr. 2017 à 20:22
26 févr. 2017 à 20:22
Je viens de le faire, ça ne change rien.
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
26 févr. 2017 à 20:33
26 févr. 2017 à 20:33
quelle version de VBA, quelle application, quelle version.
et tu as bien "option explicit"?
et tu as bien "option explicit"?
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
>
king
26 févr. 2017 à 21:59
26 févr. 2017 à 21:59
et tu as:
j'ai testé avec Excel2016, pas eu de soucis.
dim B as udtVecteur B=udtInitVect()
j'ai testé avec Excel2016, pas eu de soucis.
Ça affiche bien les valeurs entrées avec Application.InputBox et non 0??
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
26 févr. 2017 à 23:11
26 févr. 2017 à 23:11
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
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
>
king
27 févr. 2017 à 14:21
27 févr. 2017 à 14:21
as-tu activé la visualisation de la fenêtre d'Exécution? c'est nécessaire pour voir ce qu'affiche debug.print
tu peux aussi faire msgbox de msg.
tu peux aussi faire msgbox de msg.
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
>
king
27 févr. 2017 à 16:56
27 févr. 2017 à 16:56
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?
Lol, je vais devenir fou!!!
Je pense que je vais faire un copier/coller de ton code et modifier la nomenclature.
Merci.
Je pense que je vais faire un copier/coller de ton code et modifier la nomenclature.
Merci.
yg_be
Messages postés
23436
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 janvier 2025
1 559
>
king
27 févr. 2017 à 23:12
27 févr. 2017 à 23:12
content pour toi, je reste perplexe: pourquoi cela ne marchait-il pas dès le départ?
bonne continuation!
bonne continuation!
25 févr. 2017 à 23:17
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.
25 févr. 2017 à 23:26
26 févr. 2017 à 11:16
26 févr. 2017 à 12:00
C'est au niveau du ReDim que se situait le problème. Ma boucle marche correctement maintenant.
Modifié par yg_be le 26/02/2017 à 11:21