Retrouver la suite d'une chaine de caractères
Bonjour le forum,
J'utilise un Userform pour faire un search and Replace d'un nom de fichier.
Je rentre le nom du fichier dans un Numéro_Change()
Code :Sélectionner tout - Visualiser dans une fenêtre à part12 ActiveWorkbook.SaveAs FileName:= _
Répertoire + "\" + Numéro + "_CONTENU.xls", FileFormat _ Le numéro est alors modifier.
J'aimerai effectuer une modification: Mon numéro est une chaîne à 16 caractères.
Quand je rentre les 9 premiers, excel me récupère les 7 suivants.
Je pensais à diviser le nom de mon fichier en 2: Numéro => Numéro + Suite.
Je connais la fonction Right() pour extraire les caractères 'une chaîne déjà connues. Est-ce possible de faire l'inverse ?
Je mets en PJ le code de mon Userform.
Merci à vous et bonne journée !
Bonjour,
Utilises la fonction 'Mid' avec cette syntaxe:
Application.WorksheetFunction.Mid(numero,1,9)
Application.WorksheetFunction.Mid(numero,7,9)'Mid' correpond à le fonction de feuille de calcul 'STXT'. Voir l(aide de cette fonction)
Cdlt
Bonjour jean-Eric,
Désolé, je n'ai pas compris ce que tu as voulu dire:
Jean-Eric a écrit :@ supprimer
=> Pb d'actualisation de la page, désolé j'ai mal mis les balises, un bout du code:
Set fs = Application.FileSearch
With fs
.LookIn = Répertoire 'Cherche le répertoire
.FileName = Numéro + "_CONTENU.xls" 'Cherche le numéro rentré dans le Userform
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
Message.Caption = "FICHIER EXISTANT"
Else
Workbooks.Open FileName:= _
Répertoire + "\A_copier_CONTENU.xls", UpdateLinks:=0 'Fichier tampon
Range("B1").Select
Selection.Value = Numéro 'Sélectionne le numéro puis le remplace
ActiveWorkbook.SaveAs FileName:= _
Répertoire + "\" + Numéro + Suite + "_CONTENU.xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
ActiveWorkbook.Close
End If
End WithEn rentrant 'Numéro' dans mon Userform je mets les 9 premiers caractères.
Le soucis c'est que 'Suite' n'est pas inscrit sur mon classeur excel, et si j'ai bien compris l'aide sur Mid je retrouve le nombre de caractères spécifiés à partir de la position spécifiée.
Merci
Re,
J'ai pensé un court instant me tromper de sujet, alors j'ai supprimé, pour répondre à nouveau
Cdlt
Re Jean-Eric,
J'ai vu ton deuxième message après avoir répondu à ce que tu m'as proposé, je n'avais pas actualisé la page my bad :/.
Du coup pour retrouver un fil dans l'ordre je copie mon précédent post:
Pb d'actualisation de la page, désolé j'ai mal mis les balises, un bout du code:
Tout sélectionner
Set fs = Application.FileSearch
With fs
.LookIn = Répertoire 'Cherche le répertoire
.FileName = Numéro + "_CONTENU.xls" 'Cherche le numéro rentré dans le Userform
If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
Message.Caption = "FICHIER EXISTANT"
Else
Workbooks.Open FileName:= _
Répertoire + "\A_copier_CONTENU.xls", UpdateLinks:=0 'Fichier tampon
Range("B1").Select
Selection.Value = Numéro 'Sélectionne le numéro puis le remplace
ActiveWorkbook.SaveAs FileName:= _
Répertoire + "\" + Numéro + Suite + "_CONTENU.xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
ActiveWorkbook.Close
End If
End WithEn rentrant 'Numéro' dans mon Userform je mets les 9 premiers caractères.
Le soucis c'est que 'Suite' n'est pas inscrit sur mon classeur excel, et si j'ai bien compris l'aide sur Mid je retrouve le nombre de caractères spécifiés à partir de la position spécifiée.
Encore merci pour ton aide
Re,
A tester si j'ai compris la question.
Cdlt
Option Explicit
Public x As String
Private Sub CmdOk_Click()
Dim L
10 Message.Caption = "Import des données de la FI"
20 Numéro_copier = "A_copier"
30 Range("A1").Select
40 Selection.End(xlDown).Select
50 numéro = Numéro_TA.Text 'Pour modifier le nom aller dans les paramètres
60 x = Application.WorksheetFunction.Mid(numéro, 1, 9)
70 x = x & " " & Application.WorksheetFunction.Mid(numéro, 10, 7)
80 Répertoire = "chemin" 'Adapter le chemin
90 ChDir Répertoire
100 Set fs = Application.FileSearch
110 With fs
120 .LookIn = Répertoire 'Cherche le répertoire
130 .Filename = numéro + "_CONTENU.xls" 'Cherche le numéro rentré dans le Userform
140 If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
150 Message.Caption = "FICHIER EXISTANT"
160 Else
170 Workbooks.Open Filename:= _
Répertoire + "\A_copier_CONTENU.xls", UpdateLinks:=0 'Fichier tampon
180 Range("B1").Select
190 Selection.Value = numéro 'Sélectionne le numéro puis le remplace
200 ActiveWorkbook.SaveAs Filename:= _
Répertoire + "\" + x + "_CONTENU.xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
210 ActiveWorkbook.Close
220 End If
230 End With
240 Message.Caption = "TRAITEMENT EN COURS"
250 L = Selection.Row 'Selection de la ligne
260 Range("A" & L).Select 'Nom de la FI en colonne A
270 Numéro_copier = Selection.Value
280 Selection.AutoFill Destination:=Range("A" & L & ":A" & L + 1), Type:=xlFillDefault
290 Range("A" & L & ":A" & L + 1).Select
300 Rows(L & ":" & L).Select
310 Selection.Copy
320 L = L + 1 'Copie des formules
330 Rows(L & ":" & L).Select
340 ActiveSheet.Paste
350 Application.CutCopyMode = False
360 Selection.Replace What:=Numéro_copier, Replacement:=numéro, LookAt:= _
xlPart, SearchOrder:=xlByRows, MatchCase:=False
370 Range("a" & L).Select
380 ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
Répertoire + "\" + numéro + "_CONTENU.xls" 'Lien vers le fichier excel
390 Message.Caption = "ACTION TERMINEE"
End SubRe,
Super, c'est bien ce qu'il me faut !
Merci beaucoup pour ton aide
Bonne après-midi et @+