XL 2013 [VBA] si une cellule contient

FéFéClochette

XLDnaute Nouveau
Bonjour à tous,

Mon tout premier message après 2h de recherche sur le net sans que le résultat ne soit bon ...

Je cherche à coder une fonction qui rechercherait dans une plage de cellules données un certain caractère (# => pour trouver les éventuels #N/A ou #VALEUR) et qui ensuite m'afficherait la dite cellule en jaune.

En rassemblant des bouts de code, je suis arrivé au résultat ci-dessous. Le problème est que la macro colorie chacune des cellules qu'elle check en jaune. Et lors qu'elle trouve un #N/A, j'ai un plantage :(

Range("X2:AA2").Select
Range(Selection, Selection.End(xlDown)).Select
For Each Cell In Selection
If Cell.Value Like "*#*" Then
Cell.Interior.ColorIndex = 6
resultat = 1
Rep = MsgBox("valeur nulle, vérifiez vos valeurs surlignées de jaune", vbOKOnly + vbCritical)
End If



Auriez vous une idée de la fonction à utiliser afin que cela fonctionne ? Je pense me tromper au niveau du :
If Cell.Value Like "*#*" Then
Mais peut y a-t-il autre chose qui fait planter l'ensemble.

merci beaucoup à vous tous, amis d'excel :)

Bonne journée
féfé
 

FéFéClochette

XLDnaute Nouveau
Bonjour Bruno, Job75,

merci beaucoup pour vos retours.

Lorsque j'utilise Cell.Text, j'ai le même résultat qu'avec un Cell.Value. Il me colore toutes les cases en jaune SAUF celle en erreur. Avec la IsError cela fonctionne bien.


Et si jamais je voulais que la macro s'arrête après avoir colorier chacune des cellule en erreur, il me suffirait de rajouter un Exit Sub à la fin ? J'imagine que non ...
Actuellement elle continue les traitements que je lui demande mais forcément ça bug au moment ou je tombe sur les fameuses cellules en erreur.

Range("X2:AA2").Select
Range(Selection, Selection.End(xlDown)).Select
For Each Cell In Selection
If IsError(Cell.Value) Then
Cell.Interior.ColorIndex = 6
resultat = 1
Rep = MsgBox("valeur nulle, vérifiez vos valeurs surlignées de jaune", vbOKOnly + vbCritical)

End If


Merci à vous deux en tout cas. ça fonctionne déjà pas mal :)

Féfé
 

youky(BJ)

XLDnaute Barbatruc
Bonjour Job75,
Bonjour Féfé,
Si tu veux laisser le choix de poursuivre ou stopper la macro utiliser ceci
If MsgBox("Voulez-vous stopper la macro ?", vbYesNo + vbExclamation, "Arrêter la macro") = vbYes Then Exit Sub
A placer en dessous du Next sinon à chaque erreur le message s'affiche.
Bruno
 

FéFéClochette

XLDnaute Nouveau
Bonjour Job75,


C'est nickel. J'ai même réussis à trouver où placer mon Exit Sub si Resultat = 1 :)

Merci beaucoup !

Edit : bonjour Bruno, je n'avais pas vu ton message.

Effectivement, c'est une solution interessante mais pour un autre traitement. Ici, le pré-recquis est qu'il n'y ai pas d'erreur dans le fichier. Du coup, je préfère que la macro s'arrête totalement et que l'utilisateur revois ses données.

En tout cas merci, je vais me servir de ça pour la suite :)
 

Statistiques des forums

Discussions
311 740
Messages
2 082 049
Membres
101 882
dernier inscrit
XaK_