Excel VBA fonction Find erreur '9'
Résolu
omduvfca
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
omduvfca Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
omduvfca Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je débute dans la programmation VBA, je ne trouve pas la solution à un problème de recherche de valeur dans une ligne ou une colonne d'un tableau. La macro que j'ai écrite me renvoie le message d'erreur '9' : l'indice n'appartient pas à la sélection.
D'abord, je voudrais récupérer le numéro de la ligne où se trouve mon identifiant, et ensuite le numéro de la colonne où ajouter mes valeurs par la suite. Pour la recherche de la ligne, c'est OK. Mais pas pour la recherche de la colonne, j'ai un message d'erreur "L'indice n'appartient pas à la sélection" et je ne comprends pas pourquoi.
Voici une partie de ma macro
Dim CelluleCourante As Range
Dim nuance As String, id As String
Dim reponse As Range
Sheets("Feuil2").Select
Set CelluleCourante = ActiveSheet.Range("A1").End(xlDown)
CelluleCourante.Select
Do While Not IsEmpty(CelluleCourante) = True
CelluleCourante.Select
id = CelluleCourante.Value
nuance = CelluleCourante.Offset(0, 3).Value
.....
Sheets("Matrice").Select
Set reponse = ActiveSheet.Range("A1").CurrentRegion.Find(id, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If Not reponse Is Nothing Then
ligne = reponse.Row
End If
Set reponse = ActiveSheet.Range("A1").CurrentRegion.Find(nuance, LookIn:=xlValue, LookAt:=xlWhole, SearchOrder:=xlByColumns)
If Not reponse Is Nothing Then
colonne = reponse.Column
End If
....
Sheets("Feuil2").Select
Set CelluleCourante = CelluleCourante.Offset(1, 0)
Loop
Le message d'erreur ("L'indice n'appartient pas à la sélection") pointe sur la ligne ci-dessous
Set reponse = ActiveSheet.Range("A1").CurrentRegion.Find(nuance, LookIn:=xlValue, LookAt:=xlWhole, SearchOrder:=xlByColumns)
Je suis coincé depuis plusieurs heures sans trouver de réponses sur les forums adaptées à mon cas.
Merci par avance de votre aide
Cdlt
Je débute dans la programmation VBA, je ne trouve pas la solution à un problème de recherche de valeur dans une ligne ou une colonne d'un tableau. La macro que j'ai écrite me renvoie le message d'erreur '9' : l'indice n'appartient pas à la sélection.
D'abord, je voudrais récupérer le numéro de la ligne où se trouve mon identifiant, et ensuite le numéro de la colonne où ajouter mes valeurs par la suite. Pour la recherche de la ligne, c'est OK. Mais pas pour la recherche de la colonne, j'ai un message d'erreur "L'indice n'appartient pas à la sélection" et je ne comprends pas pourquoi.
Voici une partie de ma macro
Dim CelluleCourante As Range
Dim nuance As String, id As String
Dim reponse As Range
Sheets("Feuil2").Select
Set CelluleCourante = ActiveSheet.Range("A1").End(xlDown)
CelluleCourante.Select
Do While Not IsEmpty(CelluleCourante) = True
CelluleCourante.Select
id = CelluleCourante.Value
nuance = CelluleCourante.Offset(0, 3).Value
.....
Sheets("Matrice").Select
Set reponse = ActiveSheet.Range("A1").CurrentRegion.Find(id, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If Not reponse Is Nothing Then
ligne = reponse.Row
End If
Set reponse = ActiveSheet.Range("A1").CurrentRegion.Find(nuance, LookIn:=xlValue, LookAt:=xlWhole, SearchOrder:=xlByColumns)
If Not reponse Is Nothing Then
colonne = reponse.Column
End If
....
Sheets("Feuil2").Select
Set CelluleCourante = CelluleCourante.Offset(1, 0)
Loop
Le message d'erreur ("L'indice n'appartient pas à la sélection") pointe sur la ligne ci-dessous
Set reponse = ActiveSheet.Range("A1").CurrentRegion.Find(nuance, LookIn:=xlValue, LookAt:=xlWhole, SearchOrder:=xlByColumns)
Je suis coincé depuis plusieurs heures sans trouver de réponses sur les forums adaptées à mon cas.
Merci par avance de votre aide
Cdlt
A voir également:
- 9^9 excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Internet explorer 9 - Télécharger - Navigateurs
2 réponses
Bonjour,
Je n'ai pas tout compris mais as-tu essayé comme ceci :
l'instruction :
Set CelluleCourante = ActiveSheet.Range("A1").End(xlDown)
prend la dernière cellule remplie, donc à la fin de la boucle :
Sheets("Feuil2").Select
Set CelluleCourante = CelluleCourante.Offset(1, 0)
incrémenter la CelluleCourante, revient à attérir dans une cellule vide,
donc la boucle ne s'effectue qu'une seule fois.
Cdt
Lupin
Je n'ai pas tout compris mais as-tu essayé comme ceci :
Do While Not IsEmpty(CelluleCourante) = True CelluleCourante.Select Adresse = CelluleCourante.Address id = CelluleCourante.Value nuance = CelluleCourante.Offset(0, 3).Value '..... Sheets("Matrice").Select Cells.Select Set reponse = Selection.Find(id, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows) If Not reponse Is Nothing Then Ligne = reponse.Row Colonne = reponse.Column End If '.... MsgBox Ligne & vbCrLf & Colonne Sheets("Feuil2").Select Set CelluleCourante = CelluleCourante.Offset(1, 0) Loop
l'instruction :
Set CelluleCourante = ActiveSheet.Range("A1").End(xlDown)
prend la dernière cellule remplie, donc à la fin de la boucle :
Sheets("Feuil2").Select
Set CelluleCourante = CelluleCourante.Offset(1, 0)
incrémenter la CelluleCourante, revient à attérir dans une cellule vide,
donc la boucle ne s'effectue qu'une seule fois.
Cdt
Lupin
Bonjour Lupin et merci pour ta réponse. Je ne suis pas certain d'avoir compris cependant.
Désolé si mon message est un peu confus. Je vais essayer de clarifier mon problème. Je voudrais d'une part retrouver la ligne du tableau correspondant à mon id et, d'autre part la colonne dans le tableau qui correspond à mon paramètre 'nuance'. Ensuite je colle les valeurs souhaitées dans la cellule idoine du tableau.
En relisant mon post, je pense que le bug vient des paramètres de Find. Il manque un s à xlValue dans LookIn:=xlValue.
Avec cette correction, le code fonctionne bien
Merci beaucoup pour l'astuce
Désolé si mon message est un peu confus. Je vais essayer de clarifier mon problème. Je voudrais d'une part retrouver la ligne du tableau correspondant à mon id et, d'autre part la colonne dans le tableau qui correspond à mon paramètre 'nuance'. Ensuite je colle les valeurs souhaitées dans la cellule idoine du tableau.
En relisant mon post, je pense que le bug vient des paramètres de Find. Il manque un s à xlValue dans LookIn:=xlValue.
Avec cette correction, le code fonctionne bien
Merci beaucoup pour l'astuce