yocrita
Messages postés21Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention17 août 200716 25 févr. 2005 à 18:54
perso,
je fais ça (et sa marche même pour rechercher le nombre d'occurrences d'une sous-chaine
je te donne la fonction
Function NbOc(Chaine As String, Ch As String, Optional RC As Boolean = False) As Long
If RC Then
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , 0))) / Len(Ch)
Else
NbOc = (Len(Chaine) - Len(Replace(Chaine, Ch, "", , , 1))) / Len(Ch)
End If
End Function
ou:
Chaine=Ta chaine principale
Ch=Ta sous chaine (ou caractère)
RC=Pour Respecter ou non la Casse dans la fonction Replace prédéfinie en visual basic
si RC=False alors majuscule = minuscule
si RC=True alors majuscule /= minuscule
cqui789
Messages postés261Date d'inscriptionjeudi 13 janvier 2005StatutMembreDernière intervention18 mai 20093 26 févr. 2005 à 22:03
perso, je trouve la solution de
yocrita tres bonne, je suis jaloux de ne pas avoir pense aux
len(replace plutot mais je pense qu'elle pourait etre simplifiee :
Function NbOc(Chaine As String, Ch As String, Optional RC As integer = 1) As Long
ou:
Chaine=Ta chaine principale
Ch=Ta sous chaine (ou caractère)
RC=Pour Respecter ou non la Casse dans la fonction Replace prédéfinie en visual basic
si RC=1 alors majuscule = minuscule
si RC=0 alors majuscule /= minuscule
metalcoder
Messages postés193Date d'inscriptionjeudi 14 février 2002StatutMembreDernière intervention25 mars 20111 28 févr. 2005 à 07:34
Merci de vos réponses, elles marche mais dans mon cas je me suis mal explique et ca me convenait pas
en faite je voulais empecher l'utilisateur de rentre 2 fois par idnavertance le caractere "." dans une zone de texte qui contient un prix (par ex; evite de mettre 12..50 ou 12.50.) etc...
j'ai finalement fait ca comme ca (c'est pas super joli car le curseur se remet au debut de la zone de texte mais au moins ca marche)
Dim text
Private Sub Text1_KeyPress(KeyAscii As Integer)
text = Text1.text
If ((KeyAscii < 48 Or KeyAscii > 57) And (KeyAscii <> 8) And KeyAscii <> 46) Then
KeyAscii = 0
End If
End Sub
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim essai() As String
essai() = Split(Text1.text, ".")
If UBound(essai) > 1 Then
Text1.text = text
End If
End Sub
Merci encore
Metalcoder
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_charles0508
Messages postés1Date d'inscriptionvendredi 28 septembre 2007StatutMembreDernière intervention 3 octobre 20081 3 oct. 2008 à 06:25
Bien que les solutions en VB ci-haut fonctionnent... je vous propose de le faire sans aucune macro...
En résumé vous compter le nombre de caractère de votre expression. Ensuite vous soustrayez le nombre de caractère de cette même expression dans laquelle au préalable vous remplacer le texte cherché par "". Facile!!!
N occurence = nbcar(concatener(cellules que vous voulez compter les occurences)) - nbcar(substitue(concatener(cellules où vous voulez compter les occurences);texte cherché;""))