Split avec 2 séparateurs

Bonjour,

J'ai un code me permettant de colorier des cellules en fonction de ce que j'entre dans un inputbox. En fait, j'ai une colonne avec dans la cellule A1 "nom-1" et dans la cellule An "nom-n". Si vous avez bien compris mon code, je mets toute ma plage en bleu au départ et ensuite les séries que j'entre dans mon inputbox se mettent en orange. Par exemple si je mets dans l'Inputbox "1/4,7/10,13/16", les cellules A1 à A4 ainsi que de A7 à A10 et de A13 à A16 se mettent en orange et donc A5, A6, A11 et A12 en bleu. Comment pourrais-je faire pour ajouter dans mon split un séparateur "X" pour colorier les cellules correspondantes en vert par ex ?

Ex : "1/4,7/10X12/15" => A1 à A4, A7 à A10 et A12 à A15 en orange, A5 et A6 en bleu et A11 en vert

Code initial :

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,

C'est plus facile avec la méthode InputBox

Édit: j'ai ajouté une gestion d'erreur

à tester,

Sub test2()
On Error Resume Next
Set plg = Application.InputBox(Prompt:= _
         "Tenir la touche < Ctrl > enfoncée" & Chr(10) & " et sélectionner des cellules à l'aide de la souris.", _
         Title:="SÉLECTION", Type:=8)
'gestion d'erreur
If Err.Number <> 0 Then Err.Clear: Exit Sub
serie = Split(plg.Address, ",")
 For s = 0 To UBound(serie)
   MsgBox serie(s)
 Next
End Sub

Je ne suis pas sûr que ça corresponde à mes attentes :/

Rechercher des sujets similaires à "split separateurs"