OVH Cloud OVH Cloud

bizarre bizarre

3 réponses
Avatar
Flex
bonjour
voila je veux effectuer une recherche sur une de mes feuilles
mais quand j'execute la sub suivante j'obtiens un message d'erreur "err91
variable objet ou bloc... non defini"

quelqu'un at'il une suggestion s'il vous plait
Merci
Flex

ma sub:
Sub RechercheFournisseurs()

Dim strVal As String

ThisWorkbook.Activate

'pour eviter de demarrer avec la case F2 vide
' If ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1 =
"" Then Exit Sub


'permet de débuger les valeurs identiques
ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1 = "*"
& Range("F2").FormulaR1C1 & "*"
strVal =
ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1

' rechercher
Sheets("fournisseurs").Select
Range("A4").Select

Cells.Find(What:=strVal, After:=ActiveCell, LookIn:=xlFormulas, _
'///////////////j'obtiens l'erreur à ce niveau
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate

If ActiveCell = Range("A4") Then MsgBox " pas d'autre résultat ",
vbInformation, " Résultat de votre requète"
'
Select Case ActiveCell
Case Is <> Range("A4")
MsgBox ActiveCell.Address
frm_résultat.Show
End Select


End Sub

3 réponses

Avatar
Pierre Fauconnier
Bonjour

Cells.find renvoie un objet range. Il faut donc l'avoir dimensionné et
l'utiliser

Dim Cellule as range
Set Cellule = cells.find...
Il renvoie l'objet à Nothing s'il n'a pas trouvé
On peut alors testé qu'il a trouvé avec
if Cellule is Nothing

On peut aussi utiliser l'objet Cells.Find directement, par exemple
Debug.print cells.find(...).address, mais c'est embêtant lorsqu'il renvoie
nothing...


Cela convient-il?


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Flex" a écrit dans le message de
news:%231sg%
bonjour
voila je veux effectuer une recherche sur une de mes feuilles
mais quand j'execute la sub suivante j'obtiens un message d'erreur "err91
variable objet ou bloc... non defini"

quelqu'un at'il une suggestion s'il vous plait
Merci
Flex

ma sub:
Sub RechercheFournisseurs()

Dim strVal As String

ThisWorkbook.Activate

'pour eviter de demarrer avec la case F2 vide
' If ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1
"" Then Exit Sub


'permet de débuger les valeurs identiques
ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1 "*"
& Range("F2").FormulaR1C1 & "*"
strVal > ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1

' rechercher
Sheets("fournisseurs").Select
Range("A4").Select

Cells.Find(What:=strVal, After:¬tiveCell, LookIn:=xlFormulas, _
'///////////////j'obtiens l'erreur à ce niveau
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate

If ActiveCell = Range("A4") Then MsgBox " pas d'autre résultat ",
vbInformation, " Résultat de votre requète"
'
Select Case ActiveCell
Case Is <> Range("A4")
MsgBox ActiveCell.Address
frm_résultat.Show
End Select


End Sub




Avatar
Xav
Bonjour Flex

Set Resultat Îlls.Find(What:=strVal, After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse)
If Not Resultat Is Nothing Then 'il a trouvé qqchse
Ligne=Resultat.Row
Colonne=Resultat.Column

If Colonne=1 and Ligne=4 then ...


Je n'ai pas testé ta macro en particulier mais j'utilise ce genre de méthode

Il y a aussi une possibilité avec Resultat.Adress
--
Cordialement

@+
Xav
"Flex" a écrit dans le message de
news:%231sg%
bonjour
voila je veux effectuer une recherche sur une de mes feuilles
mais quand j'execute la sub suivante j'obtiens un message d'erreur "err91
variable objet ou bloc... non defini"

quelqu'un at'il une suggestion s'il vous plait
Merci
Flex

ma sub:
Sub RechercheFournisseurs()

Dim strVal As String

ThisWorkbook.Activate

'pour eviter de demarrer avec la case F2 vide
' If ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1
"" Then Exit Sub


'permet de débuger les valeurs identiques
ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1 "*"
& Range("F2").FormulaR1C1 & "*"
strVal > ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1

' rechercher
Sheets("fournisseurs").Select
Range("A4").Select

Cells.Find(What:=strVal, After:¬tiveCell, LookIn:=xlFormulas, _
'///////////////j'obtiens l'erreur à ce niveau
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:úlse).Activate

If ActiveCell = Range("A4") Then MsgBox " pas d'autre résultat ",
vbInformation, " Résultat de votre requète"
'
Select Case ActiveCell
Case Is <> Range("A4")
MsgBox ActiveCell.Address
frm_résultat.Show
End Select


End Sub




Avatar
Pierre Fauconnier
Je voulais dire
"On peut tester" et non "on peut testé"...

"Pierre Fauconnier" a écrit dans le
message de news:
Bonjour

Cells.find renvoie un objet range. Il faut donc l'avoir dimensionné et
l'utiliser

Dim Cellule as range
Set Cellule = cells.find...
Il renvoie l'objet à Nothing s'il n'a pas trouvé
On peut alors testé qu'il a trouvé avec
if Cellule is Nothing

On peut aussi utiliser l'objet Cells.Find directement, par exemple
Debug.print cells.find(...).address, mais c'est embêtant lorsqu'il renvoie
nothing...


Cela convient-il?


--
Pierre Fauconnier ()
Les sept laids tuent ( Lewis Carol )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Flex" a écrit dans le message de
news:%231sg%
bonjour
voila je veux effectuer une recherche sur une de mes feuilles
mais quand j'execute la sub suivante j'obtiens un message d'erreur
"err91


variable objet ou bloc... non defini"

quelqu'un at'il une suggestion s'il vous plait
Merci
Flex

ma sub:
Sub RechercheFournisseurs()

Dim strVal As String

ThisWorkbook.Activate

'pour eviter de demarrer avec la case F2 vide
' If
ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1


"" Then Exit Sub



'permet de débuger les valeurs identiques
ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1 > "*"
& Range("F2").FormulaR1C1 & "*"
strVal > > ThisWorkbook.Sheets("categories_logiciel").Range("F2").FormulaR1C1

' rechercher
Sheets("fournisseurs").Select
Range("A4").Select

Cells.Find(What:=strVal, After:¬tiveCell, LookIn:=xlFormulas, _
'///////////////j'obtiens l'erreur à ce niveau
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
_


MatchCase:úlse).Activate

If ActiveCell = Range("A4") Then MsgBox " pas d'autre résultat ",
vbInformation, " Résultat de votre requète"
'
Select Case ActiveCell
Case Is <> Range("A4")
MsgBox ActiveCell.Address
frm_résultat.Show
End Select


End Sub