Code vba access

Signaler
Messages postés
4
Date d'inscription
jeudi 7 novembre 2019
Statut
Membre
Dernière intervention
27 novembre 2019
-
joel.teko13
Messages postés
4
Date d'inscription
jeudi 7 novembre 2019
Statut
Membre
Dernière intervention
27 novembre 2019
-
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

5 réponses

Messages postés
9112
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 décembre 2019
468
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.
joel.teko13
Messages postés
4
Date d'inscription
jeudi 7 novembre 2019
Statut
Membre
Dernière intervention
27 novembre 2019

salut
j'ai essayé de mettre un exit sub, mais...............
bonjour
il faut faire une macro autoexec
joel.teko13
Messages postés
4
Date d'inscription
jeudi 7 novembre 2019
Statut
Membre
Dernière intervention
27 novembre 2019

merci