1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164
| Sub test()
Dim posX, posSlash, posFin
Dim rng As Range
Dim MaChaine As String, i As Long
Dim Insert As String
Set rng = Sheets(1).Range("A1")
If Not rng.Value = "name-1" Then
If Right(rng.Value, 4) Like "-/-/" Then
texte = ""
chaine = ""
indice = 0
nom = Left(rng, InStr(1, rng, "-") - 1)
curseur = Len(nom) + 1
Do
If Not Mid(rng, curseur) Like "*#*" Then Exit Do 'vérifie qu'il reste des nombres à mettre
'calcul de la position de fin de la chaine à traiter
posX = InStr(curseur, rng, "-X-")
posSlash = InStr(curseur, rng, "-/-")
If posX > posSlash Or posX = 0 Then
posFin = posSlash
Else
posFin = posX
End If
If posFin = 0 Then Exit Do
texte = texte & IIf(chaine = "-/", "-/", "")
'changement de la variable chaine
If posFin = posSlash Then
chaine = "-/"
Else
chaine = "-X"
End If
nombredep = ""
nombrefin = ""
carpred = ""
'parcours de tous les caractères entre le curseur et la fin
For h = curseur To posFin - 1
car = Mid(rng, h, 1)
If IsNumeric(car) Then
If IsNumeric(carpred) Then
If nombrefin <> "" Then
nombrefin = nombrefin & car
Else
nombredep = nombredep & car
End If
Else
If nombredep <> "" Then
nombrefin = car
Else
nombredep = car
End If
End If
End If
carpred = car
Next h
'enregistrement des nombres dans la variable texte
If indice = 0 Then
texte = "-" & IIf(nombrefin <> "", nombrefin, nombredep)
Else
texte = texte & IIf(nombredep <> "", "-" & nombredep, "") & IIf(nombrefin <> "", "-" & nombrefin, "") _
End If
texte = texte & IIf(chaine = "-X", "-X", "")
'incrémentations
curseur = posFin + Len(chaine)
indice = indice + 1
Loop
rng = nom & texte
ElseIf Not Right(rng.Value, 4) Like "-/-/" Then
rng.Value = rng.Value & Left(MaChaine, 2) & "-/-/"
texte = ""
chaine = ""
indice = 0
nom = Left(rng, InStr(1, rng, "-") - 1)
curseur = Len(nom) + 1
Do
If Not Mid(rng, curseur) Like "*#*" Then Exit Do 'vérifie qu'il reste des nombres à mettre
'calcul de la position de fin de la chaine à traiter
posX = InStr(curseur, rng, "-X-")
posSlash = InStr(curseur, rng, "-/-")
If posX > posSlash Or posX = 0 Then
posFin = posSlash
Else
posFin = posX
End If
If posFin = 0 Then Exit Do
texte = texte & IIf(chaine = "-/", "-/", "")
'changement de la variable chaine
If posFin = posSlash Then
chaine = "-/"
Else
chaine = "-X"
End If
nombredep = ""
nombrefin = ""
carpred = ""
'parcours de tous les caractères entre le curseur et la fin
For h = curseur To posFin - 1
car = Mid(rng, h, 1)
If IsNumeric(car) Then
If IsNumeric(carpred) Then
If nombrefin <> "" Then
nombrefin = nombrefin & car
Else
nombredep = nombredep & car
End If
Else
If nombredep <> "" Then
nombrefin = car
Else
nombredep = car
End If
End If
End If
carpred = car
Next h
'enregistrement des nombres dans la variable texte
If indice = 0 Then
texte = "-" & IIf(nombrefin <> "", nombrefin, nombredep)
Else
texte = texte & IIf(nombredep <> "", "-" & nombredep, "") & IIf(nombrefin <> "", "-" & nombrefin, "") _
End If
texte = texte & IIf(chaine = "-X", "-X", "")
'incrémentations
curseur = posFin + Len(chaine)
indice = indice + 1
Loop
rng = nom & texte
End If
Else
Exit Sub
End If
End Sub |
Partager