Remplacement d'une chaîne de caractère dans X feuilles d'un classeur Excel
Bonjour,
Le script ci-après doit permettre la modification d'une chaîne de caractère dans plusieurs feuilles d'un classeur Excel.
En VBA, je n'ai eu aucun soucis, mais désirant automatiser l'action le dernier jour du mois sans ouverture du classeur "Matrice" je suis confronté à un message d'erreur sur la ligne 34 {message = Index non valide. (Exception de HRESULT : 0x8002000B (DISP_E_BADINDEX)) }
Je vous sollicite pour une assistance dans l’écriture et surtout une explication sur mon erreur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Déclaration des variables
Dim mois 'Mois à traiter
Dim annee 'Année à traiter
Dim mm_aa 'Conacténation Mois_Année
Dim fichierxls 'Nom du nouveau classeur mensuel
Dim fso 'Création de l'objet FileSystemObject
Dim fin 'Fin traitement
Dim i 'Boucle feuilles classeur
Dim appExcel 'Application Excel
Dim wbExcel 'Classeur Excel
Dim wsExcel 'Feuille Excel
Dim xlPart
Dim xlByRows
' Création classeur Excel mensuel
fso = CreateObject("Scripting.FileSystemObject")
mois = InputBox("Nous sommes le " & mois & " ème mois de l'année " & annee & (Chr(13) & Chr(10)) & "Merci de saisir le mois désiré sur 2 caractères ex: juin = 06", "Création classeur Statistique Mensuel")
annee = InputBox("Nous sommes le " & mois & " ème mois de l'année " & annee & (Chr(13) & Chr(10)) & "Merci de saisir l'année désiré sur 4 caractères ex: 2017 = 2017", "Création classeur Statistique Mensuel")
mm_aa = mois & "_" & annee
fichierxls = "fichier-" & annee & mois & ".xlsx"
fso.CopyFile("d:\fichier-matrice.xlsx", "d:\" & fichierxls, True)
xlPart = Nothing
xlByRows = Nothing
Path = Nothing
'Ouverture de l'application Excel
appExcel = CreateObject("Excel.Application")
'Ouverture du classeur Excel
wbExcel = appExcel.Workbooks.Open("d:\" & fichierxls)
appExcel.Visible = True 'les actions seront visibles. Pour tout lancer en arrière-plan, remplacer True par False
'wsExcel correspond la feuille du classeur
For i = 13 To 41
wsExcel = wbExcel.Worksheets(i)
'Remplacement date dans les Cellules des feuilles 13 à 41
wsExcel.Cells.Replace(What:="05_17", Replacement:=mm_aa, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False)
Next
'Enregistrement du classeur Excel
wbExcel.Save()
'Fermeture du classeur Excel
wbExcel.Close()
'Fermeture de l'application Excel
appExcel.Quit()
'Désallocation mémoire
wsExcel = Nothing
wbExcel = Nothing
appExcel = Nothing
' Fin de Traitement
fin = InputBox("Le traitement est terminé - saisissez OK puis retour chariot", "Création classeur Statistique Mensuel")
MsgBox(fin)
End Sub |
Merci par avance.