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.
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.
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.
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