Incrémenter de 1 les valeurs (y compris alphanumériques)

Bonjour le Forum !

J’utilise couramment une macro qui incrémente de +1 toutes les valeurs d’une plage, en n’agissant pas sur les cellules filtrées ou masquées.

Sub Edition_Collage_Spécial_Ajouter_1_à_sélection()
    For Each C In Selection
        If Rows(C.Row).EntireRow.Hidden = False Then
            C.Value = C.Value + 1
        End If
    Next C
End Sub

Je voudrais modifier cette macro pour qu’elle agisse aussi sur les cellules avec un contenu alphanumérique, mais je ne sais pas comment faire…

Voilà des exemples de avant / après exécution de la macro :

1 → 2

Option n°1 → Option n°2

Version n°1bis → Version n°2bis

Pour les cellules contenant plusieurs séries de nombres, genre « 18 avril 1994 », la macro pourrait ne rien faire, ou changer seulement le 1er nombre, au plus simple en termes de programmation.

Quelqu’un pourrait-il m’aider ?!

Merci !

bonsoir,

une proposition

Sub Edition_Collage_Spécial_Ajouter_1_à_sélection()
    For Each C In Selection
        If Rows(C.Row).EntireRow.Hidden = False Then
            C.Value =add1tocell(c.value)
        End If
    Next C
End Sub

Function add1tocell(r)
    If Len(r) = 0 Then add1tocell = r: Exit Function
    If IsNumeric(r) Then add1tocell = r + 1: Exit Function
    s = ""
    Do
        i = i + 1
        If i > Len(r) Then add1tocell = r: Exit Function
    Loop Until IsNumeric(Mid(r, i, 1))
    While IsNumeric(Mid(r, i, 1)) And i <= Len(r)
        s = s & Mid(r, i, 1)
        i = i + 1
    Wend
    add1tocell = Replace(r, s, Val(s) + 1, Count:=1)
End Function

Ça fonctionne parfaitement !!!

Merci h2so4 (sous acide ?)

Je reviens sur ce sujet parce qu'il y a un petit bug inattendu :

Quand je me sers de la macro sur une date (càd un numéro de série mis au format date, par exemple "jjj jj/mm"), pour l'incrémenter d'un jour, le résultat n'est pas le numéro de série correspondant à la date augmenté de +1, mais le texte correspondant (ex : "16/12/2014").

Quelqu'un saurait-il quoi faire pour y remédier ?

Merci !!!

bonsoir,

une correction

Function add1tocell(r)
    If Len(r) = 0 Then add1tocell = r: Exit Function
    If IsNumeric(r) Or IsDate(r) Then add1tocell = r + 1: Exit Function
    s = ""
    Do
        i = i + 1
        If i > Len(r) Then add1tocell = r: Exit Function
    Loop Until IsNumeric(Mid(r, i, 1))
    While IsNumeric(Mid(r, i, 1)) And i <= Len(r)
        s = s & Mid(r, i, 1)
        i = i + 1
    Wend
    add1tocell = Replace(r, s, Val(s) + 1, Count:=1)
End Function

C'est réparé !!!!

Merci beaucoup.

Rechercher des sujets similaires à "incrementer valeurs compris alphanumeriques"