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

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 !

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

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
Bonsoir à tous,

Essayez :
VB:
Sub extraire()
Dim Arr
   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
Hello mapomme
Pourrais-tu stp tester mon classeur #4 sur l'erreur 1004
 
Dernière édition:
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:
- 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

Discussions similaires

Réponses
12
Affichages
480
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
246
Retour