Variable objet ou variable de bloc with non définie

Neoplook Messages postés 22 Statut Membre -  
Neoplook Messages postés 22 Statut Membre -
Bonjour,

tout d'abord voici mon code :

Sub RechercheCompo()

Dim plage1 As Range, plage2 As Range, plage3 As Range
Dim Cellule1 As Range, Cellule2 As Range
Set Cellule1 = Range("J6")
Set plage1 = Range("D8:D300").Find(Range("J6").Value, , xlValues)(2, 2)
Set plage2 = Range("D8:D300").Find(Range("J6").Value, , xlValues)(5, 30)
Set plage3 = Range(plage1, plage2)
Dim add As Range, add2 As Range
Set Cellule2 = Range("K6")
Set add = plage3.Find(Cellule2.Value, , xlValues)(1, 1)
Set add2 = plage3.Find(Cellule2.Value, , xlValues)(4, 1)
If Not add Is Nothing Then
Range(add, Range(add, add2)).Select
Else
MsgBox "Désolé !" & Chr(10) & "Ce composant n'existe pas.", vbOKOnly + vbExclamation, "Erreur.."
End If

End Sub


Bon maintenant que vous avez lu mon travail je vous explique :
L'utilisateur entre deux données sur deux cellules J6 et K6.
De là, il clic sur la cellule J7 pour lancer la recherche.
Cette recherche fonctionne correctement pour tout mon fichier mais..
Elle ne fonctionne pas pour les lignes 9 à 17 ! J'ai beau chercher, je ne comprend pas..

Ami internautes, fana de VBA etc, je vous en prie S.O.S ! ^^

5 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Neoplook, bonjour le forum,

    Tu définis un plage sans être sûr qu'elle existe !...
    Essaie comme ça :

    Sub RechercheCompo()
    Dim R As Range
    Dim plage1 As Range, plage2 As Range, plage3 As Range
    Dim Cellule1 As Range, Cellule2 As Range
    Dim add As Range, add2 As Range
    
    Set Cellule1 = Range("J6")
    Set R = Range("D8:D300").Find(Cellule1.Value, , xlValues)
    If Not R Is Nothing Then
        Set plage1 = R(2, 2)
        Set plage2 = R(5, 30)
        Set plage3 = Range(plage1, plage2)
    Else
        'MsgBox "Désolé !" & Chr(10) & "Ce composant n'existe pas.", vbOKOnly + vbExclamation, "Erreur.."
        Exit Sub
    End If
    
    Set Cellule2 = Range("K6")
    Set add = plage3.Find(Cellule2.Value, , xlValues)(1, 1)
    Set add2 = plage3.Find(Cellule2.Value, , xlValues)(4, 1)
    If Not add Is Nothing Then
        Range(add, Range(add, add2)).Select
    Else
        MsgBox "Désolé !" & Chr(10) & "Ce composant n'existe pas.", vbOKOnly + vbExclamation, "Erreur.."
    End If
    End Sub

    1
    1. Neoplook Messages postés 22 Statut Membre
       
      Bonjour ThauTheme !

      Alors c'est génial ça fonctionne correctement à un détail près qui à son importance quand même..
      Lorsque je rentre une valeur dans K6 qui n'existe pas dans la plage 3, et que je lance la macro, je me reprend le message d'erreur :Variable objet ou variable de bloc with non définie.

      C'est assez frustrant..
      0