Choix entre le if then et le select case

nanoo79 Messages postés 34 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je souhaite faire un code pour mettre une couleur de texte rouge ou noir selon des conditions, mais lorsque j'utilise le if then ou le select case seul la premiere condition est respectée.

Voici mes deux conditions:
Si la valeur de cells (I,10) <-50000 alors le texte de cells (I,10) est rouge
Si la valeur de cells(I,10)<-50000 et la valeur de cells (i,2) commence par total alors le texte de cells(I10) est noir.

Que ce soit en if then ou en select case ca mets bien en rouge mais pas en noir.
Quelqu'un a une idee ?
Merci

7 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,

    if cells(i,10)<-50000 then
    if cells(i,2) like "total*" then
    cells(i,10).colorindex=1
    else
    cells(i,10).colorindex=3
    end if
    end if

    non testé: vérifie la syntaxe de like "total* "
    0
  2. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    Voici comment écrire et normalement ca marche :

    if cells (I,10) <-50000 then 'si la cellule (i,10) < - 50000
    if left(ucase(i,2),5) = "TOTAL" then 'si les 5 premiers caractères (left) mis en majuscule (ucase) = Total alors
    cells(i,10).Font.colorindex = xlautomatic 'texte en noir
    else
    cells(i,10).Font.colorindex = -16776961 'sinon texte en rouge
    end if
    0
  3. nanoo79 Messages postés 34 Statut Membre
     
    Merci Melanie, J'ai une erreur de compilations sur le Ucase 'Nombre d'arguments incorrect ou affectation de proprietes incorrecte.
    0
  4. nanoo79 Messages postés 34 Statut Membre
     
    Merci Michel_m, mais ca ne fonctionne pas du moment que le montant est <-50000 ca me met en rouge il ne tient pas compte du total
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. melanie1324 Messages postés 1561 Statut Membre 156
     
    Re,

    il manque un bout, essaie avec ca :

    if cells (I,10) <-50000 then 'si la cellule (i,10) < - 50000
    if left(ucase(cells(i,2)),5) = "TOTAL" then 'si les 5 premiers caractères (left) mis en majuscule (ucase) = Total alors
    cells(i,10).Font.colorindex = xlautomatic 'texte en noir
    else
    cells(i,10).Font.colorindex = -16776961 'sinon texte en rouge
    end if
    0
  7. nanoo79 Messages postés 34 Statut Membre
     
    Nouvelle erreur : Erreur d'execution '9' L'indice n'appartient pas a la selection
    et le debogueur pointe sur cette ligne de code
    Cells(I, 10).Font.ColorIndex = -16776961 'sinon texte en rouge
    0
    1. melanie1324 Messages postés 1561 Statut Membre 156
       
      remplace

      Cells(I, 10).Font.ColorIndex = -16776961 'sinon texte en rouge

      par

      Cells(I, 10).Font.Color = -16776961 'sinon texte en rouge
      0
  8. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,

    Tu avais marqué:
    ..."la valeur de cells (i,2) commence par total
    alors "...


    Il faut que l'orthographe soit la m^me : "Total" est différent de "total"
    donc, si tu as Total ou total , il y a une petite astuce (cf procédure)

    par contre j'avais oublié "font" dans la mise en couleur

    If Cells(i, 10) < -50000 Then
    If Cells(i, 2) Like "[Tt]otal*" Then
    Cells(i, 10).Font.ColorIndex = 1
    Else
    Cells(i, 10).Font.ColorIndex = 3
    End If
    End If
    0