I would look at a custom lisp get a string and change last character, re the 001, you can do this by taking into account the number in a cond and convert to a string.
Try this the 12 & 13 were not in correct order if I select all in one go. A pick pick works fine.
(defun c:wow ( / )
(setq str (getstring "\nEnter character to look for "))
(setq numasc (ascii str))
(setq num (getint "\nEnter start number "))
(setq ss (ssget '((0 . "*Text"))))
(if (= ss nil)
(alert "No text selected ")
(repeat (setq x (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
(setq str (vlax-get obj 'textstring))
(setq pos (vl-string-position numasc str))
(setq strst (substr str 1 pos))
(setq strend (substr str (+ pos 2)))
(cond
((< num 10)(setq str (strcat strst "00" (rtos num 2 0) strend)))
((< num 100)(setq str (strcat strst "0" (rtos num 2 0) strend)))
((> num 99)(setq str (strcat strst (rtos num 2 0) strend)))
)
(vlax-put obj 'textstring str)
(setq num (1+ num))
)
)
(princ)
)
(c:wow)