Mise en place d'un compteur suite à une condition

Bonjour,

Je réalise actuellement une macro qui permettra de retrouver dans un tableau des termes ou lettres que l'on saisit au préalable.

elle indique également la position de ceux ci dans une msgbox et colorie la cellule adjacente afin de rendre plus facilement visible la position.

Je souhaiterais mettre en place un compteur qui dans une troisième colonne m'indique le nombre de recherche que j'ai effectué sur le ou les mots aux positions données

Actuellement quand je lance la macro l'incrémentation se fait mais une fois une nouvelle recherche lancé l'incrémentation revient à la valeur de zéro or j'aimerais qu'elle prenne la valeur de l'opération précédente et qu'elle incrémente de 1

Voici ce que j'ai réalisé :

Sub recherche()

Dim a As String

Dim rng1 As Range

Dim rng2 As Range

Dim b As String

Dim compteur As Integer

Range("Tableau1[Nombre de recherche]") = compteur

Range("Tableau1[Position matrice]").Interior.Color = xlNone

Range("Tableau1[Position matrice]").Font.Bold = False

On Error Resume Next

a = InputBox("Quels termes recherchez vous?")

If a = "" Then Exit Sub

With ActiveSheet.UsedRange

Set rng1 = .Find(a, , xlValues, xlPart)

If Not rng1 Is Nothing Then

b = rng1.Address

Set rng2 = rng1

Do

Set rng1 = .FindNext(rng1)

Set rng2 = Union(rng2, rng1)

Loop While Not rng1 Is Nothing And rng1.Address <> b

End If

If rng2.count >= 1 Then

MsgBox " -Nombre total: " & rng2.count, , "Mot recherché : " & b

MsgBox " -Losalisation des cellules : " & rng2.Address, , "Mot recherché : " & b

rng2.Offset(0, 1).Interior.Color = RGB(0, 255, 0)

rng2.Offset(0, 1).Font.Bold = True

If ("Tableau1[Position matrice]") = RGB(0, 255, 0) Then

rng2.Offset(0, 2) = compteur + 1

compteur = compteur + 1

End If

End If

End With

Set rng1 = Nothing

Set rng2 = Nothing

End Sub

Quelqu'un saurait-il comment procéder afin d'y arriver?

Cordialement

Salut,

Sans avoir de fichier modèle à disposition, c'est difficile de faire des tests, mais je pense que la solution passe par une variable de type Static.

Essaie le code ci-dessous et si ça ne passe pas, fournis-moi un fichier sans données confidentielles, mais quand même avec des données exemple. J'ai marqué les passages modifiés par des commentaires Yvouille.

Static Compteur_Bis ' Yvouille
Sub recherche()
 Dim a As String
 Dim rng1 As Range
 Dim rng2 As Range
 Dim b As String
 Dim compteur As Integer

 Range("Tabelle2[Nombre de recherche]") = compteur
 compteur = compteur + Compteur_Bis ' Yvouille

 Range("Tabelle2[Position matrice]").Interior.Color = xlNone
 Range("Tabelle2[Position matrice]").Font.Bold = False

 On Error Resume Next
 a = InputBox("Quels termes recherchez vous?")
 If a = "" Then Exit Sub

 With ActiveSheet.UsedRange
 Set rng1 = .Find(a, , xlValues, xlPart)

 If Not rng1 Is Nothing Then
 b = rng1.Address
 Set rng2 = rng1
 Do
 Set rng1 = .FindNext(rng1)
 Set rng2 = Union(rng2, rng1)
 Loop While Not rng1 Is Nothing And rng1.Address <> b

 End If
 If rng2.Count >= 1 Then
 MsgBox " -Nombre total: " & rng2.Count, , "Mot recherché : " & b
 MsgBox " -Losalisation des cellules : " & rng2.Address, , "Mot recherché : " & b
 rng2.Offset(0, 1).Interior.Color = RGB(0, 255, 0)
 rng2.Offset(0, 1).Font.Bold = True

 If ("Tabelle2[Position matrice]") = RGB(0, 255, 0) Then
 rng2.Offset(0, 2) = compteur + 1
 compteur = compteur + 1
 End If
 End If

 End With
 Set rng1 = Nothing
 Set rng2 = Nothing

 Compteur_Bis = compteur + 1 ' Yvouille

 End Sub

Cordialement.

Merci pour ton aide Yvouille.

J'ai mis en place ce que tu m'as conseillé mais la macro incrémente de un la première fois qu'elle est lancée puis de deux les fois suivantes et de plus si je cherche un autre terme elle supprime les valeurs des autres cellules

Je joins une version simplifiée de mon excel afin que tu puisses mieux te rendre compte.

6macro.xlsm (21.50 Ko)

J'avais entretemps testé un peu plus la chose et je te propose de voir comment c'est fait dans le fichier ci-joint.

Le Compteur_Bis revient à zéro seulement lorsque tu fermes le fichier. Il y a surement un moyen de le faire revenir à zéro autrement, mais je n'ai pas cherché, ne sachant pas si ça te serait utile.

Si tu n'arrives pas à appliquer ça à ton fichier, je le regarde de plus près.

Amicalement.

8demo-x.xlsm (25.57 Ko)

Je vais essayer de mettre cela en place lundi, je n'ai malheureusement plus la possibilité de travailler sur ordinateur pour cette semaine n'ayant pas accès aux fichiers en dehors de mon entreprise

Je te remercie encore une fois pour ton aide.

Je te tiens au courant de la réussite ou non de la macro.

Amicalement

Timeout

Salut,

J’ai continué à chercher dans mon coin, bien que je ne comprenne encore pas trop bien tes besoins. Mais peut-être bien que mon avancement te permettra de voir ce qui est déjà possible, ce qui est inutile, ce qui manque, etc.

Dans le fichier ci-joint, une recherche avec un mot clé – ou un bout de mot clé comme ‘’choc’’ – met en évidence les lignes contenant ce terme et numérote le nombre de recherche en colonne D.

Si tu lances une deuxième recherche, la numérotation est reprise où elle est restée, comme tu sembles le souhaiter.

A la fermeture du fichier, le compteur revient à zéro. Il est aussi possible de revenir à zéro en cours d’utilisation.

Si tu lances deux fois une recherche avec le même mot, la numérotation est remplacée par une numérotation incrémentée.

Si tu effectues une recherche avec un terme qui n’est pas trouvé, un MsgBox te l’indique.

Si tu effectues une recherche avec deux mots différents mais qu’une ligne les contient les deux, la numérotation est incrémentée (par exemple recherches avec ‘’lait’’ et ‘’chocolat’’ crée un problème en ligne 15).

Si tu cherches avec la lettre ‘’a’’, seule la ligne 6 n’en contient pas

Cordialement.

9macro-v1.xlsm (27.24 Ko)

Bonjour Yvouille,

Super c'est ce que je cherchais, à savoir le compteur qui continu la numérotation et l'incrémentation si on effectue une deuxième recherche sur le même terme.

Merci beaucoup

Cordialement

Timeout

Rechercher des sujets similaires à "mise place compteur suite condition"