j'ai une colonne qui contient des identifiant numeriques de sociétés (commandes/sociétés).
pour la meme société par ex la 23, on peut avoir 0023 023 23
et quandd je dois cherche cette société avec find, je ne peut raisonnablement trouver que la 23 (je vais pas non plus essayer tout ca: 023 0023 00023 000023 !..)
Comme pour le sort avec Datatoption=xlSortNormal/xlSortTextAsNumbers,
je pensais qu'on pouvait distinguer uen recherche en mode texte ou en mode numerique (par val : 23 = 023) :
selection.Find("23", , LookIn:=xlValues, LookAt:=xlWhole).address
j'ai un peu essayé tout azimut, mais j'ai du louper des trucs au passage...
---> y a til un format spécial pour le find genre what:="#23" (comme le format de VB ?!?)
---> y a il d'autres méthodes à part:
- appliquer le format "0000000X" à toute la colonne, faire le find, puis annuler le format" (les codes doievnt rester tel quel)
- un sort avec xlSortTextAsNumbers , for each + if val(cellule)=23 sur toutes les cellules
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AV
Un truc m'échappe : Si ton champ (contenant les identifiants) est au format texte (23 ou 0023 ou ...), find fait très bien le distinguo entre ces diverses valeurs
?? AV
Un truc m'échappe :
Si ton champ (contenant les identifiants) est au format texte (23 ou 0023 ou
...), find fait très bien le distinguo entre ces diverses valeurs
Un truc m'échappe : Si ton champ (contenant les identifiants) est au format texte (23 ou 0023 ou ...), find fait très bien le distinguo entre ces diverses valeurs
?? AV
Ricky [MVP]
Bonjour *AV* (et tous les lecteurs) | Un truc m'échappe : | Si ton champ (contenant les identifiants) est au format texte (23 ou | 0023 ou ...), find fait très bien le distinguo entre ces diverses | valeurs | | ?? | AV
Justement, je pense que *loko* souhaite que toutes les occurences soient prises en compte, les 0 de gauche n'étant pas significatifs.
-- Ricky [MVP] Visitez les faq.... http://www.faqoe.com http://faq.ms.word.free.fr http://dj.joss.free.fr/faq.htm http://www.excelabo.net
Bonjour *AV* (et tous les lecteurs)
| Un truc m'échappe :
| Si ton champ (contenant les identifiants) est au format texte (23 ou
| 0023 ou ...), find fait très bien le distinguo entre ces diverses
| valeurs
|
| ??
| AV
Justement, je pense que *loko* souhaite que toutes les occurences soient prises en compte, les 0 de gauche n'étant pas significatifs.
--
Ricky [MVP] Visitez les faq....
http://www.faqoe.com http://faq.ms.word.free.fr
http://dj.joss.free.fr/faq.htm http://www.excelabo.net
Bonjour *AV* (et tous les lecteurs) | Un truc m'échappe : | Si ton champ (contenant les identifiants) est au format texte (23 ou | 0023 ou ...), find fait très bien le distinguo entre ces diverses | valeurs | | ?? | AV
Justement, je pense que *loko* souhaite que toutes les occurences soient prises en compte, les 0 de gauche n'étant pas significatifs.
-- Ricky [MVP] Visitez les faq.... http://www.faqoe.com http://faq.ms.word.free.fr http://dj.joss.free.fr/faq.htm http://www.excelabo.net
AV
Justement, je pense que *loko* souhaite que toutes les occurences soient prises en compte, les 0 de gauche n'étant pas significatifs.
Ha..... Alors .. la 1° ligne de la plage A1:A20 (à adapter) contenant "23" :
MsgBox [match(1,isnumber(find("23",A1:A20))*1,0)]
AV
Justement, je pense que *loko* souhaite que toutes les occurences soient
prises en compte, les 0 de gauche n'étant pas significatifs.
Ha.....
Alors .. la 1° ligne de la plage A1:A20 (à adapter) contenant "23" :
Justement, je pense que *loko* souhaite que toutes les occurences soient prises en compte, les 0 de gauche n'étant pas significatifs.
Ha..... Alors .. la 1° ligne de la plage A1:A20 (à adapter) contenant "23" :
MsgBox [match(1,isnumber(find("23",A1:A20))*1,0)]
AV
BJ
Bonjour Ioko, Je pense que ceci corresponds à ton attente, une msgbox te demande de poursuivre la recherche ou pas. 23 023 0023 sont pris en compte mais pas 123 ou 231 Bruno
num = 23 'cé ton exemple num doit prendre le N°du fournisseur With Range("A1:A65536") 'A modifier en conséquence Set c = .Find(num, LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do If c.Value * 1 = num Then c.Activate rep = MsgBox("Continuer la recherche ?", 4 + 32, "Recherche") If rep = vbNo Then Exit Sub End If Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With MsgBox "Recherche terminée!"
loko a écrit dans le message :
j'ai une colonne qui contient des identifiant numeriques de sociétés (commandes/sociétés).
pour la meme société par ex la 23, on peut avoir 0023 023 23 et quandd je dois cherche cette société avec find, je ne peut raisonnablement trouver que la 23 (je vais pas non plus essayer tout ca:
023 0023 00023 000023 !..)
Comme pour le sort avec Datatoption=xlSortNormal/xlSortTextAsNumbers, je pensais qu'on pouvait distinguer uen recherche en mode texte ou en mode numerique (par val : 23 = 023) :
j'ai un peu essayé tout azimut, mais j'ai du louper des trucs au passage...
---> y a til un format spécial pour le find genre what:="#23" (comme le format de VB ?!?)
---> y a il d'autres méthodes à part: - appliquer le format "0000000X" à toute la colonne, faire le find, puis annuler le format" (les codes doievnt rester tel quel)
- un sort avec xlSortTextAsNumbers , for each + if val(cellule)# sur toutes les cellules
la je sèche....
merci
Bonjour Ioko,
Je pense que ceci corresponds à ton attente, une msgbox te demande de
poursuivre la recherche ou pas.
23 023 0023 sont pris en compte mais pas 123 ou 231
Bruno
num = 23 'cé ton exemple num doit prendre le N°du fournisseur
With Range("A1:A65536") 'A modifier en conséquence
Set c = .Find(num, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If c.Value * 1 = num Then
c.Activate
rep = MsgBox("Continuer la recherche ?", 4 + 32, "Recherche")
If rep = vbNo Then Exit Sub
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
MsgBox "Recherche terminée!"
loko <loko@discussions.microsoft.com> a écrit dans le message :
0973440D-ED52-4CB7-9E1E-49E68F9651F7@microsoft.com...
j'ai une colonne qui contient des identifiant numeriques de sociétés
(commandes/sociétés).
pour la meme société par ex la 23, on peut avoir 0023 023 23
et quandd je dois cherche cette société avec find, je ne peut
raisonnablement trouver que la 23 (je vais pas non plus essayer tout ca:
023 0023 00023 000023 !..)
Comme pour le sort avec Datatoption=xlSortNormal/xlSortTextAsNumbers,
je pensais qu'on pouvait distinguer uen recherche en mode texte ou en mode
numerique (par val : 23 = 023) :
j'ai un peu essayé tout azimut, mais j'ai du louper des trucs au
passage...
---> y a til un format spécial pour le find genre what:="#23" (comme le
format de VB ?!?)
---> y a il d'autres méthodes à part:
- appliquer le format "0000000X" à toute la colonne, faire le find, puis
annuler le format" (les codes doievnt rester tel quel)
- un sort avec xlSortTextAsNumbers , for each + if val(cellule)# sur
toutes les cellules
Bonjour Ioko, Je pense que ceci corresponds à ton attente, une msgbox te demande de poursuivre la recherche ou pas. 23 023 0023 sont pris en compte mais pas 123 ou 231 Bruno
num = 23 'cé ton exemple num doit prendre le N°du fournisseur With Range("A1:A65536") 'A modifier en conséquence Set c = .Find(num, LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do If c.Value * 1 = num Then c.Activate rep = MsgBox("Continuer la recherche ?", 4 + 32, "Recherche") If rep = vbNo Then Exit Sub End If Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With MsgBox "Recherche terminée!"
loko a écrit dans le message :
j'ai une colonne qui contient des identifiant numeriques de sociétés (commandes/sociétés).
pour la meme société par ex la 23, on peut avoir 0023 023 23 et quandd je dois cherche cette société avec find, je ne peut raisonnablement trouver que la 23 (je vais pas non plus essayer tout ca:
023 0023 00023 000023 !..)
Comme pour le sort avec Datatoption=xlSortNormal/xlSortTextAsNumbers, je pensais qu'on pouvait distinguer uen recherche en mode texte ou en mode numerique (par val : 23 = 023) :
j'ai un peu essayé tout azimut, mais j'ai du louper des trucs au passage...
---> y a til un format spécial pour le find genre what:="#23" (comme le format de VB ?!?)
---> y a il d'autres méthodes à part: - appliquer le format "0000000X" à toute la colonne, faire le find, puis annuler le format" (les codes doievnt rester tel quel)
- un sort avec xlSortTextAsNumbers , for each + if val(cellule)# sur toutes les cellules
la je sèche....
merci
Daniel.M
Complément d'info pour loko,
Ha..... Alors .. la 1° ligne de la plage A1:A20 (à adapter) contenant "23" :
MsgBox [match(1,isnumber(find("23",A1:A20))*1,0)]
Pour gérer la valeur d'erreur retournée lorsqu'on ne trouve pas le 23:
Dim res As Variant res = [match(1,isnumber(find("23",A1:A20))*1,0)] If IsError(res) Then MsgBox "Non-Trouvé" Else MsgBox "Trouvé en position " & res End If
Salutations,
Daniel M.
Complément d'info pour loko,
Ha.....
Alors .. la 1° ligne de la plage A1:A20 (à adapter) contenant "23" :
MsgBox [match(1,isnumber(find("23",A1:A20))*1,0)]
Pour gérer la valeur d'erreur retournée lorsqu'on ne trouve pas le 23:
Dim res As Variant
res = [match(1,isnumber(find("23",A1:A20))*1,0)]
If IsError(res) Then
MsgBox "Non-Trouvé"
Else
MsgBox "Trouvé en position " & res
End If
Ha..... Alors .. la 1° ligne de la plage A1:A20 (à adapter) contenant "23" :
MsgBox [match(1,isnumber(find("23",A1:A20))*1,0)]
Pour gérer la valeur d'erreur retournée lorsqu'on ne trouve pas le 23:
Dim res As Variant res = [match(1,isnumber(find("23",A1:A20))*1,0)] If IsError(res) Then MsgBox "Non-Trouvé" Else MsgBox "Trouvé en position " & res End If
Salutations,
Daniel M.
loko
merci pr ce code. mais j'arrive po à faire marcher cet exemple...
il trouve que le 23 mais pas les 023 00023 car (je sais pas si ton algo doit resoudre le pb), mais normalement un find(23) ne reconnait pas les 023 00023
Mais peut-etre que l'attribut LookIn:=xlValues permettait de resoudre ce pb du find ?
Bonjour Ioko, Je pense que ceci corresponds à ton attente, une msgbox te demande de poursuivre la recherche ou pas. 23 023 0023 sont pris en compte mais pas 123 ou 231 Bruno
num = 23 'cé ton exemple num doit prendre le N°du fournisseur With Range("A1:A65536") 'A modifier en conséquence Set c = .Find(num, LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do If c.Value * 1 = num Then c.Activate rep = MsgBox("Continuer la recherche ?", 4 + 32, "Recherche") If rep = vbNo Then Exit Sub End If Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With MsgBox "Recherche terminée!"
loko a écrit dans le message :
j'ai une colonne qui contient des identifiant numeriques de sociétés (commandes/sociétés).
pour la meme société par ex la 23, on peut avoir 0023 023 23 et quandd je dois cherche cette société avec find, je ne peut raisonnablement trouver que la 23 (je vais pas non plus essayer tout ca:
023 0023 00023 000023 !..)
Comme pour le sort avec Datatoption=xlSortNormal/xlSortTextAsNumbers, je pensais qu'on pouvait distinguer uen recherche en mode texte ou en mode numerique (par val : 23 = 023) :
j'ai un peu essayé tout azimut, mais j'ai du louper des trucs au passage...
---> y a til un format spécial pour le find genre what:="#23" (comme le format de VB ?!?)
---> y a il d'autres méthodes à part: - appliquer le format "0000000X" à toute la colonne, faire le find, puis annuler le format" (les codes doievnt rester tel quel)
- un sort avec xlSortTextAsNumbers , for each + if val(cellule)# sur toutes les cellules
la je sèche....
merci
merci pr ce code.
mais j'arrive po à faire marcher cet exemple...
il trouve que le 23 mais pas les 023 00023
car (je sais pas si ton algo doit resoudre le pb), mais normalement un find(23) ne reconnait pas les 023 00023
Mais peut-etre que l'attribut LookIn:=xlValues permettait de resoudre ce pb du find ?
Bonjour Ioko,
Je pense que ceci corresponds à ton attente, une msgbox te demande de
poursuivre la recherche ou pas.
23 023 0023 sont pris en compte mais pas 123 ou 231
Bruno
num = 23 'cé ton exemple num doit prendre le N°du fournisseur
With Range("A1:A65536") 'A modifier en conséquence
Set c = .Find(num, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
If c.Value * 1 = num Then
c.Activate
rep = MsgBox("Continuer la recherche ?", 4 + 32, "Recherche")
If rep = vbNo Then Exit Sub
End If
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
MsgBox "Recherche terminée!"
loko <loko@discussions.microsoft.com> a écrit dans le message :
0973440D-ED52-4CB7-9E1E-49E68F9651F7@microsoft.com...
j'ai une colonne qui contient des identifiant numeriques de sociétés
(commandes/sociétés).
pour la meme société par ex la 23, on peut avoir 0023 023 23
et quandd je dois cherche cette société avec find, je ne peut
raisonnablement trouver que la 23 (je vais pas non plus essayer tout ca:
023 0023 00023 000023 !..)
Comme pour le sort avec Datatoption=xlSortNormal/xlSortTextAsNumbers,
je pensais qu'on pouvait distinguer uen recherche en mode texte ou en mode
numerique (par val : 23 = 023) :
j'ai un peu essayé tout azimut, mais j'ai du louper des trucs au
passage...
---> y a til un format spécial pour le find genre what:="#23" (comme le
format de VB ?!?)
---> y a il d'autres méthodes à part:
- appliquer le format "0000000X" à toute la colonne, faire le find, puis
annuler le format" (les codes doievnt rester tel quel)
- un sort avec xlSortTextAsNumbers , for each + if val(cellule)# sur
toutes les cellules
merci pr ce code. mais j'arrive po à faire marcher cet exemple...
il trouve que le 23 mais pas les 023 00023 car (je sais pas si ton algo doit resoudre le pb), mais normalement un find(23) ne reconnait pas les 023 00023
Mais peut-etre que l'attribut LookIn:=xlValues permettait de resoudre ce pb du find ?
Bonjour Ioko, Je pense que ceci corresponds à ton attente, une msgbox te demande de poursuivre la recherche ou pas. 23 023 0023 sont pris en compte mais pas 123 ou 231 Bruno
num = 23 'cé ton exemple num doit prendre le N°du fournisseur With Range("A1:A65536") 'A modifier en conséquence Set c = .Find(num, LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do If c.Value * 1 = num Then c.Activate rep = MsgBox("Continuer la recherche ?", 4 + 32, "Recherche") If rep = vbNo Then Exit Sub End If Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With MsgBox "Recherche terminée!"
loko a écrit dans le message :
j'ai une colonne qui contient des identifiant numeriques de sociétés (commandes/sociétés).
pour la meme société par ex la 23, on peut avoir 0023 023 23 et quandd je dois cherche cette société avec find, je ne peut raisonnablement trouver que la 23 (je vais pas non plus essayer tout ca:
023 0023 00023 000023 !..)
Comme pour le sort avec Datatoption=xlSortNormal/xlSortTextAsNumbers, je pensais qu'on pouvait distinguer uen recherche en mode texte ou en mode numerique (par val : 23 = 023) :
j'ai un peu essayé tout azimut, mais j'ai du louper des trucs au passage...
---> y a til un format spécial pour le find genre what:="#23" (comme le format de VB ?!?)
---> y a il d'autres méthodes à part: - appliquer le format "0000000X" à toute la colonne, faire le find, puis annuler le format" (les codes doievnt rester tel quel)
- un sort avec xlSortTextAsNumbers , for each + if val(cellule)# sur toutes les cellules
la je sèche....
merci
AV
Et ce que je t'ai répondu ou le rajout de Daniel, ça le fait pas chez toi ?
Pfff........ AV
Et ce que je t'ai répondu ou le rajout de Daniel, ça le fait pas chez toi ?
Et ce que je t'ai répondu ou le rajout de Daniel, ça le fait pas chez toi ?
Pfff........ AV
Daniel.M
j'étais en train de tester: c'est interessant vos post: en fait, je vais essayer de combiner vos 2 méthodes car y a des avantages et inconvenients - match(1,isnumber(find("23",A1:A20))*1,0)] trouve bien les 23 0023 00023 mais aussi 223. en fait ca a l'air de chercher 23. (peut-etre equivalent à un find (*23*") ?)
res = [match(23,A1:A20*1,0)]
avec le code de gestion d'erreur autour.
Salutations,
Daniel M.
j'étais en train de tester:
c'est interessant vos post: en fait, je vais essayer de
combiner vos 2 méthodes car y a des avantages et inconvenients
- match(1,isnumber(find("23",A1:A20))*1,0)] trouve bien
les 23 0023 00023 mais aussi 223. en fait ca a l'air de chercher 23.
(peut-etre equivalent à un find (*23*") ?)
j'étais en train de tester: c'est interessant vos post: en fait, je vais essayer de combiner vos 2 méthodes car y a des avantages et inconvenients - match(1,isnumber(find("23",A1:A20))*1,0)] trouve bien les 23 0023 00023 mais aussi 223. en fait ca a l'air de chercher 23. (peut-etre equivalent à un find (*23*") ?)
res = [match(23,A1:A20*1,0)]
avec le code de gestion d'erreur autour.
Salutations,
Daniel M.
Daniel.M
J'aurais tendance à inscrire la plage en paramètre à la fonction. Ainsi, si tu changes tes données en A1:A10, le résultat de la fonction changera lui-aussi automatiquement.
function myFind(s as string, Plage as Range) myFind=Evaluate("match(" & s & "," & _ Plage.address (external:=true) & "*1,0)") end function
Salutations,
Daniel M.
"loko" wrote in message news:
YES !!!!
ca marche ! j'ai converti pr exploiter sous VBA:
function myFind(s as string)
myFind=Evaluate("match(" & s & ",'C:persoVBA[Sort.xls]Sort'!A1:A10*1,0)")
end function
pas con, j'ai compris : en fait le *1 oblige à faire le calcul de la val sur chaque cellule et à virer les 0 et les espaces. C'etait assez difficile à faire en VBA. Le pb qd on vient
de VB, on pense pas formule et cie...
Merci
j'étais en train de tester: c'est interessant vos post: en fait, je vais essayer de combiner vos 2 méthodes car y a des avantages et inconvenients - match(1,isnumber(find("23",A1:A20))*1,0)] trouve bien les 23 0023 00023 mais aussi 223. en fait ca a l'air de chercher 23. (peut-etre equivalent à un find (*23*") ?)
res = [match(23,A1:A20*1,0)]
avec le code de gestion d'erreur autour.
Salutations,
Daniel M.
J'aurais tendance à inscrire la plage en paramètre à la fonction.
Ainsi, si tu changes tes données en A1:A10, le résultat de la fonction changera
lui-aussi automatiquement.
function myFind(s as string, Plage as Range)
myFind=Evaluate("match(" & s & "," & _
Plage.address (external:=true) & "*1,0)")
end function
Salutations,
Daniel M.
"loko" <loko@discussions.microsoft.com> wrote in message
news:C2DDB503-4CE3-4775-81AE-A2327D87EAC3@microsoft.com...
YES !!!!
ca marche !
j'ai converti pr exploiter sous VBA:
function myFind(s as string)
myFind=Evaluate("match(" & s & ",'C:persoVBA[Sort.xls]Sort'!A1:A10*1,0)")
end function
pas con, j'ai compris :
en fait le *1 oblige à faire le calcul de la val sur chaque cellule et à virer
les 0 et les espaces. C'etait assez difficile à faire en VBA. Le pb qd on vient
de VB, on pense pas formule et cie...
Merci
j'étais en train de tester:
c'est interessant vos post: en fait, je vais essayer de
combiner vos 2 méthodes car y a des avantages et inconvenients
- match(1,isnumber(find("23",A1:A20))*1,0)] trouve bien
les 23 0023 00023 mais aussi 223. en fait ca a l'air de chercher 23.
(peut-etre equivalent à un find (*23*") ?)
J'aurais tendance à inscrire la plage en paramètre à la fonction. Ainsi, si tu changes tes données en A1:A10, le résultat de la fonction changera lui-aussi automatiquement.
function myFind(s as string, Plage as Range) myFind=Evaluate("match(" & s & "," & _ Plage.address (external:=true) & "*1,0)") end function
Salutations,
Daniel M.
"loko" wrote in message news:
YES !!!!
ca marche ! j'ai converti pr exploiter sous VBA:
function myFind(s as string)
myFind=Evaluate("match(" & s & ",'C:persoVBA[Sort.xls]Sort'!A1:A10*1,0)")
end function
pas con, j'ai compris : en fait le *1 oblige à faire le calcul de la val sur chaque cellule et à virer les 0 et les espaces. C'etait assez difficile à faire en VBA. Le pb qd on vient
de VB, on pense pas formule et cie...
Merci
j'étais en train de tester: c'est interessant vos post: en fait, je vais essayer de combiner vos 2 méthodes car y a des avantages et inconvenients - match(1,isnumber(find("23",A1:A20))*1,0)] trouve bien les 23 0023 00023 mais aussi 223. en fait ca a l'air de chercher 23. (peut-etre equivalent à un find (*23*") ?)