Colorier cellule avec inputbox

Bonjour à tous,

J'ai un code me permettant de colorier des cellules en fonction de ce que je mets dans mon inputbox. Je m'explique.

En fait j'ai une colonne qui contient des noms (nom-1 dans la première cellule jusqu'à nom-n dans la n-ième cellule).

Mon code permet de colorier des plages de cellules correspondant à mon code.

Par exemple, si je mets dans mon inputbox "/5,7/15", les cellules de nom-1 jusqu'à nom-5 et de nom-7 à la dernière s'affichent en orange. Par contre la cellule nom-6 s'affiche en bleu.

En fait dès que j'ai une virgule, la cellule ou la plage correspondante s'affiche en bleu.

Autre exemple je mets dans mon inputbox "/1,3/5,8/15" :

nom-1 s'affiche en orange

nom-2 en bleu

nom-3 à nom-5 en orange

nom-6 et nom-7 en bleu

nom-8 à nom-15 en orange

Ce que fais le code c'est qu'il met tout en bleu au départ et les plages correspondantes en orange par la suite.

Cependant, ce j'aimerais faire, c'est plutôt l'inverse. En gros, que toute la plage se colorie en orange avant et que ça soit

que la plage se situant dans la virgule qui se mette en bleu avec la boucle. Cependant je vois le problème mais je ne sais pas trop

comment m'y prendre pour le coder...

Sub test()
    Dim x$, c1 As Range, c2 As Range, nums As Variant, serie As Variant
    x = InputBox("entrez un/deux numeros")
    If x <> vbNullString Then     ' si on annule pas et que la chaine tapée correspond a un chiffre + "/" + un chiffre
        With Sheets(1).Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
            'on met tout en bleu au depart
            .Parent.Range(.Cells(1, 1), .Cells(.Cells.Count)).Interior.Color = RGB(0, 150, 255)
            serie = Split(x, ",")
            For s = 0 To UBound(serie)
                If Not serie(s) Like "*/*" Then serie(s) = serie(s) & "/" & serie(s)
                If IsNumeric(Replace(serie(s), "/", "")) And serie(s) Like "*#/#*" Then
                    nums = Split(serie(s), "/")
                    'on cherche le 1°chiffre nom-+ nums(0)
                    Set c1 = .Find("nom-" & nums(0), lookat:=xlWhole)
                    'on cherche le 2d chiffre nom-+ nums(1)
                    Set c2 = .Find("nom-" & nums(1), lookat:=xlWhole)
                    critere = Not c1 Is Nothing And Not c2 Is Nothing
                    'si c1 n'est pas rien
                    If critere Then .Parent.Range(c1, c2).Interior.Color = RGB(255, 200, 50) Else mess = mess & "la plage contenant  ""nom-" & nums(0) & """ & ""nom-" & nums(1) & """ n'existe pas !!" & vbCrLf
                Else
                    mess = " la serie " & serie(s) & " n'est pas valide" & vbCrLf
                End If
                Next
                If mess <> "" Then MsgBox mess
            End With
        Else
            MsgBox "vous avez annulé"
        End If
    End Sub

bonjour

les couleurs qui ne dépendent pas d'un choix humain se mettent par MFC, pas par code, ni par le menu Accueil "couleur" ni par clic droit "format de cellule"

de manière générale, ne pas utiliser les userforms, qui sont source de problèmes et de perte de temps (en phase de mise au point, et ensuite. Tu verras )

mais ce n'est que mon avis.

amitiés

Bonjour,

Merci pour ta réponse et désolé pour ma réponse tardive.

Du coup je garde mon code. Par contre j'aimerai l'utiliser pour effectuer autre chose mais à mon avis la MFC sera

plus judicieux.

Merci pour tes conseils

Rechercher des sujets similaires à "colorier inputbox"