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

Recherche sur une partie des critères saisis (reprise du fil de imej-clavier du 06/08 20:23)

18 réponses
Avatar
Michel.P
Bonjour à toutes et tous
Je reprends la suite du fil en objet à mon compte
;-) qui est très intéressant pour moi. (merci à
BJ-RaMA ChrisV entre autres)
Je suis en train de travailler sur ce bout de VBA
qui pour l'instant me compte le nombre de fois
que "critere" est inscrit dans ma base
Ce que je recherche : que le "critère" puisse
être une partie du contenu de cellule. ex : dans
des cellules de ma base " renault super 5 - 1998"
donc si en critère je tape "super 5" la recherche
devra se faire sur une partie du contenu des
cellules et me donnera le nombre de fois
que "super 5" est inscrit. que se soit en
majuscules ou minuscules.
Merci d'avance

Sub Cherche()
Dim Compteur, Critere As String
Call Base
Critere = InputBox(" Saisissez un critère ")
Compteur = 0
For Each Cell In Range("base_ecriture")
'recherche dans ma base de données
If Cell = Critere Then
Compteur = Compteur + 1
End If
Next Cell
If Compteur > 0 Then
MsgBox (" Il y a " & Compteur & " fois le
critère " & Critere & " dans la base ")
Else
MsgBox (" Il n'y a pas le critère recherché
dans la base ")
End If
Range("b12").Select
End Sub

--
Amicalement
Michel . P
(un jour, serai Calife à la place du Calife...)

8 réponses

1 2
Avatar
Michel.P
Bonsoir Chris V
Je reprends le fil à l'instant.
Ton code n'est pas mal non plus, il a l'air plus
rapide, car si j'ai bien compris son
fonctionnement
il "visite" la plage de données plutôt que de
passer de cellule en cellule.
j'ai juste redéfini la plage de données avec ma
macro Base et ai juste modifié
cpT = .CountIf([base_ecriture], "*" & reC &
"*")
et ton roule impeccable.

merci de ton intervention.


ChrisV a présenté l'énoncé suivant :
Bonjour Michel.P,

En supposant que "base" soit située en A1:B6 (comme
dans ton précédent message)

Sub zaza()
Dim cpT As Integer
With Application
reC = .InputBox("Saisissez un critère", , , , , , ,
2 + 1) cpT = .CountIf([A1:B6], "*" & reC & "*")
If cpT > 0 Then
MsgBox "Il y a " & cpT & " fois le critère """
& reC & _ """ dans la base", vbInformation
Else: MsgBox "Il n'y a pas le critère recherché
dans la base", vbExclamation
End If
End With
End Sub


ChrisV


--
Amicalement
Michel . P
(un jour, serai Calife à la place du Calife...)

Avatar
ChrisV
Re,

il "visite" la plage de données plutôt que de
passer de cellule en cellule.


Tout à fait... sur quelques cellules, pas de différences notable, mais sur
des milliers... y'a pas photo ! ;-)

j'ai juste redéfini la plage de données...


Bein... ne sachant exactement où se trouvaient les données, j'ai repris la
plage de ton poste initial...


ChrisV


"Michel.P" a écrit dans le message de
news:
Bonsoir Chris V
Je reprends le fil à l'instant.
Ton code n'est pas mal non plus, il a l'air plus
rapide, car si j'ai bien compris son
fonctionnement
il "visite" la plage de données plutôt que de
passer de cellule en cellule.
j'ai juste redéfini la plage de données avec ma
macro Base et ai juste modifié
cpT = .CountIf([base_ecriture], "*" & reC &
"*")
et ton roule impeccable.

merci de ton intervention.


ChrisV a présenté l'énoncé suivant :
Bonjour Michel.P,

En supposant que "base" soit située en A1:B6 (comme
dans ton précédent message)

Sub zaza()
Dim cpT As Integer
With Application
reC = .InputBox("Saisissez un critère", , , , , , ,
2 + 1) cpT = .CountIf([A1:B6], "*" & reC & "*")
If cpT > 0 Then
MsgBox "Il y a " & cpT & " fois le critère """
& reC & _ """ dans la base", vbInformation
Else: MsgBox "Il n'y a pas le critère recherché
dans la base", vbExclamation
End If
End With
End Sub


ChrisV


--
Amicalement
Michel . P
(un jour, serai Calife à la place du Calife...)




Avatar
Michel.P
Bonjour Chris V (t'as vu l'heure...)
m'en suis rendu compte. je travaille sur à peut
prés 6000 cell et ce n'est qu'un début.
Je pense mettre en place un tranfert en feuille
archive puis vers fichier archive mois par mois,
sur un an se sera assez, mais en attendant cela
fera psa mal de volume de cellules ..alors les
soluces les plus courtes et plus rapide, je suis
prenenur.
merci du coup de main. bon, vai aller me coucher
moi...
et bonne fin de nuit.. ;-)

ChrisV avait écrit le 08/08/2004 :

Tout à fait... sur quelques cellules, pas de
différences notable, mais sur des milliers... y'a pas
photo ! ;-)


--
Amicalement
Michel . P
(un jour, serai Calife à la place du Calife...)

Avatar
ChrisV
... (t'as vu l'heure...)


Bein ??? la soirée ne fait que commencer !
;-)


ChrisV


"Michel.P" a écrit dans le message de
news:
Bonjour Chris V (t'as vu l'heure...)
m'en suis rendu compte. je travaille sur à peut
prés 6000 cell et ce n'est qu'un début.
Je pense mettre en place un tranfert en feuille
archive puis vers fichier archive mois par mois,
sur un an se sera assez, mais en attendant cela
fera psa mal de volume de cellules ..alors les
soluces les plus courtes et plus rapide, je suis
prenenur.
merci du coup de main. bon, vai aller me coucher
moi...
et bonne fin de nuit.. ;-)

ChrisV avait écrit le 08/08/2004 :

Tout à fait... sur quelques cellules, pas de
différences notable, mais sur des milliers... y'a pas
photo ! ;-)


--
Amicalement
Michel . P
(un jour, serai Calife à la place du Calife...)




Avatar
Michel.P
c'est un point de vue qui se défend !!!

ChrisV a exprimé avec précision :
Bein ??? la soirée ne fait que commencer !
;-)


--
Amicalement
Michel . P
(un jour, serai Calife à la place du Calife...)

Avatar
Frédéric Sigonneau
Bonjour,

Pour le plaisir, si tu utilises Excel 2000 ou + récent, une solution avec les
soeurs siamoises Split et Join :

'==================== Sub test()
Dim Plage As Range, CellDebut As Range, CellFin As Range, S$, i&

Set Plage = Range("A1:C3") 'ou autre
critere = "super 5" 'ou une inputbox si tu préfères

Set CellDebut = Range(Split(Plage.Address, ":")(0))
Set CellFin = Range(Split(Plage.Address, ":")(1))

For i = CellDebut.Column To CellFin.Column
S = S & UCase(Join(Application.Transpose(Range(Cells(CellDebut.Row, i), _
Cells(CellFin.Row, i)).Value), " ")) & " "
Next i

MsgBox UBound(Split(S, UCase(critere)))
End Sub
'====================
FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour à toutes et tous
Je reprends la suite du fil en objet à mon compte ;-) qui est très
intéressant pour moi. (merci à BJ-RaMA ChrisV entre autres)
Je suis en train de travailler sur ce bout de VBA qui pour l'instant me
compte le nombre de fois que "critere" est inscrit dans ma base
Ce que je recherche : que le "critère" puisse être une partie du contenu
de cellule. ex : dans des cellules de ma base " renault super 5 - 1998"
donc si en critère je tape "super 5" la recherche devra se faire sur une
partie du contenu des cellules et me donnera le nombre de fois
que "super 5" est inscrit. que se soit en majuscules ou minuscules.
Merci d'avance

Sub Cherche()
Dim Compteur, Critere As String
Call Base
Critere = InputBox(" Saisissez un critère ")
Compteur = 0
For Each Cell In Range("base_ecriture") 'recherche dans ma base de données
If Cell = Critere Then
Compteur = Compteur + 1
End If
Next Cell
If Compteur > 0 Then
MsgBox (" Il y a " & Compteur & " fois le critère " & Critere & "
dans la base ")
Else
MsgBox (" Il n'y a pas le critère recherché dans la base ")
End If
Range("b12").Select
End Sub



Avatar
Michel.P
Bonsoir Monsieur Fréderix Sigonneau
Je prends bonne note du code et ne manquerai pas
de le tester le plus tôt possible.
suis un 'aficionados' (suis pas sur de
l'orthographe) de votre site ainsi que du code
que vous
couché sur le forum.
au plaisir..et bonne nuit.

PS / suis sur excel97. (on verra bien... ;-) )

Frédéric Sigonneau avait prétendu :
Bonjour,

Pour le plaisir, si tu utilises Excel 2000 ou + récent,
une solution avec les soeurs siamoises Split et Join :


--
merci d'éclairer ma lanterne.
merci d'éclairer ma lanterne.
Michel.P

Avatar
Frédéric Sigonneau
Bonsoir,

PS / suis sur excel97. (on verra bien... ;-) )


C'est tout vu ! Join et Split sont des apports d'Excel 2000 (mais il y a des
contournements possibles pour Excel 97 sur mon site si tu veux vraiment tester).

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonsoir Monsieur Fréderix Sigonneau
Je prends bonne note du code et ne manquerai pas de le tester le plus
tôt possible.
suis un 'aficionados' (suis pas sur de l'orthographe) de votre site
ainsi que du code que vous
couché sur le forum.
au plaisir..et bonne nuit.

PS / suis sur excel97. (on verra bien... ;-) )

Frédéric Sigonneau avait prétendu :

Bonjour,

Pour le plaisir, si tu utilises Excel 2000 ou + récent, une solution
avec les soeurs siamoises Split et Join :






1 2