jeancdus69
Messages postés11Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention20 novembre 2007
-
23 janv. 2007 à 13:38
jeancdus69
Messages postés11Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention20 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
cs_mouadkrt
Messages postés8Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention24 janvier 2007 23 janv. 2007 à 16:22
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.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 24 janv. 2007 à 10:34
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.
jeancdus69
Messages postés11Date d'inscriptionmardi 23 janvier 2007StatutMembreDernière intervention20 novembre 2007 13 mars 2007 à 17:46
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.