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

Fonction Rechercher avec un equivalent On Error Resume Next

4 réponses
Avatar
Alex
Bonsoir =E0 tous,

Je voudrais affiner ma fonction Rechercher. J'ai utilis=E9
l'enregistreur de Macro, pour avoir ma base de ligne de commande, =E0
avoir le r=E9sultat de Selection de la colonne A puis Ctrl F pour
rechercher "Maman" : j'ai obtenu ceci :

Columns("A:A").Select
Selection.Find(What:=3D"Maman", After:=3DActiveCell,
LookIn:=3DxlFormulas, _
LookAt:=3DxlPart, SearchOrder:=3DxlByRows,
SearchDirection:=3DxlNext, _
MatchCase:=3DFalse, SearchFormat:=3DFalse).Activate
ActiveCell.Select

4 réponses

Avatar
Alex
'J'ai fait une mauvaise manipulation, ca envoyer le message, alors je
fini (avec mes excuses)
'************************************************************************** *********************************
Bonsoir à tous,

Je voudrais affiner ma fonction Rechercher. J'ai utilisé
l'enregistreur de Macro, pour avoir ma base de ligne de commande, à
avoir le résultat de Selection de la colonne A puis Ctrl F pour
rechercher "Maman" : j'ai obtenu ceci :


Columns("A:A").Select
Selection.Find(What:="Maman", After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
ActiveCell.Select

J'ai rajouté On erreur resume next avant ma fonction rechercher pour
au cas ou le mot "maman" n'appaatrait pas dans la liste, j'ai testé et
ça a l'air de fonctionner. Mais comme j'ai pas de next après, je
voulais savoir si vous pouviez me confirmer du bon fonctionnement de
mon choix de mettre On erreur resume next ?

Merci par avance de vos réponses.
Cordialement
Alex
Avatar
MichD
Bonjour,

Comme ceci, il n'est pas nécessaire d'effectuer une sélection de la cellule pour coder

'--------------------------------------
Sub Chercher()
Dim Trouve As Range
With Worksheets("Feuil1") 'Nom feuille à adapter
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
Set Trouve = .Find(What:="Maman", LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse)
End With
End With
If Not Trouve Is Nothing Then
'Tu as trouvé ce que tu cherches et tu peux
'continuer à coder sans utiliser de "Select
With Trouve
.Interior.ColorIndex = 3
.Font.Bold = True
.Value = 25
End With
Else
MsgBox "Pas trouvé ce que tu cherchais"
End If
End Sub
'--------------------------------------



MichD
------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :


Bonsoir à tous,

Je voudrais affiner ma fonction Rechercher. J'ai utilisé
l'enregistreur de Macro, pour avoir ma base de ligne de commande, à
avoir le résultat de Selection de la colonne A puis Ctrl F pour
rechercher "Maman" : j'ai obtenu ceci :

Columns("A:A").Select
Selection.Find(What:="Maman", After:¬tiveCell,
LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows,
SearchDirection:=xlNext, _
MatchCase:úlse, SearchFormat:úlse).Activate
ActiveCell.Select
Avatar
Alex
Bonsoir Michel,

Merci pour la réponse, quand j'ai fait mon test avec ma proposition,
j'avais ajouté aussi un if pour voir si cela fonctionnait ou pas. Ta
solution est diffrente et fonctionne bien. Mais pourrais tu me
confirmer si mes lignes de commandes sont correctes a savoir si
l'usage de On error resume next pouvait lui aussi être une solution ou
pas car comme je le disais je ne savais pas si cela était correcte ou
pas ?
Merci par avance de ta réponse.
Bien cordialement
Alex
Avatar
MichD
Si tu utilises On error resume next

j'effacerais l'erreur si elle se produit en ajoutant comme dernière ligne Err.clear ou Err = 0

avec la méthode "Find", il faut porter attention aux paramètres..

Exemple si dans la colonne A:A, tu as une formule qui retourne la valeur "Maman"
ta procédure ne trouvera pas la cellule. Au lieu de XlFormulas, il faudrait mettre XlValues.

Xlformulas recherche dans ce que retourne la propriété "FormulaLocal" d'une cellule
Exemple : a = range("A1").LocalFormula

XlValues cherche dans ce que retourne la propriété "Value" d'une cellule
Exemple : a = range("A1").Value

Il faut prendre le temps de bien lire et relire la "Note" dans le bas de la page de l'aide d'Excel sur le sujet.


MichD
------------------------------------------
"Alex" a écrit dans le message de groupe de discussion :

Bonsoir Michel,

Merci pour la réponse, quand j'ai fait mon test avec ma proposition,
j'avais ajouté aussi un if pour voir si cela fonctionnait ou pas. Ta
solution est diffrente et fonctionne bien. Mais pourrais tu me
confirmer si mes lignes de commandes sont correctes a savoir si
l'usage de On error resume next pouvait lui aussi être une solution ou
pas car comme je le disais je ne savais pas si cela était correcte ou
pas ?
Merci par avance de ta réponse.
Bien cordialement
Alex