L'indice n'appartient à la sélection sur VBA

Bonjour,

Est ce que vous pouvez m'aider s'il vous plait, je ne comprend pas pourquoi il m'affiche l'erreur.

J'ai un problème dans la programmation du code VBA mais jsp pourquoi. (j'ai fais attention sur les nom des feuilles)

Voici le programme :

Sub email()

Dim Sht As Worksheet
Dim LR As Long, i As Long

Set Sht = ThisWorkbook.Worksheets("Macro")

With Sht

LR = .Cells(.Rows.Count, "A").End(xlUp).Row

For i = 2 To LR

If Not IsError(Application.VLookup(.Range("B" & i).Value, Worksheets("Negoce").Range("B2:C102569"), 2, False)) Then

.Range("M" & i).Value = Application.VLookup(.Range("B" & i).Value, Worksheets("Negoce").Range("B2:C102569"), 2, False)

Else ' Vlookup error

.Range("M" & i).Value = ""

End If

Next i

For i = 2 To LR

If .Range("M" & i).Value = "" Then

If Not IsError(Application.VLookup(.Range("B" & i).Value, Worksheets("Composants").Range("B3:C102569"), 2, False)) Then

.Range("M" & i).Value = Application.VLookup(.Range("B" & i).Value, Worksheets("Composants").Range("B3:C102569"), 2, False)

Else

.Range("M" & i).Value = "Email Introuvable"

End If
End If
Next i

End With

End Sub

Edit modo : code mis entre balises

bonjour ,

vous avez un erreur à quelle ligne ?

Bonjour,

Merci de votre retour,

la ligne 9 : < If Not IsError(Application.VLookup(.Range("B" & i).Value, Worksheets("Negoce").Range("B2:C102569"), 2, False)) Then
.Range("M" & i).Value = Application.VLookup(.Range("B" & i).Value, Worksheets("Negoce").Range("B2:C102569"), 2, False) >

bonjour,

vous êtes sûr que la feuille "Negoce" existe ?

votre code légèrement adapté, pour rechercher seulement une fois pour cycle

Sub email()
     Dim i     As Long, x

     With ThisWorkbook.Worksheets("Macro")

          For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
               x = Application.VLookup(.Range("B" & i).Value, ThisWorkbook.Worksheets("Negoce").Range("B2:C102569"), 2, False)
               If VarType(x) <> vbError Then
                    .Range("M" & i).Value = x
               Else     ' Vlookup error
                    x = Application.VLookup(.Range("B" & i).Value, ThisWorkbook.Worksheets("Composants").Range("B3:C102569"), 2, False)
                    If VarType(x) <> vbError Then
                         .Range("M" & i).Value = x
                    Else
                         .Range("M" & i).Value = "Email Introuvable"
                    End If
               End If
          Next i

     End With
End Sub

Alors je suis vraiment un noob, apres que tu ma dit de verifier le nom de la feuille negoce, y vait un espace à la fin tu assures merci.

(ps : et encore merci pour ton programme il fonctionne et il est plus optimiser que l'autre)

Bonjour Meeti et

Une petite présentation ICI serait la bienvenue

Je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER] ainsi que les fonctionnalités
qui vous aideront dans vos demandes et réponses sur ce forum

- Mettre le code entre balises avec ce bouton

image

- Cliquer sur le bouton en haut à droite lorsque la réponse a été apportée

image

Merci d'y faire attention SVP et merci de votre participation

Cordialement

Rechercher des sujets similaires à "indice appartient selection vba"