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

XL 2019 Extraire avec condition un Numéro dans une chêne de caractère VBA Excel

iliess

XLDnaute Occasionnel
Bonjour
Je souhaite Extraire le numéro qui se trouve au début ou juste après "-C_"

J'ai utiliser le code suivant
VB:
Sub extraire()
Dim Arr
Arr = Range("A2:C7")
For i = LBound(Arr) To UBound(Arr)
  
    If Arr(i, 2) Like "*-C_*" Then
          Range("C" & i).Value = Left(Arr(i, 2), Find("-", Arr(i, 2) - 1)) & "_" & Split(Arr(i, 2), "_")(1)
    Else
          Range("C" & i).Value = Left(Arr(i, 2), Find("-", Arr(i, 2) - 1)) & "_" & Arr(i, 1)
    End If
Next i
End Sub
voici un fichier Exemple
Merci
 

Pièces jointes

  • Extraire.xlsm
    15.6 KB · Affichages: 16
Solution
Bonsoir à tous,

Essayez :
VB:
Sub extraire()
Dim Arr, x
   Arr = Range("A2:C7").Formula
   For i = LBound(Arr) To UBound(Arr)
      If Arr(i, 2) Like "*-C_*" Then
         x = Split(Replace(Arr(i, 2), "-", "_"), "_")
         Arr(i, 3) = x(2) & "_" & x(0)
      Else
         Arr(i, 3) = Format(Arr(i, 1), "0000000") & "_" & Split(Arr(i, 2), "-")(0)
      End If
   Next i
   Range("A2:C7") = Arr
End Sub

Jacky67

XLDnaute Barbatruc
Hello mapomme
Pourrais-tu stp tester mon classeur #4 sur l'erreur 1004
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Svp j'ai pas compris le x
Dans les textes à traiter (cas où le texte contient "-C_") le texte à retirer commence avec un "souligné _" mais se termine soit par un "souligné _" soit par un "tiret -":

15447-C_0004717_ Achat Materiel Construction_31/2020
28-C_000857-Achat Materiel Construction_31/2020

Pour uniformiser tout ça, on remplace les tirets par des soulignés d'où:
x = Split(Replace(Arr(i, 2), "-", "_"), "_")

Et on obtient donc :
15447_C_0004717_ Achat Materiel Construction_31/2020
28_C_000857_Achat Materiel Construction_31/2020

On voit que le texte à extraire se situe maintenant toujours entre le 2ème et 3ème "souligné".

Le Split( Replace(Arr(i, 2), "-", "_") , "_") va renvoyer un tableau en prenant le souligné comme séparateur. L'élément qui nous intéresse sera toujours le troisième élément du tableau. Comme Split() renvoie un tableau dont l'indice commence à zéro, le 3ème élément qui nous intéresse aura pour indice 2 (et non 3) soit x(2).
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
250
Réponses
11
Affichages
294
Réponses
4
Affichages
213
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…