Variable objet ou variable de bloc with non définie

Fermé
Neoplook Messages postés 20 Date d'inscription mercredi 7 octobre 2015 Statut Membre Dernière intervention 24 décembre 2015 - 21 déc. 2015 à 16:28
Neoplook Messages postés 20 Date d'inscription mercredi 7 octobre 2015 Statut Membre Dernière intervention 24 décembre 2015 - 23 déc. 2015 à 17:27
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

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
21 déc. 2015 à 17:29
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
Neoplook Messages postés 20 Date d'inscription mercredi 7 octobre 2015 Statut Membre Dernière intervention 24 décembre 2015
22 déc. 2015 à 12:32
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