Fonction MID VBA

Bonjour à tous,

Dernière étape pour que ma macro soit entièrement finalisée, j'aimerai récupérer par exemple dans cette chaine de caractère:

ORG_T1OPER_A_AT_2015 seuleument le AT. Je sais qu'il faut utiliser la fonction MID ou même encore la fonction InStr.

Mais je n'arrive pas à l'appliquer dans mon code vba.

Si ma macro ne trouve pas le fichier (ORG_T1OPER_A_AT_2015.xlsx) alors il me crée dans mon classeur une feuille avec le nom "ORG_T1OPER_A_AT" or j'aimerai que la feuille porte seuleument comme nom AT.

Quelqu'un aurait-il une solution ?

Quelqu'un serait-il comment faire pour que Sheets("Database old data").Range("N"& i) soit Sheets("Database old data").Range("M"& i). Cette solution pourrait me débloquer ?

Merci d'avance.

Cordialement,

Marion

Sub test()
Dim wkA As Workbook, wkB As Workbook
Dim chemin As String, fichier As String, i As Integer, strChaine As String, strChaine2 As String
strChaine = Sheets("Database old data").Range("N" & i).Value
strChaine2 = Mid(strChaine, 14, 12)
'classeur A qui contient la macro
Set wkA = ThisWorkbook
With wkA.Sheets(1) 'les noms des classeurs à ouvrir se trouvent dans la feuille 1 en colonne N
'chemin ou se trouve le fichier B

chemin = "U:\Organic farming\Data\2_Validated\ORG\2015\"

'nom du fichier B
'fichier = "ORG_T1OPER_A_AT_2015.xlsx"

'ouvre le fichier B
For i = 1 To Sheets("Database old data").Range("N65536").End(xlUp).Row
If Dir(chemin & Sheets("Database old data").Range("N" & i) & ".xlsx") = "" Then
 Set shtoto = Sheets.Add(After:=Sheets(Sheets.Count))

 shtoto.Name = strChaine2

 Else

 Workbooks.Open chemin & Sheets("Database old data").Range("N" & i) & ".xlsx"
'met en variable le classeur B
Set wkB = ActiveWorkbook

'copie la feuille "DATA ENTRY" du classeur A après la feuille "Data new data" l dans le classeur B
wkB.Sheets("DATA ENTRY").Copy After:=wkA.Sheets("Data")
Set wsA = ActiveSheet
wsA.Name = wsA.Range("B2") 'référence ???

'MsgBox ("Les feuilles sont maintenant copiées") 'message pour dire que la feuille est copiée.

wkB.Close True 'ferme et enregistre le classeur B
End If
Next i
End With
'MsgBox ("Les feuilles sont maintenant copiées") 'message pour dire que la feuille est copiée.
End Sub

bonjour,

essaie ceci

strChaine2 = Mid(strChaine, 14, 2)
h2so4 a écrit :

bonjour,

essaie ceci

strChaine2 = Mid(strChaine, 14, 2)

Bonjour,

Ou suis-je censé essayer ça ?

Merci,

Marion


marions1857 a écrit :
h2so4 a écrit :

bonjour,

essaie ceci

strChaine2 = Mid(strChaine, 14, 2)

Bonjour,

Non je n'ai rien dit, je vais essayer !

Merci,

Marion




marions1857 a écrit :
h2so4 a écrit :

bonjour,

essaie ceci

strChaine2 = Mid(strChaine, 14, 2)

Bonjour,

Non je n'ai rien dit, je vais essayer ! J'ai essayé mais ça ne veut pas fonctionner des la ligne strChaine = Sheets("Database old data").Range("N & i).Value parce que je pense que ce n'est pas égale à un String

Merci,

Marion

[/quote]

Bonjour,

i ne contient aucune valeur, tu devrais donc avoir un msg d'erreur sur l'instruction

strChaine = Sheets("Database old data").Range("N" & i).Value
Rechercher des sujets similaires à "fonction mid vba"