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
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
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
voici ce message d'erreur
erreur d'excution 1004.png
 

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

Resultat123.png
 

Jacky67

XLDnaute Barbatruc
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

Regarde la pièce jointe 1124834
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.
Capture d’écran 2021-12-15 213945.png


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
245
Réponses
11
Affichages
286
Réponses
4
Affichages
207

Statistiques des forums

Discussions
312 182
Messages
2 086 001
Membres
103 084
dernier inscrit
Hervé30120