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 SubBonjour,
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 SubJe ne suis pas sûr que ça corresponde à mes attentes :/