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
158
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