Code vba access

Fermé
joel.teko13 Messages postés 4 Date d'inscription jeudi 7 novembre 2019 Statut Membre Dernière intervention 27 novembre 2019 - Modifié le 12 nov. 2019 à 14:40
joel.teko13 Messages postés 4 Date d'inscription jeudi 7 novembre 2019 Statut Membre Dernière intervention 27 novembre 2019 - 27 nov. 2019 à 14:58
Bonjour,
J'ai le code ci-dessus, et chaque fois que j'execute il m'affiche une erreur: Erreur 3034 Vous avez essayé de valider ou d'annuler une transaction sans débuter de transaction au préalable.

Et m'indique l'erreur sur oWS.Rollback.
Quelqu'un m'aider????????

Private Sub BT_Effectif_Click()
On Error GoTo Erreur_Traitement

  'Variables DAO
  Dim oWS As DAO.Workspace
  Dim oDB As DAO.Database
  
  Dim Table_Effectif As DAO.Recordset
  
  'Variables parties Excel
  Dim oApp As Excel.Application
  Dim oWkb As Excel.Workbook
  Dim oWSht As Excel.Worksheet
  Dim oSelect As Excel.Range
  
  'Variable de traitement
  Dim Fichier_Excel As String
  Dim Choix_Importation As Integer
  Dim i As Integer
  
  'Choix du fichier à importer
  Fichier_Excel = ""
  
  If Selection_Fichier(Fichier_Excel) Then
    
    Me.Champ_Effectif = Fichier_Excel
    
   
    'Import EPT-Titulaire ou EPT-Apprenti
    Choix_Importation = Me!Choix_option.Value
  
    'Ouverture Fichier Excel
    Set oApp = CreateObject("Excel.Application")
    Set oWkb = oApp.Workbooks.Open(Fichier_Excel)
    Set oWSht = oWkb.Sheets(Choix_Importation)
    Set oSelect = oWSht.Cells(1, 1).currentRegion
        
    'Initialisation des objets DAO
    Set oWS = DBEngine.Workspaces(0)
    Set oDB = oWS.Databases(0)
    
    'Ouverture du Recordset
    Set Table_Effectif = oDB.OpenRecordset("EFFECTIF")
    
    'Début transaction
    oWS.BeginTrans
    
    'Lecture du Fichier Excel Donnée FI
    For i = 2 To oSelect.rows.Count
      
      '==============================================
      'REMPLISSAGE TABLE: Effectif
      '==============================================
        
      Table_Effectif.AddNew
       
      'No Matricule
      Table_Effectif.Fields("No_Matricule") = oSelect.Cells(i, 1)
     
      'No_Mois--
      Table_Effectif.Fields("No_Mois") = oSelect.Cells(i, 2)
      
      'Nom_Prénom
      Table_Effectif.Fields("Nom_Prenom") = oSelect.Cells(i, 3)
      
      'Site Hospitalier--
      Table_Effectif.Fields("Site") = oSelect.Cells(i, 4)
    
      'Département
      Table_Effectif.Fields("Dpt_Service") = oSelect.Cells(i, 5)
     
      'Service
      Table_Effectif.Fields("Centre_Charge") = oSelect.Cells(i, 6)
      
      'Poste/Fonction
      Table_Effectif.Fields("Fonction") = oSelect.Cells(i, 7)
        
      'Classe
      Table_Effectif.Fields("Classe") = oSelect.Cells(i, 8)
        
      'Echelon
      Table_Effectif.Fields("Echelon") = oSelect.Cells(i, 9)
       
      'Date début
      Table_Effectif.Fields("Date_Entree") = oSelect.Cells(i, 10)
      ' Table_Effectif.Fields("Date_Entree") = CDate("01.01.2017")
        
      'Date fin
      Table_Effectif.Fields("Date_Sortie") = oSelect.Cells(i, 11)
      ' Table_Effectif.Fields("Date_Sortie") = CDate("31.12.2099")
      
                  
      Table_Effectif.Update
    
    Next i
    
    'Confirmation transaction
    oWS.CommitTrans
    
    'Fermeture du Recordset
    Table_Effectif.Close
    
    'Fermer le classeur Excel
    oApp.Quit
          
    'Importation réussie
    MsgBox "Importation des données 'Effectif' effectuée avec succès"
   
    'Libération mémoire des Objets
    Set Table_Effectif = Nothing
           
    'Liberation mémoire des Objets Excel
    Set oSelect = Nothing
    Set oWSht = Nothing
    Set oWkb = Nothing
    Set oApp = Nothing
    
  End If
  
  Exit Sub

Fin:
'oWS.Close
  'Libération mémoire des Objets
  Set Table_Effectif = Nothing
           
  'Liberation mémoire des Objets Excel
  Set oSelect = Nothing
  Set oWSht = Nothing
  Set oWkb = Nothing
  Set oApp = Nothing

Erreur_Traitement:
  
   'Annulation transaction
   <bold> oWS.Rollback</bold>
  
  MsgBox "Erreur de Traitement : Fichier Excel - Ligne No " & i
  
  Resume Fin
  
End Sub
A voir également:

2 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 12 nov. 2019 à 15:26
bonjour,
tu ne peux faire Rollback que si tu as fait d'abord BeginTrans, et fais ni CommitTrans, ni Rollback entre-temps.

je me demande si il ne manque pas
exit sub
en ligne 132.
par ailleurs, je pense qu'il n'est pas nécessaire de faire Rollback, comme tu clotures oWS en quittant la fonction.
0
joel.teko13 Messages postés 4 Date d'inscription jeudi 7 novembre 2019 Statut Membre Dernière intervention 27 novembre 2019
13 nov. 2019 à 14:11
salut
j'ai essayé de mettre un exit sub, mais...............
0
bonjour
il faut faire une macro autoexec
0
joel.teko13 Messages postés 4 Date d'inscription jeudi 7 novembre 2019 Statut Membre Dernière intervention 27 novembre 2019
27 nov. 2019 à 14:58
merci
0