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

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
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
552
Réponses
5
Affichages
235
Réponses
4
Affichages
177
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…