Erreur Alétoire Sous VBa pour Access

Résolu
celiahd Messages postés 4 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 7 avril 2010 - 9 juin 2008 à 15:10
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 9 juin 2008 à 15:24
Bonjour,

Je suis débutant sur VBA pour Access et j'ai tenté de faire un code pour récupérer les données de cellules d'une feuille Excel pour les transférer vers une Table Access. Le rpoblème est le nombre de ligne est complètement variable, j'ai donc utiliser ce code :

Private Sub Maj_Click()
Dim Excel As Excel.Application
Dim Classeur As Excel.Workbook
Dim Ligne

On Error GoTo Err_MajDesinv_Click

       If (insertdonnée1.Value <> "" And InsertDonnée2 <> "" And InsertDonnée3 <> "" And InsertDonnée4 <> "") Then
      
            Set Excel = CreateObject("Excel.Application")
            Excel.Visible = True
            fichier = Excel.GetOpenFilename("Fichier Type Excel,*.xls", , "Sélectionnez le fichier")
            Set Classeur = Excel.Workbooks.Open(fichier)
            nomdefichier = Excel.ActiveWorkbook.FullName

With Excel

.Range("C7").Select
.Selection.End(xlDown).Select
End With

Ligne = Selection.Row

'On Error GoTo Error_Export:
DoCmd.TransferSpreadsheet acImport, 8, "Matable", nomdefichier, True, "C7:N" & Selection.Row & ""

Set Classeur = Nothing
Set Excel = Nothing
   
    DoCmd.OpenQuery "MarequêteMiseàJour", acNormal
   
   
Else: MsgBox "Vous devez remplir les informations avant de pouvoir intégrer le fichier !"
End If

Exit_Maj_Click:
    Exit Sub

Err_Maj_Click:
    MsgBox Err.Description
    Classeur.Close
    Excel.Quit
    Resume Exit_Maj_Click
   
End Sub

Le souci est que ce code fonctionne une seule fois par "session" Access, quand je le relance arrivé à la ligne 'Ligne = Selection.Row', j'obtiens le message :
"Le serveur distant n'existe pas ou n'est pas disponible". Où est l'erreur ?
 Je travaille sur le réseau de mon entreprise.
Par souci de confidentialité j'ai modifié le nom des tables et fichier dans ce message.

Merci de votre aide constructive.

4 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
9 juin 2008 à 15:20
Salut,

remplace with excel par with classeur

deplus change le nom de ta variable Excel par un autre comme XlAppli par exemple car excel est un nom reservé.

A+
3
celiahd Messages postés 4 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 7 avril 2010
9 juin 2008 à 15:23
En fait je viens de trouver la raison, enfin je crois j'ai oublié les lignes :
    Classeur.Close
    Excel.Quit
Juste après le transfert par contre maintenant j'obtiens le message de façon aléatoire : Variable Objet ou variable deBloc With non définie.
J'ai donc supprimer la ligne 'Ligne = Selection.row" et apparemment ça marche.

Voilà mes excuses pour le dérangements.
Par contre si vous voyez d'autres erreurs n'hésitez pas.
0
celiahd Messages postés 4 Date d'inscription jeudi 4 mai 2006 Statut Membre Dernière intervention 7 avril 2010
9 juin 2008 à 15:24
Oups je n'avais pas vu ta réponse Gros Poisson .
Merci de ta rapidité, je vais essayer ça aussi.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 juin 2008 à 15:24
salut,

Dim Excel As Excel.Application  ' on ne nomme pas une variable avec un nom déjà réservé
donc Dim XlApp as Excel.Application

Dim Classeur As Excel.Workbook
Dim Ligne As Integer

<strike>Set Excel = CreateObject("Excel.Application")</strike>

Set Excel = New Excel.Application
<strike>
With Excel

.Range("C7").Select
.Selection.End(xlDown).Select
End With</strike>

Ligne = Classeur.Range("D7").End(xlDown).Row

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Rejoignez-nous