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
Bonjour,
Sans VBA ???
Code:
=TEXTE(A2;"0000000")&"_"&GAUCHE(B2;TROUVE("-";B2)-1)
 

Jacky67

XLDnaute Barbatruc
Merci Mr Jacky pour votre réponse
svp je souhaite en vba car c'est une partie d'un autre code
Re..
En vba cela pourrait ressembler à ceci
VB:
Sub extraire1()
    With Feuil1
        With .Range("c2.c" & .Cells(.Rows.Count, "A").End(xlUp).Row)
            .Formula = "=TEXT(A2,""0000000"")&""_""&LEFT(B2,FIND(""-"",B2)-1)"
            .Value = .Value
        End With
    End With
End Sub
 

Pièces jointes

  • Extraire.xlsm
    16.7 KB · Affichages: 11
Dernière édition:

iliess

XLDnaute Occasionnel
Non ca marche pas même si j'ai remplacer With Feuil1 par With Sheets("Feuil1")
Monsieur Svp
il y a une condition if dans mon code

j'ai trouver cette fonction mais c'est en Excel est ressourdre que la premier condition

VB:
=SI((TROUVE("-C_";B2)>1);STXT(B2;TROUVE("-C_";B2)+3;7)&"_"&GAUCHE(B2;TROUVE("-";B2)-1);TEXTE(A2;"0000000")&"_"&GAUCHE(B2;TROUVE("-";B2)-1))
je pense que les cellule #Valeur a cause de cette fonction TROUVE("-C_";B2)>1

 

Jacky67

XLDnaute Barbatruc
Re..
Je répète
Est-ce que le classeur que j'ai mis en PJ fonctionne ???
Mettre le classeur avec cette erreur en PJ
 
Dernière édition:

iliess

XLDnaute Occasionnel
j'ai rien compris j'ai télécharge le fichier plusieurs une fois et ca marche pas voici capture d'écran, j'ai rien changer.

c'est pas grave j'ai trouver cette solution
=SI(ESTNUM(TROUVE("-C_";B2));STXT(B2;TROUVE("-C_";B2)+3;7)&"_"&GAUCHE(B2;TROUVE("-";B2)-1);TEXTE(A2;"0000000")&"_"&GAUCHE(B2;TROUVE("-";B2)-1))
 

Pièces jointes

  • Extraire (2) (1).xlsm
    19.1 KB · Affichages: 5

mapomme

XLDnaute Barbatruc
Supporter XLD
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
 
Dernière édition:

Discussions similaires

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