Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…