Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

comportement de la méthode Find

2 réponses
Avatar
ThierryP
Joyeuses P=E2ques =E0 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=EAme si la valeur de
l'activecell n'est pas trouv=E9e dans le range

Par contre, si je fais ceci :
test =3D .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

2 réponses

Avatar
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 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
--------------------------------------------
Avatar
ThierryP
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" wrote:
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
--------------------------------------------