Pb recherche de texte [Résolu]

Messages postés
11
Date d'inscription
mardi 23 janvier 2007
Dernière intervention
20 novembre 2007
- - Dernière réponse : jeancdus69
Messages postés
11
Date d'inscription
mardi 23 janvier 2007
Dernière intervention
20 novembre 2007
- 13 mars 2007 à 17:46
J'ai un petit souci avec une fonction de recherche que je souhaite creer. A partie de mon classeur sous excel j'ai une colonne de cellule avec du texte dedans.
Je souhaiterai mettre en couleur les cellules contenant le texte "alarme disparue non acq.", jusque là rien de tres complique avec la fonctionde formatage automatique d'excel.
Mais pour ma part je cherche à creer une fonction du meme type sous VB mais en remplacant une partie de la chaine par * (ex:"*disparue*) pour que si une partie du texte change je retrouve
toujours le paramètre commun "disparu". Le probleme etant que aparemment VB ne reconnait pas * comme un element pouvant remplacer un ou plusieur caracteres. Pour plus de detail voici le code qui me pose probleme

Sub disp()


'Declaration de mes variables
Dim ColEtat As Integer                                    'colonne où se situe mon texte
Dim TotalLignePCVU As Double                     'nombre de ligne total de ma feuille
Dim i As Double                                                'compteur
Dim SheetDonneePCVU As Worksheet            'feuille de travail
Dim Text As String                                             'contenu de ma cellule
Dim Compare As String                                       'chaine de comparaison
ColEtat = 5                                                         'numero de ma colonne
Compare = "*dispar*"                                          'chaine


Set SheetDonneePCVU = ThisWorkbook.Sheets(1)      'definition de ma feuille de travail


TotalLignePCVU = SheetDonneePCVU.Rows.Count         'comptage des lignes
        While (SheetDonneePCVU.Cells(TotalLignePCVU, 1).Value = "")
        TotalLignePCVU = TotalLignePCVU - 1
        Wend


For i = 2 To TotalLignePCVU                                    'comparaison et mise en couleur
Text = SheetDonneePCVU.Cells(i, ColEtat).Text
If (SheetDonneePCVU.Cells(i, ColEtat).Text = Compare) Then
SheetDonneePCVU.Cells(i, ColEtat).Interior.ColorIndex = 4
End If


Next i


End Sub

Si quelqu'un a une reponse merci de me tenir au courant
Bon courage a tous

JeanCDus avec un D comme Dus
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
8
Date d'inscription
mardi 21 janvier 2003
Dernière intervention
24 janvier 2007
3
Merci
Bonjour,
Pas la peine d'utiliser les * sous VB : la fonction inStr
Function InStr([Start], [String1], [String2], [Compare As VbCompareMethod = vbBinaryCompare])

    Renvoie la position de la première occurrence d'une chaîne dans une autre

Donc pour vous InStr(1,votreChaine,"disparue") retournera 0 si le mot disparue n'y est pas.
Mouad.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de cs_mouadkrt
Messages postés
11
Date d'inscription
mardi 23 janvier 2007
Dernière intervention
20 novembre 2007
0
Merci
Je vais essayer cette fonction pour voir si elle convien à mon utilisation. Dans tous les cas merci de ta reponse

JeanCDus avec un D comme Dus
Commenter la réponse de jeancdus69
Messages postés
797
Date d'inscription
mardi 7 juin 2005
Dernière intervention
23 février 2011
0
Merci
Heu, tu veux absolument le faire avec du VB ?
Parce que tu dis que tu le fais avec une mise en forme conditionnelle pour la phrase complète, il te suffit de faire la même chose.

38457 mouadkrt  te parle de la fonction inStr.
Il faut savoir que cette fonction existe directement sous EXCEL, c'ets la formule TROUVE.
Il te suffit de faire une mise en forme conditionnelle de toutes tes cellules, sauf qu'au lieu de prendre "La valeur de la cellule est", tu prends l'option "La formule est" et tu mets la formule suivante sur la cellule G8 :
=TROUVE("disparue";G8)>0
Tu choisis tes couleurs, ton format et hop : si la cellule G8 contient le mot "disparue", quelque soit son emplacement, ta mise en forme est faite. Hop, zéro lignes de code, tadaaam.

Molenn
Commenter la réponse de Molenn
Messages postés
11
Date d'inscription
mardi 23 janvier 2007
Dernière intervention
20 novembre 2007
0
Merci
Pour répondre à Molenn avec un peu de retard, je suis obligé de passer par la fonction instr puisque j'utilise une macro sous VBE pour excel et que cette recherche n'est pas apparente sur ma feuille excel mais tourne en tâche de fond dans ma macro et utilise une variable de type string pour me permettre de moduler ma recherche plus facilement.


Merci quand même bonne soirée

JeanCDus avec un D comme Dus
Commenter la réponse de jeancdus69

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.