Recherche variable dans tableau

Bonjour et merci de m’accueillir sur votre forum.

Débutant en VBA, j’aurais bien besoin de votre aide pour résoudre le problème suivant :

J’ai un tableau de 45 lignes et de 2 à 99 colonnes.

Dans une colonne sont 45 labels sans doublons, arrangés de manière aléatoire. Les autres colonnes reçoivent les 45 mêmes labels, également arrangés de manière aléatoire.

Je veux retrouver, un par un, tous les labels identiques dans le tableau (il y en donc autant que de colonnes), et colorier les cellules correspondantes (cf. fichier joint, limité à 10 lignes et 10 colonnes, label recherché coloré en vert).

En m’aidant de l’enregistreur de macros, en remplaçant LookAt :=xlPart par xlWhole et en ajoutant les instructions relatives à la couleur, j’obtiens la macro suivante qui fonctionne, mais je dois introduire manuellement le label recherché (tototo dans l’exemple).

Sub essai_couleur_bis()

'

' essai_couleur_bis Macro

Dim cell As range

Dim m As Integer

range("B1:K45").Select

Cells.Find(What:="tototo", After:=ActiveCell, LookIn:=xlFormulas, _

LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _

MatchCase:=False, SearchFormat:=True).Activate

ActiveCell.Interior.Color = vbGreen

For m = 1 To 45

Cells.FindNext(After:=ActiveCell).Activate

ActiveCell.Interior.Color = vbGreen

Next

End Sub

Je voudrais que cette variable soit prise dans une cellule de la feuille, A1 par exemple, laquelle est mise à jour par une autre macro. Cette variable pourrait également être la cellule active d’une autre feuille.

J’ai résolu mon problème en copiant-collant le label cherché (coloré en jaune) dans une ligne ajoutée à mon tableau, créant ainsi un doublon dans chaque colonne, et en coloriant ces doublons ; mais il devrait exister une méthode plus élégante.

Merci de votre aide,

Cordialement,

Papy78.

9tableau.xlsx (10.40 Ko)

Bonjour. Bienvenue sur le Forum

Pourquoi passer par VBA, la mise en forme conditionnelle fait cela très bien

Tu choisis ta variable dans la liste déroulante en B1 et la MFC fait le reste

Remarque: Dans ton exemple, si tototo est dans toutes les colonnes, ce n'est pas le cas pour tous les autres "noms"

Maintenant, si tu préféres VBA, en fin de procédure renseignant A1, tu peux lancer ce code avec l'instruction

Call Doublons

et ce code dans un module

Sub Doublons()
Dim Cel As Range
For Each Cel In Range("B2:K11")
If Cel = Range("A1") Then
Cel.Interior.ColorIndex = 4
End If
If Cel <> Range("A1") Then Cel.Interior.ColorIndex = xlNone
Next Cel
End Sub

Cordialement

13tableau.xlsx (10.48 Ko)

Bonjour le forum, bonjour Amadéus,

Merci Amadéus pour ta réponse si rapide et pour ta solution qui fonctionne parfaitement.

Merci aussi pour ta remarque concernant la présence des « noms » dans toutes les colonnes. Pour alléger le fichier joint, j’ai limité le tableau à 10 lignes et 10 colonnes, mais j’ai bien des colonnes (de 2 à 99) contenant 45 labels sans doublons, tous les labels existant dans toutes les colonnes.

J’avais également omis de préciser que je voulais conserver la couleur du label n-1 trouvé, lors de la recherche du label n. J’ai donc supprimé la dernière ligne de ton code. A terme, et sauf arrêt de la recherche, mon tableau sera entièrement coloré en vert !

Mon projet avance à petits pas, mais il avance. Compte tenu de mon niveau en VBA, je serai très certainement amené à demander d’autres conseils.

Merci encore et sans doute à bientôt.

Cordialement,

Papy78.

Rechercher des sujets similaires à "recherche variable tableau"