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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.