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

XL 2013 extraction suite en fonction d'un intervalle

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bibbip35

XLDnaute Occasionnel
Bonjour à tous

Je chercherais a faire une extraction d'un intervalle d'une suite Alphanumérique
Objectif
R1-R6 serait R1;R2;R3;R4;R5;R6
A12-A15 serait A12;A13;A14;A15
etc..

Est-il possible de créer une tel fonction avec Excel ? Car malgré mes recherches sur le Net , je n'ai rien trouvé

Merci à tous pour votre aide et joyeux Noel a tous

Bibbip
 
Bonjour bibbip35, mapomme,

Ici la fonction utilise les expressions régulières :
Code:
Function Suite$(t$)
Dim o As Object, a As Object, x$, s$, i%
Set o = CreateObject("vbscript.regexp")
o.Global = True
o.Pattern = "\d+"
Set a = o.Execute(t)
If a.Count <> 2 Then Exit Function
x = Left(t, InStr(t, a(0)) - 1)
s = Mid(t, Len(x) + Len(a(0)) + 1, 1) 'séparateur
If LCase(t) <> LCase(x & a(0) & s & x & a(1)) Then Exit Function
If Val(a(0)) = Val(a(1)) Then Suite = x & Val(a(0)): Exit Function
For i = a(0) To a(1) Step IIf(Val(a(0)) < Val(a(1)), 1, -1)
  Suite = Suite & s & x & i
Next
Suite = Mid(Suite, 2)
End Function
A+
 
Re,

La création de l'objet regexp prend du temps, pour accélérer utilisez :
Code:
Dim o As Object 'mémorisation pour gagner du temps sur la création

Function Suite$(t$)
Dim a As Object, x$, s$, i%
If o Is Nothing Then
  Set o = CreateObject("vbscript.regexp")
  o.Global = True
  o.Pattern = "\d+"
End If
Set a = o.Execute(t)
If a.Count <> 2 Then Exit Function
x = Left(t, InStr(t, a(0)) - 1)
s = Mid(t, Len(x) + Len(a(0)) + 1, 1) 'séparateur
If LCase(t) <> LCase(x & a(0) & s & x & a(1)) Then Exit Function
If Val(a(0)) = Val(a(1)) Then Suite = x & Val(a(0)): Exit Function
For i = a(0) To a(1) Step IIf(Val(a(0)) < Val(a(1)), 1, -1)
  Suite = Suite & s & x & i
Next
Suite = Mid(Suite, 2)
End Function
Fichier joint.

Pour tester j'ai copié la plage A1:B5 jusqu'à la ligne 10 000.

Sur Win 10 - Excel 2013, avec la fonction du post #3 la durée des calculs est de 15,7 secondes.

Avec cette dernière fonction elle est de 0,45 seconde.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…