Incrémenter une chaine alphanumérique

chaelie2015

XLDnaute Accro
Bonsoir FORUM
je cherche une formule qui fait incrémentation comme suite ( chercher le premier ou le dernier nombre) :
dans la cellule A j'ai une chaîne de caractère exemple (15A-3 )
dans la cellule B J'ai une liste ( oui ou non)
dans la cellule C J'ai une liste ( oui ou non)
Dans D je souhaite incrémenter le premier NOMBRE de la cellule A si B=oui ou incrémenter le dernier chiffre si C=oui.

Exemple1:
si A=15A-3 et B=oui
alors j'aurais dans D =16A-3 ( incrémenter le nombre 15)
et si dans C=oui alors j'aurai 15A-4 ( incrémenter le nombre 4)

Exemple 2 :
si A=19-2 et B=oui
alors j'aurais dans D =20-3 ( incrémenter le nombre 19)
et si dans C=oui alors j'aurai 19-3 ( incrémenter le nombre 2)
Salutations
 
Dernière édition:

haonv

XLDnaute Occasionnel
Bonjour,

Une première approche sur le fichier joint.
Dommage que tu n'ais pas précisé tous les formats de chaines de caractères possibles.
Toujours le tiret"-" ?
Toujours que des caractères numériques après celui-ci ?
Pas toujours une lettre dans la premiere partie ?

Cordialement
Edit: un 2° fichier avec une solution pour le cas de lettres possibles dans la 2° partie
 

Pièces jointes

  • pour chaelie2015ED.xlsx
    10.1 KB · Affichages: 13
  • chaelie2015ED.xlsx
    11.7 KB · Affichages: 3
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour chaelie2015, haonv, le forum,

Voyez le fichier joint et cette fonction VBA :
VB:
Function Incremente$(t$, incr1$, incr2$)
Dim i%, s, n%
incr1 = LCase(incr1): incr2 = LCase(incr2) 'minuscules
For i = Len(t) To 2 Step -1
    If IsNumeric(Mid(t, i, 1)) And Not IsNumeric(Mid(t, i - 1, 1)) Or _
        Not IsNumeric(Mid(t, i, 1)) And IsNumeric(Mid(t, i - 1, 1)) Then _
            t = Left(t, i - 1) & Chr(1) & Mid(t, i)
Next
s = Split(t, Chr(1))
For i = 0 To UBound(s)
    If IsNumeric(s(i)) And n < 2 Then s(i) = s(i) - (IIf(n, incr2, incr1) = "oui"): n = n + 1
    Incremente = Incremente & s(i)
Next
End Function
Le code doit être placé impérativement dans un module standard.

A+
 

Pièces jointes

  • Incrémente(1).xlsm
    17.2 KB · Affichages: 11

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa