Programme VBA pour ACCESS:"erreur d'execution 9"
Bonjour a tous,
je suis nouvelle sur ce forum et je suis surtout novice en tout ce qui a trait a access 2010.
je vous expose mon probleme en esperant que quelqu'un puisse m'aider au plus vite.
alors j'ai créé un programme en utilisant les recordsets DAO qui va chercher un fichier excel dans un dossier en fonction du numero de YK une fois trouvé il ouvre ce fichier et il renseigne deux cellules C12 et E14 avec des valeurs données d'un recordset.
ceci fronctionne tres bien mais qu'une fois sur deux en me donnant comme message d'erreur "erreur d'execution 9" donc deja je ne comprends pas pour quoi.
quand ca marche, je demande a mon programme d'enregistrer le fichier sous le non "valeur CELLULE E14".xlsx dans un dossier (en lui donnant le chemin du dossier) en faisant un test d'erreur tel que si le fichier existe deja je rajoute un indice "_01" qui normalement s'incremente si le "_01" existe deja ceci marchait tres bien mais plus maintenant j'ai utilisé ce meme programme pour un autre formulaire et ca marche parfaitement sauf pour celui la.
voici mon programme vous serez plus eclairés:
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| Private Sub decontamination_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sql As String
Dim tableur As Excel.Application
Dim classeur As Excel.Workbook
Dim feuil1 As Excel.Worksheet
'Dim db As Database
'Dim rs As Recordset
sql = "SELECT [REQ Decontamination].* FROM [REQ Decontamination] WHERE [REQ Decontamination].[YKNumber]= """ & Me.txtYK & """"
Set db = Application.CurrentDb
Set rs = db.OpenRecordset(sql)
If IsNull(Me.txtYK) Or Me.txtYK = "" Or Me.txtYK = "YK" Then
MsgBox ("Veuillez entrer un numero de YK")
Exit Sub
End If
If rs.BOF And rs.EOF Then
MsgBox "Equipement " & Me.txtYK & " non contaminé"
rs.Close
Set rs = Nothing
Set db = Nothing
Exit Sub
End If
If txtYK = rs![YKNumber] Then
Do While Me.txtFIRNumber <> rs![FIRNumber]
rs.MoveNext
Loop
If Me.txtFIRNumber <> rs![FIRNumber] Then
MsgBox "Cette FIR ne figure pas dans la liste des equipements contaminés"
End If
If Me.txtFIRNumber = rs![FIRNumber] Then
Dim chemin As String
chemin = "T:\PUBLIC_SHARE\Repairs\SToRM\Décontamination\Décontamination " + Me.txtYK + "*.xlsx"
Set tableur = CreateObject("Excel.Application")
Set classeur = tableur.Workbooks.Open(chemin)
Set feuil1 = tableur.ActiveSheet
tableur.Visible = True
Workbooks(chemin).Sheets("Feuil1").range("C12") = rs![SerieNum]
Workbooks(chemin).Sheets("Feuil1").range("E14") = rs![FIRNumber]
'Workbooks("Décontamination " + Me.txtYK + ".xlsx").Sheets("Feuil1").range("B39").Value = Workbooks("Décontamination " + Me.txtYK + ".xlsx").Sheets("Feuil1").range("B47").Value
Dim Maintenant As Date
Sheets("Feuil1").range("B47").Value = Date
Maintenant = Sheets("Feuil1").range("B47").Value
End If
End If
'on sauvegarde la fiche de décontamination
Dim NomFichier As String
Dim CheminSortie As String
CheminSortie = "C:\Users\sha2817\Desktop\STORM\Decontamination"
NomFichier = CheminSortie & "\" & rs![FIRNumber] & ".xlsx"
Debut:
If SCR.FileExist(NomFichier) Then
If Not Left(Right(NomFichier, 7), 1) = "_" Then
NomFichier = Left(NomFichier, Len(NomFichier) - 5) + "_01" + ".xlsx"
Else
num = Format(CStr((Left(Right(NomFichier, 6), 2)) + 1), "00")
NomFichier = Left(NomFichier, Len(NomFichier) - 7) + "_" + num + ".xlsx"
End If
GoTo Debut
End If
tableur.ActiveWorkbook.SaveAs FileName:=NomFichier
rs.Close
Set rs = Nothing
Set db = Nothing
Exit Sub
Set classeur = Nothing
Set tableur = Nothing
End Sub |
si quelqu'un pouvait m'aider ca me sauverait la vie
merci d'avance