Salut nsqualli et le forum
Comme j'arrive après le début de la bataille, mes remarques sont sur la macros existante au temps de la réponse.en le simplifiantCode:
1
2
3
4
5
6
7 For Each cel In Range("F" & 1).EntireColumn contenu = Active.Range.Formula If contenu Like "Evo" Then GoTo Test End If Next cel Test:
But de cette boucle ? Trouver "Evo", ça, je crois que je comprends, mais... Que tu le trouve ou pas, tu te retrouves après le "next cel". Tu ne mémorises pas la réponse pour la tester, tu ne fais pas un saut pour éviter le reste du traitement ?Code:
1
2
3 For Each cel In Columns(6) If cel = "Evo" Then Exit For Next cel
Quelques Remarques :
La déclaration des variables est effectuée par Excel lors d'un premier passage => sert à rien d'émailler ton code de Dim. Regroupes-les au début de la macro, ça t'évitera des recherches inutiles et rendra ton code plus lisible.
Toujours dans le même esprit de lisibilité (quoique un intervenant disait d'être feignant, alors je met en pratique :P), évite les ".Formula". Avec du texte ou des valeurs brutes, ça donne le contenu, mais ce que tu cherche est un contenu, pas la formule de la cellule. Donc demande le contenu (.Value) ou rien, parce que value est la propriété par défaut
Tu parcoures toute la colonne F (s'il n'y a pas de bonne réponse). C'est une perte de temps, le micro a autre chose à faire! Comme tu connais la limite :
- soit tu ne testes que la plage concernée et pas les autres cellules (il y a d'autres moyens, mais celle-ci est compréhensible) :- Soit tu testes jusqu'à la dernière cellule non-vide de FCode:For Each cel In Range([F1],[F171])
Code:For Each cel In Range([F1], [F65536].end(xlup))
??? qu'est-ce que tu cherches à faire ??? Comprends pas du tout : tu colles les formules de T1 à T171 dans une variable et tu t'étonnes que tu ais des problèmes.Code:
1
2
3
4 Test: ligne = Range("T1:T171").Formula If ligne <> "CHK" Then ....
Tu fais la même erreur si la variable dev.
Expliques le but de ta macro : on essayera de t'aider.
Si tu débutes, ne commence pas à faire une macro intégrale d'un seul coup. À mon d'être un génie, tu te planteras. Il vaut mieux faire une partie de la macro finale, la tester (avec un point d'arrêt et <F8>) et seulement si la partie fait ce que tu espères, tu continues. Sinon tu dépannes, mais comme c'est une petite partie, c'est plus simple. Après tu en refais un bout, et ainsi de suite.
A+
PS évite de modifier sans arrêt ton poste initial : comment veux-tu t'y retrouver si les postes ne correspondent à rien de ce que tu as dans ta question!
Edit :comme il n'y a pas eu de poste entre temps, je continue sur le même :
Si on a Evo en F et un espace en AG (?) on colorie en rouge le texte de la cellule BCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Option Explicit Option Compare Text Sub renseigner2() Dim Cel As Range For Each Cel In Range([F1], [F65536].End(xlUp)) If Cel = "Evo" And Cells(Cel.Row, "AG") = " " And _ Cells(Cel.Row, "T") <> "CHK" And _ Cells(Cel.Row, "T") <> "CHK-OK" And _ Cells(Cel.Row, "T") <> "ANA" And _ Cells(Cel.Row, "T") <> "ANU" And _ Cells(Cel.Row, "T") <> "ATT" Then Cel.Offset(0, -4).Font.Color = vbRed Next End Sub