Bonjour,
j'utilise office 2003 et sql server 2005
voila j arrive pas a executer mon code, Ma connexion fonctionne mais c est au moment d'importer les données pour les enregistrer . Ca me donne comme message
" variable objet ou variable de bloc With non définie" sur la ligne
Incident.Range("C" & indice_ligne).Value = ensemble_enregistrements.fields(NOM_CHAMP_DESCRIPTION).Value
Voici mon 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
| Private Const NOM_CHAMP_DESCRIPTION As String = "description"
Private Const NOM_CHAMP_UTILISATEUR As String = "Utilisateur"
Private Const NOM_CHAMP_NUMERO As String = "Numéro"
Public Sub exporter_les_donnees()
' À NOTER : Pour changer la requête, il suffit de la modifier ici!!!
Call realiser_la_requete("select description,Utilisateur,Numéro from dbo.zView_Erreur_incidents")
End Sub
Private Sub realiser_la_requete(ByVal requete_SQL As String)
'* Déclaration des variables.
Dim Incident As Object '
Dim indice_ligne As Integer ' Indice de la ligne où l'écriture aura lieu.
Dim connexionDB ' La connexion avec la base de données.
Dim ensemble_enregistrements ' Ensemble d'enregistrements de la table.
' On cree un objet "connexion" vers la base de donnée ainsi qu'un ensemble
' d'enregistrements qui seront remplis plus loin.
Set connexionDB = CreateObject("ADODB.connection")
Set ensemble_enregistrements = CreateObject("ADODB.recordset")
' On cree un nouveau classeur où les données seront emmagasinées.
Application.Workbooks.Add
' On se connecte à la base de données.
connexionDB.Open "XXXX", "XXX", "XXXX"
' On ouvre la table correspondant à la requête spécifiée.
ensemble_enregistrements.Open requete_SQL, connexionDB
' On parcourt chacun des enregistrements de la table et on extrait les
' informations de la table pour les placer dans le classeur ouvert précedemment.
indice_ligne = 2
Do While Not ensemble_enregistrements.EOF
' On écrit les données de l'enregistrement dans le classeur.
Incident.Range("C" & indice_ligne).Value = ensemble_enregistrements.fields(NOM_CHAMP_DESCRIPTION).Value
Incident.Range("B" & indice_ligne).Value = ensemble_enregistrements.fields(NOM_CHAMP_UTILISATEUR).Value
Incident.Range("A" & indice_ligne).Value = ensemble_enregistrements.fields(NOM_CHAMP_NUMERO).Value
' On change de ligne pour la prochaine écriture.
indice_ligne = indice_ligne + 1
' On passe au prochain enregistrement de la table.
ensemble_enregistrements.movenext
Loop
' On ferme l'ensemble des enregistrement de la table.
ensemble_enregistrements.Close
' On sauvegarde le classeur et on le ferme.
Application.Dialogs(xlDialogSaveAs).Show
Call ActiveWorkbook.Close
' On libère les ressources réservées.
Set Incident = Nothing
Set connexionDB = Nothing
Set rs = Nothing
End Sub |
Merci de m'aider.
Partager