pb vba.

pb vba. - VB/VBA/VBS - Programmation

Marsh Posté le 25-02-2005 à 09:12:39    

Je voudrai faire une vérification par exemple sur la colonne A des valeurs qui s'y trouvent. plus precisemment je voudrai surligner en jaune toutes les valeurs qui ne sont pas uniquement des nombres (chaine de caractères).

Reply

Marsh Posté le 25-02-2005 à 09:12:39   

Reply

Marsh Posté le 25-02-2005 à 10:21:56    

Essaye cela :

Code :
  1. For i = 1 To Range("A1" ).End(xlDown).Row
  2. If IsNumeric(Range("A" & i).Value) = False Then
  3. Range("A" & i).Font.Color = &HFFFF&
  4. End If
  5. Next i

Si al valeur est un nombre, rien ne se passe. Si la cellule est vide aussi. Si la cellule contient quelquechose qui n'est pas un nombre, le texte de celle-ci est mis en couleur (jaune ici). la couleur peut être donnée en Hexadécimal (&H........& ) ou "code vb" ( vbblue, vbred ..) :D  
Si ta sélection concerne la colonne " G ", il faut changer les " A " et mettre " G " a la place.
Si ta sélection commence à la ligne " 3 ", il faut remplacer le " 3 " au début de la boucle (For i = 3 ..).
Si ta sélection s'arrête à la ligne " 48 ", il faut remplacer " Range("A1" ).End(xlDown).Row " par " 48 ".
Désolé si tu savais tout cela mais c pour que tous le monde puisse comprendre.
Voila.

Reply

Marsh Posté le 25-02-2005 à 12:05:19    

Ok merci pour ta solution, ca marche bien.
le pb c que qq fois je peux avoir dans la meme cellule un chiffre et une lettre (ex: 4a).
je voudrai que dans ce cas de figure, il se mette d'une autre couleur

Reply

Marsh Posté le 25-02-2005 à 12:37:50    

Pour info g essayé de passer par un une affectation ds une variable d'un "right$(nom var, 1)" et de tester cette valeur mais je compren pas pkoi ca veu pas marcher
 
voila mon prog :
 
For i = 2 To 15
If IsNumeric(Range("A" & i).Value) = False Then
    Range("A" & i).Font.Color = vbRed
    AnyString = Selection.Offset(0, 0).Value
    MyStr = Right(AnyString, 1)
    If MyStr = (IsNumeric(Range("A" & i).Value) = False) Then
        Range("A" & i).Font.Color = vbGreen
    End If
End If
Next i

Reply

Marsh Posté le 25-02-2005 à 12:48:24    

Il suffit de demander  :D    

Code :
  1. For i = 1 To Range("A1" ).End(xlDown).Row
  2.   If IsNumeric(Range("A" & i).Value) = False Then
  3.      For j = 1 To Len(Range("A" & i).Value)
  4.       If IsNumeric(Left(Right(Range("A" & i).Value, j), 1)) = True Then
  5.         Range("A" & i).Font.Color = vbRed
  6.         Exit For
  7.       End If
  8.      Next j
  9.    If Not Range("A" & i).Font.Color = vbRed Then
  10.      Range("A" & i).Font.Color = vbBlue
  11.    End If
  12.   End If
  13. Next i

Voila même explication que tout a l'heure.  :D  
Sauf que si la valeur n'est pas un nombre, on décompose la chaîne. Si un des caractère est un nombre alors on affecte la couleur rouge.
Si la chaine n'a pas de rouge, elle est bleue (elle ne contient que du texte). Si c'est un nombre, la cellule reste noire.
Par contre, si une des cellule est vide, la boucle s arrête. :o  
Mais bon, voila.


Message édité par knakes le 25-02-2005 à 12:50:33
Reply

Marsh Posté le 25-02-2005 à 13:53:15    

merci c sympa de ta part ca marche nikel

Reply

Marsh Posté le 25-02-2005 à 14:23:42    

Une dernière question, je voudrai remplir la cellule d'une couleur plutot que de changer la couleur des caracteres

Reply

Marsh Posté le 25-02-2005 à 16:50:48    

Suffit de demander.

Code :
  1. Range("A" & i).Interior.Color = vbBlue

Voilà.

Reply

Marsh Posté le 25-02-2005 à 19:09:10    

Merci !!!

Reply

Marsh Posté le 02-03-2005 à 00:45:33    

la fonction Left marche sous VBA ?? Mais alors à quoi sert Mid ??? ( Quel feuilletton passionnant la vie des fonctions !)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed