Base de donnée Access

Bonjour

J'essaye actuellement d'afficher le contenu d'une table access en VBA mais j'ai un problème "variable objet ou variable bloc With non définie"

Voici mon code

Sub AfficherTable()
     Dim Db1 As Database
     Dim Rs1 As Recordset
     ' Ouverture de la base de données
     Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\BaseAccess.accdb" )
     ' Ouverture de la table Salarie
     ' Un objet Recordset représente les enregistrements d'une table
     Set Rs1 = Db1.OpenRecordset( Name := "Salarie" , Type :=dbOpenDynaset)
     ' Effacement des données existantes dans la WorkSheet (sauf les titres)
     ' et copie des enregistrements
     With Worksheets( "salarié" ).Range( "K2" )
          With Selection.CurrentRegion
               Intersect(.Cells, .Offset( 1 )).Select
          End With
          Selection.ClearContents
          .CopyFromRecordset Rs1
     End With
     'Fermeture de la Base de données
     Db1.Close
End Sub

Merci d'avance pour votre aide ^^

Bonjour,

Quelle ligne est surlignée lors du bug ?

Désolé de ne pas l'avoir renseigné xD

c'est

Intersect(.Cells, .Offset(1)).Select

Essaie avec un . devant intersec

Edit oops je crois avoir dit une connerie, je regarderai en rentrant car sur cellphone cest pas pratique

Alors j'ai effectivement dit une connerie ! Mea culpa.

Pourrais-tu joindre les fichiers en rapport avec la macro ?

Bonjour, ^^

Je vous joint mon fichier excel et access, en gros la j'ai une table salarié, dans mon fichier excel j'ai une macro qui me permet d'ajouter un salarié grâce aux InputBox dans ma base

Je voudrais dans la même feuille afficher le contenu de la table salarié et si possible une macro permettant de réactualiser l'affichage de la table lors de l'ajout d'un salarié

Merci d'avance pour votre aide précieuse

107excel.zip (55.39 Ko)

bonjour,

essaie ceci, àtester

Sub AfficherTable()
     Dim Db1 As Database
     Dim Rs1 As Recordset
     ' Ouverture de la base de données
     Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\BaseAccess.accdb" )
     ' Ouverture de la table Salarie
     ' Un objet Recordset représente les enregistrements d'une table
     Set Rs1 = Db1.OpenRecordset( Name := "Salarie" , Type :=dbOpenDynaset)
     ' Effacement des données existantes dans la WorkSheet (sauf les titres)
     ' et copie des enregistrements
     With Worksheets( "salarié" ).Range( "K2" )
         With .CurrentRegion
            Application.Intersect(.Cells, .Offset(1)).ClearContents
        End With
          .CopyFromRecordset Rs1
     End With
     'Fermeture de la Base de données
     Db1.Close
End Sub

Bonjour

Merci de m'aider ^^ mais toujours le même problème "variable objet ou bloc with non définie, la ligne surligné est toujours la m^me lors du débogage :

Application.Intersect(.Cells, .Offset(1)).ClearContents
dealerxd a écrit :

Bonjour

Merci de m'aider ^^ mais toujours le même problème "variable objet ou bloc with non définie, la ligne surligné est toujours la m^me lors du débogage :

Application.Intersect(.Cells, .Offset(1)).ClearContents

bonjour,

je pense que tu reçois le message d'erreur car les cellules sont déjà vides.

adapte le code de cette façon

 With .CurrentRegion
            on error resume next
            Application.Intersect(.Cells, .Offset(1)).ClearContents
            on error goto 0
        End With

Salut,

Avec ça

               Intersect(Cells, .Offset(1)).Select

J'obtiens

7 Dupont Benoit

10 Loulou Jean

11 THUILLIER Jean-Pierre

12 DRH Thomas

1532 5412 54648788

sa marche merci beaucoup h2so4 et SoumZoum

Merci pour votre aide, vous m'enlevez une belle épine du pied

Mais de rien. Par contre, pour les prochains, ça serait intéressant de dire laquelle des deux méthodes a fonctionné...

Voila le fichier final ^^

    Sub AfficherTable()
         Dim Db1 As Database
         Dim Rs1 As Recordset
         ' Ouverture de la base de données
        Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\BaseAccess.accdb" )
         ' Ouverture de la table Salarie
        ' Un objet Recordset représente les enregistrements d'une table
        Set Rs1 = Db1.OpenRecordset( Name := "Salarie" , Type :=dbOpenDynaset)
         ' Effacement des données existantes dans la WorkSheet (sauf les titres)
        ' et copie des enregistrements
        With Worksheets( "salarié" ).Range( "K2" )
             With .CurrentRegion
                         on error resume next
                Intersect(.Cells, .Offset(1)).ClearContents
                         on error goto 0
            End With
              .CopyFromRecordset Rs1
         End With
         'Fermeture de la Base de données
        Db1.Close
    End Sub
Rechercher des sujets similaires à "base donnee access"