> Tous les forums > Forum Bureautique
 fonction excel :recherche une lettre dans chaineSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
lafourcade.jpb
  Posté le 01/02/2007 @ 19:37 
Aller en bas de la page 
Petit astucien

bonjour

je voudrais "scanner" une chaine de caractère contenue dans une cellule

si celle-ci contient la lettre W (majuscule ou minuscule) j'applique un traitement

si c'est Q , ....

mais la lettre peut être dans n'importe quelle position dans la chaîne de caractères

merci pour vos lumières

Publicité
dixit
 Posté le 01/02/2007 à 20:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonsoir,

peut-être avec les fonctions CHERCHE ou TROUVE

voir l'aide d'Excel pour plus de détails

kénavo

ps : ouvrage peu cher sur Excel 2003 Fonctions et Formules Micro Application 8,70€

lafourcade.jpb
 Posté le 02/02/2007 à 18:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci pour l'info

j'ai fait ma macro avec search("lettre cherchée",cellule contenant la chaîne,index)

le problème :

la fonction renvoie un nombre correspondant à la position de la lettre dans la chaîne

mais si la lettre n'existe pas elle renvoie : #VALEUR!

et alors cela bloque tous mes traitements ...

ma macro fonctionne bien lorsque toutes les lettres que je cherche sont présentes

s'il en manque une ... c'est le flop

existe t il un moyen d'inhiber ce #VALEUR!

merci pour vos conseils

Marmotte18
 Posté le 02/02/2007 à 18:19 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonsoir,

Suppose que tu cherches la lettre "W" en A1 :

=SI(ESTERREUR(CHERCHE("w";A1;1));0;CHERCHE("w";A1;1))

Cette formule à l'intérêt de ramener le chiffre 0 si Excel ne trouve pas la lettre "w" ou un nombre positif qui indique quelle place occupe la lettre recherchée la 1ère fois qu'il la trouve dans A1.



Modifié par Marmotte18 le 02/02/2007 18:23
galopin01
 Posté le 02/02/2007 à 19:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

bonjour,
utilise instr()

Voici une petite fonction personnalisée qui utilise instr() sur la celluleactive

Function isINSTR(car As String) As Boolean
isINSTR = InStr(ActiveCell, car)
End Function

Sub test()
If isINSTR("w") Then
MsgBox "trouvé"
Else
MsgBox "pas trouvé"
End If
End Sub

A+



Modifié par galopin01 le 02/02/2007 19:26
galopin01
 Posté le 02/02/2007 à 19:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Avec la même fonction personnalisée, cette autre macro cherche tous les caractères de A à Z dans la cellule active

Function isINSTR(car As String) As Boolean
isINSTR = InStr(LCase(ActiveCell), car)
End Function

Sub test()
For i = 97 To 122
If isINSTR(Chr(i)) Then
MsgBox Chr(i) & " trouvé"
Else
MsgBox Chr(i) & " pas trouvé"
End If
Next
End Sub

Nota : LCase pour ne pas tenir compte des majuscules/minuscules

A+



Modifié par galopin01 le 02/02/2007 19:40
lafourcade.jpb
 Posté le 02/02/2007 à 19:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci pour vos réponses

j'avais travaillé entre temps (pour rien puisque vous m'apportez des solutions meilleures)

je m'en étais sorti ainsi : (c'est un peu laborieux mais fonctionnel)

Public Function Kmod(classe_serv, combi, altitude)

longueur = Len(combi)

nG = 0
nS = 0
nW = 0
nQ = 0
nA = 0

For t = 1 To longueur
a = Left(combi, t)
b = Right(a, 1)
Select Case b
Case "g", "G"
nG = nG + 1
Case "s", "S"
nS = nS + 1
Case "w", "W"
nW = nW + 1
Case "q", "Q"
nQ = nQ + 1
Case "a", "A"
nA = nA + 1
End Select
Next t

If nG > 0 Then
Select Case classe_serv
Case 1, 2

ect ....

galopin01
 Posté le 02/02/2007 à 20:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Euh...

Je ne sais pas si c'est meilleur, surtout dans ton contexte car je n'ai pas épluché tes 2 topics mais instr() est à coup sur puissant...
Comme je n'ai que des bribes de code et qu'on ne sait pas exactement ce qui est recherchable difficile de faire mieux.

Si tu dois rechercher seulement 4 ou 5 caractères tu peux tester quelque chose comme ça :

Function isINSTR(car As String) As Boolean
isINSTR = InStr(LCase(ActiveCell), car)
End Function

