Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Extraction db SQL Server

6 réponses
Avatar
Microsoft
Bonjour,

Dans un fichier XLS, j'ai une liste de numéro sur une feuille.
J'aimerai importer d'une table SQL, des enregistrements en faisant la
sélection sur la liste de numéro de ma feuille
Comment faire ?

Merci à ceux ou celles qui pourront m'aider

JoMa

6 réponses

Avatar
isabelle
Bonjour JoMa,

voici un exemple donné par Denis Michon,

Sub ImporterUnChampMémo()
DAOFromAccessToExcel "C:excelcomptoir.mdb", _
"Employés", "Notes", Range("B1")
End Sub

Sub DAOFromAccessToExcel(DBFullName As String, TableName As String, _
FieldName As String, TargetRange As Range)
Application.ScreenUpdating = False
Dim db As DAO.Database, rs As DAO.Recordset
Dim lngRowIndex As Long
Set TargetRange = TargetRange.Cells(1, 1)
Set db = OpenDatabase(DBFullName)
Set rs = db.OpenRecordset(TableName, dbOpenTable)
lngRowIndex = 0
With rs
If Not .BOF Then .MoveFirst
While Not .EOF
' boucle sur la plage excel
For i = 5 To Range("e65536").End(xlUp).Row
If Range("E" & i) = .Fields("Formulaire") Then
Range("I" & i) = Left(.Fields(FieldName), 32765)
End If
Next
.MoveNext
lngRowIndex = lngRowIndex + 1
Wend
End With
Set rs = Nothing
db.Close
Set db = Nothing
Application.ScreenUpdating = True
End Sub

isabelle


Bonjour,

Dans un fichier XLS, j'ai une liste de numéro sur une feuille.
J'aimerai importer d'une table SQL, des enregistrements en faisant la
sélection sur la liste de numéro de ma feuille
Comment faire ?

Merci à ceux ou celles qui pourront m'aider

JoMa


Avatar
Denis Michon
Bonjour Josette,


