comportement de la méthode Find

Le
ThierryP
Joyeuses Pâques à tou(te)s ! Les cloches soient avec vous :-))

Ma question du jour !!
si je fais ceci :
On Error Resume Next
If IsEmpty(.Range("On_Stock").Find(ActiveCell.Value, , , xlPart))
Then
je ne rentre pas dans la partie "Then", même si la valeur de
l'activecell n'est pas trouvée dans le range

Par contre, si je fais ceci :
test = .Range("On_Stock").Find(ActiveCell.Value, , , xlPart)
If IsEmpty(test) Then
je passe bien par la partie "Then"

Si quelqu'un a une explication.. Merci d'avance

ThierryP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #23306581
Bonjour,

A ) tu gagnerais à expliquer ce que tu tentes de faire...

B ) Si la cellule active est vide et que dans la plage "On_Stock", tu as au moins
une cellule vide, tu entreras dans le Then , une façon de dire que la cellule que
la méthode Find a trouvée est vide...

C ) Si la cellule active contient une valeur qui ne se retrouve pas dans la plage "On_Stock"
cela devrait générer une erreur 91. Cependant comme tu as mis en début de
procédure "On Error Resume Next, le message d'erreur n'apparaît pas, mais
comme la méthode n'a rien trouvé, elle ne retourne "rien" et la variable "test" est vide

Ce type de code est plus efficace,
'--------------------------------------
Sub Test1()
Dim Trouve As Range

With Sheets("sheet1")'Nom Feuille à adapter
Set Trouve = .Range("On_Stock").Find(ActiveCell.Value, , , xlPart)
If Trouve Is Nothing Then
'Si la méthode n'a rien trouvée,
MsgBox "Aucune valeur trouvée correspondante."
Else
MsgBox "La cellule trouvée : " & Trouve.Address _
& vbCrLf & "La valeur de la cellule : " & Trouve.Value
End If
End With
End Sub
'--------------------------------------


MichD
--------------------------------------------
ThierryP
Le #23307561
Bonjour Denis,

Toujours fidèle au poste !!
A) Disons que j'avais plus besoin de pédagogie que de solution......!
Dans ce cas précis, pour une petite appli interne de gestion de stock,
depuis une commande d'achat, je teste si ma référence (activecell) est
en stock; si oui, j'ajoute sur la ligne de la feuille stock le N° de
commande et la qté commandée, sinon j'ajoute la ligne à ma feuille
stock. Voili voilà !
B) Mon activecell ne peut être vide (testé dans la boucle qui parcourt
ma commande d'achat).
C) C'est que j'avais constaté !
D) Comme d'hab, ton code est efficace :-))

Merci pour la leçon :-))))))))

ThierryP

On 24 avr, 16:10, "MichD"
Bonjour,

A ) tu gagnerais à expliquer ce que tu tentes de faire...

B ) Si la cellule active est vide et que dans la plage "On_Stock", tu as au moins
une cellule vide, tu entreras dans le Then , une façon de dire que la c ellule que
la méthode Find a trouvée est vide...

C ) Si la cellule active contient une valeur qui ne se retrouve pas dans la plage "On_Stock"
cela devrait générer une erreur 91. Cependant comme tu as mis en dé but de
procédure "On Error Resume Next, le message d'erreur n'apparaît pas, mais
comme la méthode n'a rien trouvé, elle ne retourne "rien" et la varia ble "test" est vide

Ce type de code est plus efficace,
'--------------------------------------
Sub Test1()
Dim Trouve As Range

With Sheets("sheet1")'Nom Feuille à adapter
    Set Trouve = .Range("On_Stock").Find(ActiveCell.Value, , , xlPa rt)
    If Trouve Is Nothing Then
        'Si la méthode n'a rien trouvée,
        MsgBox "Aucune valeur trouvée correspondante."
    Else
       MsgBox "La cellule trouvée : " & Trouve.Address _
       & vbCrLf & "La valeur de la cellule : " & Trouve.Value
    End If
End With
End Sub
'--------------------------------------

MichD
--------------------------------------------
Publicité
Poster une réponse
Anonyme