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
[/quote]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
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