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.
Merci par avance.
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
Partager