Sub test()
Dim Tablo() As String
Tablo() = Split("q v x w") 'ici mettre les lettres recherchables séparées par un espace
For i = 0 To UBound(Tablo())
If isINSTR(Tablo(i)) Then MsgBox "trouvé " & Tablo(i)
Next
End Sub

...pour traiter indifféremment 0, 1 ou plusieurs possibilités simultanées ou non.

A+

A+



Modifié par galopin01 le 02/02/2007 21:01
Marmotte18
 Posté le 03/02/2007 à 08:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Je n'avais pas fait attention qu"il s'agissait de macro !

On peut également utiliser cette macro à laquelle tu peux faire appel quand tu veux dans ta programmation (grâce à l'instruction call). Elle ramène :

  • une chaîne vide si le caractère recherché n'est pas trouvé
  • le caractère recherché si celui-ci est trouvé

Public PrésenceCaractère As String
Option Explicit

Public Sub ChercheCaractère(TexteAnalysé As String, CaractèreRecherché As String)

Dim T As Byte

PrésenceCaractère = ""

For T = 1 To Len(TexteAnalysé)
If Mid(UCase(TexteAnalysé), T, 1) = UCase(CaractèreRecherché) Then
PrésenceCaractère = CaractèreRecherché
End If
Next T

End Sub

Supposons que tu aies besoin d'analyser la cellule A1 pour savoir si elle contient la lettre "w", alors :

Sub Analyse()
Call ChercheCaractère(Cells(1, 1), "w")
If PrésenceCaractère = "w" Then
'traitement 1
Else
'traitement 2
End If
End Sub



Modifié par Marmotte18 le 03/02/2007 08:33
Publicité
lafourcade.jpb
 Posté le 03/02/2007 à 08:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci à vous tous pour vos remarques précieuses

je serais prétentieux de dire que j'ai tout compris

mais une chose est sure :

à chaque fois que je m'adresse à vous je trouve des gens sympatiques et dévoués

et les progrès sont à la clef !

merci et à bientôt sans aucun doute

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
59 €Disque dur Seagate BarraCuda 2 To à 59 €
Valable jusqu'au 25 Janvier

Amazon propose actuellement le disque dur Seagate BarraCuda - 2 To (ST2000DM008) à 59 € livré gratuitement. On le trouve ailleurs autour de 69 €. Ce disque dur 3.5 pouces SATA III tourne à 7200tr/min et possède 64Mo de cache. 


> Voir l'offre
149 €Vélo d'appartement pliable CARE FITNESS SV-316 à 149 €
Valable jusqu'au 26 Janvier

Les différents confinements ont été fatals sur votre poids ? Amazon fait une promotion sur le vélo d'appartement pliable CARE FITNESS SV-316 qui passe à 149 € livré gratuitement alors qu'on le trouve habituellement autour de 200 €. Pliable, vous pourrez facilement le ranger une fois votre séance sportive terminée. Avec sa masse d’inertie de 4 kg, le SV-316 vous assurera un pédalage toujours fluide, silencieux et sécurisant. Avec ses 8 réglages manuels de la résistance, augmentez la résistance en un tour de main pour alterner sprint, endurance et récupération.

Le SV-316 comprend un écran LCD qui intègre 7 fonctions ciblées pour le suivi de votre activité. Vous pourrez ainsi connaître la durée de votre séance, en minutes et en secondes, la distance parcourue durant la séance et au total, la vitesse en km/h, l’estimation des calories brûlées, ou encore l’affichage successif des indicateurs. 100 kg max. Garanti 5 ans sur le châssis et 2 ans sur les pièces d'usure.


> Voir l'offre
19,14 €Souris sans fil Logitech M280 à 19,14 €
Valable jusqu'au 27 Janvier

Amazon fait une petite promotion sur la souris sans fil Logitech M280 qui passe à 19,14 €. On la trouve ailleurs à partir de 30 €. Sa forme profilée est adaptée aux droitiers. Son autonomie est de 18 mois (pile AA que vous pourrez remplacer).


> Voir l'offre

Sujets relatifs
Recherche d'une fonction dans EXCEL
Conversion d'un chiffre dans une fonction Excel
Fonction RECHERCHE d'Excel
Recherche dans Excel 2003
FORMULE EXCEL POUR RECHERCHE DANS UNE TABLE
Recherche sur commentaire dans excel
Fonction BDSOMME dans Excel
Recherche de caractère dans une chaine alphanuméri
Recherche une fonction dans le tableau de writer
Fonction Recherche sur Excel
Plus de sujets relatifs à fonction excel :recherche une lettre dans chaine
 > Tous les forums > Forum Bureautique