Supprimer des charactères mais pas tout

Bonjour

Voila mon souci

Je souhaite récupérer juste les 5 premier chiffre pour avoir en résultat final "8:J P[5 : SRE_24682] 100% FINE ; "

8:J P[5 : SRE24682] 100% FINE ;
8:J P[5 : SRE_24682 OR ] 100% FINE ;

Avec les 2 cas si dessus ma macro fonctionne mais pas avec celle d'en dessous

8:J P[5 : p24682p_3t_pol_p6im0] 100% FINE ;

traj(Ligne_Origine) = au cas présent si dessus

FiltrePSE = renseigne soit SRE ou P

Dim traj() As String
Dim FiltrePSE, FiltreGJ As String
Dim Ligne_Origine As Long
Dim AvantNumero, ApresNumero, Result, NumeroSoudure, NumeroPtsSt As String
Dim Text1, Text2 As String
Dim Rech1, Rech2, Rech3 As Integer  

         Rech1 = InStr(1, traj(Ligne_Origine), "[")
        Rech2 = InStr(1, traj(Ligne_Origine), "]")
        Text1 = Mid(traj(Ligne_Origine), Rech1 + 1, 99)
        Rech3 = InStr(1, traj(Ligne_Origine), FiltrePSE)
        Text2 = Mid(traj(Ligne_Origine), 1, Rech3)

        NumeroSoudure = Mid(traj(Ligne_Origine), InStr(Rech3, traj(Ligne_Origine), FiltrePSE) + 4, InStr(InStr(1, traj(Ligne_Origine), FiltrePSE), traj(Ligne_Origine), "]") - (InStr(Rech3, traj(Ligne_Origine), FiltrePSE) + 4))
        AvantNumero = Replace(traj(Ligne_Origine), Text1, "")
        NumeroPtsSt = Val(Text1)
        ApresNumero = Replace(Mid(traj(Ligne_Origine), Rech2, 99), ";", "")

        NumeroSoudure = Val(NumeroSoudure)
        NumeroSoudure = Str(NumeroSoudure)

        Result = AvantNumero + NumeroPtsSt + ":SRE_" + NumeroSoudure + ApresNumero

Merci Beaucoup si vous avez une solution que peux importe les premier caractère que je récupère juste les 5 premiers chiffre

Voir si c'est possible aussi avec plein de cas particulier

8:J P[5 : 24682] 100% FINE ; Ici juste récupérer 24682
8:J P[5 : 124682] 100% FINE ; Ici réduire à 5 chiffres

Et si possible sans utiliser FiltrePSE

je viens de rencontrer une autre souci

Si j'ai 8:J P[5 : SRE24682] 100% FINE ; je récupère bien 8:J P[5 : SRE_24682] 100% FINE ;
Si j'ai 8:J P[5 : sre24682] 100% FINE ; je récupère 8:J P[5 : SRE_ 4682] 100% FINE ;

j'ai du activer la casse sur les instr

Bonjour,

Je ne comprends pas vraiment avec vos exemple, le but est de rajouter un tiret avant les chiffres dans les crochets ?

le but c'est de récupérer la première chaine numérique

Ici 24682 peut importe ce qu'il y a avant ou après

Pour ensuite reformer la ligne avec SRE_ devant

Je veux pouvoir récuperer 24682 peut importe ce qu'il y a avant ou après

8:J P[5 : SRE_24682] 100% FINE ;

8:J P[5 : SRE24682] 100% FINE ;
8:J P[5 : SRE_24682 OR ] 100% FINE ;
8:J P[5 : sre_24682] 100% FINE ;
8:J P[5 :p24682-855] 100% FINE ;

Ca marche ça ? Par power query

7florian.xlsx (17.88 Ko)

oui c'est bien ça

mais par VBA c'est possible ?

car j'en ai besoin dans ma variable "NumeroSoudure"

Je passe la main si c'est en VBA, je laisse qqun d'autre répondre. Si jamais vous changez d'avis faites moi signe.

Power query est un outil formidable et il remplace petit à petit le vba, n'hésitez pas à passer le cap.

J'ai eu du mal à me mettre sur le VBA :) donc je vais attendre un peu avant de changer :D

Merci beaucoup

Power query est bien plus simple d'apprentissage et d'utilisation. et il n'a rien à voir avec du "codage". Vous gagnerez en temps et en productivité.

C'est une fonctionnalité excel comme une autre. Le problème du VBA quand on s'y met c'est qu'on à tendance à réinventer la roue en permanence.

Cependant je vous souhaites bon courage dans votre projet.

Cdt

J'ai trouvé une solution peut être pas la plus simple :D

        'Recherche numero du pts de travail

        Nombre_Position = Len(traj(Ligne_Origine))
        If Partie_Coordonnee = 0 Then
        Position = InStr(InStr(1, traj(Ligne_Origine), "["), traj(Ligne_Origine), ":")
        Else
        Position = InStr(1, traj(Ligne_Origine), ":")
        End If
        Memoire_Fin = 0
        Memoire_Deb = 0

        Do
            If Mid(traj(Ligne_Origine), Position, 1) >= 0 And Mid(traj(Ligne_Origine), Position, 1) <= 9 Then
                Memoire_Deb = Position
                Do
                    Position = Position + 1
                    If (Mid(traj(Ligne_Origine), Position, 1) >= 0 And Mid(traj(Ligne_Origine), Position, 1) <= 9) Then
                    Else
                        Memoire_Fin = Position
                    End If
                    If Memoire_Fin <> 0 Then
                        GoTo lastlineG
                    End If
                Loop While Memoire_Deb <= Nombre_Position
            End If
            Position = Position + 1
        Loop While Memoire_Deb <= Nombre_Position

lastlineG:
    NumeroSoudure = Mid(traj(Ligne_Origine), Memoire_Deb, Memoire_Fin - Memoire_Deb)
Rechercher des sujets similaires à "supprimer characteres pas tout"