Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

probleme vba : l'indice n'appartient pas à la selection

  • Initiateur de la discussion Initiateur de la discussion perdinch
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

perdinch

XLDnaute Occasionnel
Bonsoir,

pouvez vous m'aidez à résoudre le problème de de code qui renvoie ce message d'erreur: l'indice n'appartient pas à la sélection
merci
Dans un classeur,avec une feuille nommée "mafeuille"

Sub essai()
Dim test() As String
Sheets("mafeuille").Activate
For j = 1 To Sheets("mafeuille").Range("A2").End(xlDown).Row
For i = 1 To Sheets("mafeuille").Range("A2").End(xlDown).Row
If Cells(i, 15) = 1 Then
test(j) = Sheets("mafeuille").Cells(i, 1).Value
MsgBox test(j)
End If

Next i
Next j

End Sub
 
Re : probleme vba : l'indice n'appartient pas à la selection

Bonjour
1°/Quand tu utilises une variable tableau (test()), il faut préciser sa dimension.
2°/Pour devancer ton prochain problème, quand tu emboîtes deux boucles for, tu vas non pas avoir
j, i
0, 0
1, 1
2, 2
...
N,N
mais
j, i
0, 0
1, 0
2, 0
...
N,0
N,1
N,2
...
N,N
Il faut donc remanier ta boucle.
Avec les deux modifs
Code:
Sub essai()
Dim test() As String
Sheets("mafeuille").Activate
i = 0
For j = 1 To Sheets("mafeuille").Range("A2").End(xlDown).Row
Redim Preserve test(j - 1)
i = i + 1
If Cells(i, 15) = 1 Then
test(j - 1) = Sheets("mafeuille").Cells(i, 1).Value
MsgBox test(j)
End If


Next j

End Sub

(PS : le j-1 vient du fait qu'une variable tableau commence à 0)

Je te laisse tester et revenir dire si ça marche 🙂
Bonne chance
 
Re : probleme vba : l'indice n'appartient pas à la selection

Bonjour
Bonjour le fil
Bonjour le forum
voila ce que j'ai testé (pourquoi deux boucles ????)

VB:
Sub essai()
Dim test() As String
Dim x As Integer
Dim i As Integer
Dim mafeuille As Worksheet
x = 0
Set mafeuille = Worksheets("Feuil1")
   With mafeuille
      For i = 1 To .Range("A2").End(xlDown).Row
         
                  If .Cells(i, 2) = 1 Then
                  ReDim Preserve test(x)
                        test(x) = .Cells(i, 1).Value
                        MsgBox test(x)
                        x = x + 1
                  End If
      Next i
      End With
End Sub
apas de fichier pour tester !!!!!
Bonne fin de journée
Amicalement
Jean Marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
786
Réponses
4
Affichages
734
Réponses
5
Affichages
911
Réponses
8
Affichages
390
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…