Voici une procédure qui va mettre à jour tes données de la feuille au fur et à mesure que tu entres tes données (ou
modifie) sur une plage définie . En fonction des résultats de la recherche, des informations sont extraites de la base
de donnée (access dans l'exemple) pour être inscrit dans la feuille de calcul. Selon tes besoins, il y moyen de modifier
cette procédure pour en faire une boucle sur une plage de données...

Tu dois ajouter à ton projet la bibliothèque :

"Microsoft DAO 3.6 objects librairy"

à insérer dans le module feuille où l'action se déroule.

'----------------------------------------------
Sub RechercherDataAccessPourExcel

Dim MyRange As Range
Set MyRange = Range("A1:A25")

If Union(Target, MyRange).Address = MyRange.Address Then
Dim db As Database
Dim RstTrouve As Recordset
Dim Chaine As String

Set db = OpenDatabase("C:LotusMes Documentsbd2.mdb")
Set RstTrouve = db.OpenRecordset("Etudiant", dbOpenDynaset)
RstTrouve.MoveLast
RstTrouve.MoveFirst
Chaine = Trim(Target.Value)
Application.EnableEvents = False
With RstTrouve
.FindFirst "[NomEtudiant] = " & Chr(34) & Chaine & Chr(34)
If .NoMatch = False Then
Target.Offset(, 1) = RstTrouve(2)
Target.Offset(, 2) = RstTrouve(3)
Target.Offset(, 3) = RstTrouve(4)
Target.Offset(, 3) = RstTrouve(5)
End If
End With
Set db = Nothing
Set RstTrouve = Nothing
Application.EnableEvents = True
End If

End sub
'----------------------------------------------

Au lieu d'ouvrir une table, tu peux aussi utiliser une requête dont voici un exemple à inclure dans la procédure le cas
échéant.

Syntaxe Pour une requête:

Set RstTrouve = db.OpenRecordset("SELECT Etudiant.NomEtudiant,
Etudiant.Initiale FROM Etudiant WHERE Etudiant.Initiale Like" & "'Pa'",
dbOpenDynaset)


Salutations!



"Microsoft" a écrit dans le message de news:
Bonjour,

Dans un fichier XLS, j'ai une liste de numéro sur une feuille.
J'aimerai importer d'une table SQL, des enregistrements en faisant la
sélection sur la liste de numéro de ma feuille
Comment faire ?

Merci à ceux ou celles qui pourront m'aider

JoMa
Avatar
Jm
Bonjour Denis
que veut dire et comment faire :
Tu dois ajouter à ton projet la bibliothèque :
"Microsoft DAO 3.6 objects librairy"

Merci

"Denis Michon" a écrit dans le message de
news:HMxgb.117771$
Bonjour Josette,


Voici une procédure qui va mettre à jour tes données de la feuille au fur
et à mesure que tu entres tes données (ou

modifie) sur une plage définie . En fonction des résultats de la
recherche, des informations sont extraites de la base

de donnée (access dans l'exemple) pour être inscrit dans la feuille de
calcul. Selon tes besoins, il y moyen de modifier

cette procédure pour en faire une boucle sur une plage de données...

Tu dois ajouter à ton projet la bibliothèque :

"Microsoft DAO 3.6 objects librairy"

à insérer dans le module feuille où l'action se déroule.

'----------------------------------------------
Sub RechercherDataAccessPourExcel

Dim MyRange As Range
Set MyRange = Range("A1:A25")

If Union(Target, MyRange).Address = MyRange.Address Then
Dim db As Database
Dim RstTrouve As Recordset
Dim Chaine As String

Set db = OpenDatabase("C:LotusMes Documentsbd2.mdb")
Set RstTrouve = db.OpenRecordset("Etudiant", dbOpenDynaset)
RstTrouve.MoveLast
RstTrouve.MoveFirst
Chaine = Trim(Target.Value)
Application.EnableEvents = False
With RstTrouve
.FindFirst "[NomEtudiant] = " & Chr(34) & Chaine & Chr(34)
If .NoMatch = False Then
Target.Offset(, 1) = RstTrouve(2)
Target.Offset(, 2) = RstTrouve(3)
Target.Offset(, 3) = RstTrouve(4)
Target.Offset(, 3) = RstTrouve(5)
End If
End With
Set db = Nothing
Set RstTrouve = Nothing
Application.EnableEvents = True
End If

End sub
'----------------------------------------------

Au lieu d'ouvrir une table, tu peux aussi utiliser une requête dont voici
un exemple à inclure dans la procédure le cas

échéant.

Syntaxe Pour une requête:

Set RstTrouve = db.OpenRecordset("SELECT Etudiant.NomEtudiant,
Etudiant.Initiale FROM Etudiant WHERE Etudiant.Initiale Like" & "'Pa'",
dbOpenDynaset)


Salutations!



"Microsoft" a écrit dans le message de
news:

Bonjour,

Dans un fichier XLS, j'ai une liste de numéro sur une feuille.
J'aimerai importer d'une table SQL, des enregistrements en faisant la
sélection sur la liste de numéro de ma feuille
Comment faire ?

Merci à ceux ou celles qui pourront m'aider

JoMa





Avatar
Jm
Ah j'oublie

est-il possible d'adapter cette macro pour utiliser une base de donnée SQL
et non access



"Denis Michon" a écrit dans le message de
news:HMxgb.117771$
Bonjour Josette,


Voici une procédure qui va mettre à jour tes données de la feuille au fur
et à mesure que tu entres tes données (ou

modifie) sur une plage définie . En fonction des résultats de la
recherche, des informations sont extraites de la base

de donnée (access dans l'exemple) pour être inscrit dans la feuille de
calcul. Selon tes besoins, il y moyen de modifier

cette procédure pour en faire une boucle sur une plage de données...

Tu dois ajouter à ton projet la bibliothèque :

"Microsoft DAO 3.6 objects librairy"

à insérer dans le module feuille où l'action se déroule.

'----------------------------------------------
Sub RechercherDataAccessPourExcel

Dim MyRange As Range
Set MyRange = Range("A1:A25")

If Union(Target, MyRange).Address = MyRange.Address Then
Dim db As Database
Dim RstTrouve As Recordset
Dim Chaine As String

Set db = OpenDatabase("C:LotusMes Documentsbd2.mdb")
Set RstTrouve = db.OpenRecordset("Etudiant", dbOpenDynaset)
RstTrouve.MoveLast
RstTrouve.MoveFirst
Chaine = Trim(Target.Value)
Application.EnableEvents = False
With RstTrouve
.FindFirst "[NomEtudiant] = " & Chr(34) & Chaine & Chr(34)
If .NoMatch = False Then
Target.Offset(, 1) = RstTrouve(2)
Target.Offset(, 2) = RstTrouve(3)
Target.Offset(, 3) = RstTrouve(4)
Target.Offset(, 3) = RstTrouve(5)
End If
End With
Set db = Nothing
Set RstTrouve = Nothing
Application.EnableEvents = True
End If

End sub
'----------------------------------------------

Au lieu d'ouvrir une table, tu peux aussi utiliser une requête dont voici
un exemple à inclure dans la procédure le cas

échéant.

Syntaxe Pour une requête:

Set RstTrouve = db.OpenRecordset("SELECT Etudiant.NomEtudiant,
Etudiant.Initiale FROM Etudiant WHERE Etudiant.Initiale Like" & "'Pa'",
dbOpenDynaset)


Salutations!



"Microsoft" a écrit dans le message de
news:

Bonjour,

Dans un fichier XLS, j'ai une liste de numéro sur une feuille.
J'aimerai importer d'une table SQL, des enregistrements en faisant la
sélection sur la liste de numéro de ma feuille
Comment faire ?

Merci à ceux ou celles qui pourront m'aider

JoMa





Avatar
Denis Michon
Bonjour Jim,

Lorsque ton fichier excel est ouvert, tu ouvres la fenêtre VBE (visual basic editor) et à partir de la barre des menus
de cette fenêtre, dans le menu "Outils", tu cliques sur la commande "Référence" et dans la fenêtre qui s'ouvrira, tu
cocheras la référence intitulée :

"Microsoft 3.5 ou 3.6 (selon la version d'excel) objects librairy"


Je n'ai jamais travaillé personnellement avec une base de données SQL, il n'y a aucune restriction à utiliser ce type de
procédure avec une base SQL. Sauf que ce code tel qu'il est écrit peut être problématique, si ta base de données sur
SQL possède des mesures de sécurité limitant son accès à des "utilisateurs bien identifiés" avec mot de passe.


Salutations!



"Jm" a écrit dans le message de news:
Ah j'oublie

est-il possible d'adapter cette macro pour utiliser une base de donnée SQL
et non access



"Denis Michon" a écrit dans le message de
news:HMxgb.117771$
Bonjour Josette,


Voici une procédure qui va mettre à jour tes données de la feuille au fur
et à mesure que tu entres tes données (ou

modifie) sur une plage définie . En fonction des résultats de la
recherche, des informations sont extraites de la base

de donnée (access dans l'exemple) pour être inscrit dans la feuille de
calcul. Selon tes besoins, il y moyen de modifier

cette procédure pour en faire une boucle sur une plage de données...

Tu dois ajouter à ton projet la bibliothèque :

"Microsoft DAO 3.6 objects librairy"

à insérer dans le module feuille où l'action se déroule.

'----------------------------------------------
Sub RechercherDataAccessPourExcel

Dim MyRange As Range
Set MyRange = Range("A1:A25")

If Union(Target, MyRange).Address = MyRange.Address Then
Dim db As Database
Dim RstTrouve As Recordset
Dim Chaine As String

Set db = OpenDatabase("C:LotusMes Documentsbd2.mdb")
Set RstTrouve = db.OpenRecordset("Etudiant", dbOpenDynaset)
RstTrouve.MoveLast
RstTrouve.MoveFirst
Chaine = Trim(Target.Value)
Application.EnableEvents = False
With RstTrouve
.FindFirst "[NomEtudiant] = " & Chr(34) & Chaine & Chr(34)
If .NoMatch = False Then
Target.Offset(, 1) = RstTrouve(2)
Target.Offset(, 2) = RstTrouve(3)
Target.Offset(, 3) = RstTrouve(4)
Target.Offset(, 3) = RstTrouve(5)
End If
End With
Set db = Nothing
Set RstTrouve = Nothing
Application.EnableEvents = True
End If

End sub
'----------------------------------------------

Au lieu d'ouvrir une table, tu peux aussi utiliser une requête dont voici
un exemple à inclure dans la procédure le cas

échéant.

Syntaxe Pour une requête:

Set RstTrouve = db.OpenRecordset("SELECT Etudiant.NomEtudiant,
Etudiant.Initiale FROM Etudiant WHERE Etudiant.Initiale Like" & "'Pa'",
dbOpenDynaset)


Salutations!



"Microsoft" a écrit dans le message de
news:

Bonjour,

Dans un fichier XLS, j'ai une liste de numéro sur une feuille.
J'aimerai importer d'une table SQL, des enregistrements en faisant la
sélection sur la liste de numéro de ma feuille
Comment faire ?

Merci à ceux ou celles qui pourront m'aider

JoMa





Avatar
Jm
Merci

Josette


"Denis Michon" a écrit dans le message de
news:dsygb.117973$
Bonjour Jim,

Lorsque ton fichier excel est ouvert, tu ouvres la fenêtre VBE (visual
basic editor) et à partir de la barre des menus

de cette fenêtre, dans le menu "Outils", tu cliques sur la commande
"Référence" et dans la fenêtre qui s'ouvrira, tu

cocheras la référence intitulée :

"Microsoft 3.5 ou 3.6 (selon la version d'excel) objects librairy"


Je n'ai jamais travaillé personnellement avec une base de données SQL, il
n'y a aucune restriction à utiliser ce type de

procédure avec une base SQL. Sauf que ce code tel qu'il est écrit peut
être problématique, si ta base de données sur

SQL possède des mesures de sécurité limitant son accès à des "utilisateurs
bien identifiés" avec mot de passe.



Salutations!



"Jm" a écrit dans le message de
news:

Ah j'oublie

est-il possible d'adapter cette macro pour utiliser une base de donnée SQL
et non access



"Denis Michon" a écrit dans le message de
news:HMxgb.117771$
Bonjour Josette,


Voici une procédure qui va mettre à jour tes données de la feuille au
fur


et à mesure que tu entres tes données (ou
modifie) sur une plage définie . En fonction des résultats de la
recherche, des informations sont extraites de la base

de donnée (access dans l'exemple) pour être inscrit dans la feuille de
calcul. Selon tes besoins, il y moyen de modifier

cette procédure pour en faire une boucle sur une plage de données...

Tu dois ajouter à ton projet la bibliothèque :

"Microsoft DAO 3.6 objects librairy"

à insérer dans le module feuille où l'action se déroule.

'----------------------------------------------
Sub RechercherDataAccessPourExcel

Dim MyRange As Range
Set MyRange = Range("A1:A25")

If Union(Target, MyRange).Address = MyRange.Address Then
Dim db As Database
Dim RstTrouve As Recordset
Dim Chaine As String

Set db = OpenDatabase("C:LotusMes Documentsbd2.mdb")
Set RstTrouve = db.OpenRecordset("Etudiant", dbOpenDynaset)
RstTrouve.MoveLast
RstTrouve.MoveFirst
Chaine = Trim(Target.Value)
Application.EnableEvents = False
With RstTrouve
.FindFirst "[NomEtudiant] = " & Chr(34) & Chaine & Chr(34)
If .NoMatch = False Then
Target.Offset(, 1) = RstTrouve(2)
Target.Offset(, 2) = RstTrouve(3)
Target.Offset(, 3) = RstTrouve(4)
Target.Offset(, 3) = RstTrouve(5)
End If
End With
Set db = Nothing
Set RstTrouve = Nothing
Application.EnableEvents = True
End If

End sub
'----------------------------------------------

Au lieu d'ouvrir une table, tu peux aussi utiliser une requête dont
voici


un exemple à inclure dans la procédure le cas
échéant.

Syntaxe Pour une requête:

Set RstTrouve = db.OpenRecordset("SELECT Etudiant.NomEtudiant,
Etudiant.Initiale FROM Etudiant WHERE Etudiant.Initiale Like" & "'Pa'",
dbOpenDynaset)


Salutations!



"Microsoft" a écrit dans le message de
news:

Bonjour,

Dans un fichier XLS, j'ai une liste de numéro sur une feuille.
J'aimerai importer d'une table SQL, des enregistrements en faisant la
sélection sur la liste de numéro de ma feuille
Comment faire ?

Merci à ceux ou celles qui pourront m'aider

JoMa