Aide sur VBA pour une requête SQL

Résolu
moby79 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
moby79 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je viens de réaliser une requête SQL sur VBA qui fonctionne, pour allez chercher des information sur un client via son numéros:

Destination:=Range("$B$1")).QueryTable
.CommandText = Array( _
"SELECT *" & Chr(13) & "" & Chr(10) & " FROM [Entreprise].[dbo].[Client]" & Chr(13) & "" & Chr(10) & "WHERE clID = 'CL00001'")

Maintenant, je souhaite saisir le N° client sur dans une cellule Excel, et renvoyer cette valeur à la place du 'CL00001' de mon exemple.

j'arrive à mettre ma valeur en 'mémoire' dans une variable num:

Dim num As String

num = Sheets("Feuil1").Range("A4").Value

Et la je n'arrive pas à utiliser cette variable à la place du 'CL00001' de mon exemple

Donc si quelqu'un à une solution à me proposer, je suis preneur!

Merci pour vos réponses
A voir également:

4 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,
Je ne connais pas du tout les requêtes SQL.
Cependant avez vous essayé :
[j'ai ajouté un test : si num est bien entouré de ']
Dim num As String
num = Sheets("Feuil1").Range("A4").Value
If Right(num, 1) <> "'" Then
num = num & "'"
End If
If Left(num, 1) <> "'" Then
num = "'" & num
End If
Destination:=Range("$B$1")).QueryTable 
.CommandText = Array( _ 
"SELECT *" & Chr(13) & "" & Chr(10) & " FROM [Entreprise].[dbo].[Client]" & Chr(13) & "" & Chr(10) &"WHERE clID =" & num) 
2
moby79 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup, sa fonctionne parfaitement!!
0
moby79 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Maintenant, je voudrais que ma macro s'exécute dés que je change la valeur de ma cellule A4
(Actuellement je la commande avec un bouton, ce qui n'est pas très pratique!!)

Merci pour vos réponses
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut,
Clic droit sur l'onglet de la feuille concernée / Visualiser le code puis copier coller ceci (ou quelque chose dans le genre...) :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim num As String
If Target.Address <> "$A$4" Then Exit Sub
num = Sheets("Feuil1").Range("A4").Value
If Right(num, 1) <> "'" Then
num = num & "'"
End If
If Left(num, 1) <> "'" Then
num = "'" & num
End If
Destination:=Range("$B$1")).QueryTable 
.CommandText = Array( _ 
"SELECT *" & Chr(13) & "" & Chr(10) & " FROM [Entreprise].[dbo].[Client]" & Chr(13) & "" & Chr(10) &"WHERE clID =" & num) 
End Sub
0
moby79 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, j'ai un autre soucis: tout mes exemple donné si dessus concerne une macro qui est écrite dans la feuil1. Or je souhaite que ma valeur A4 qui déclenche la macro et qui est une variable de ma requête soit saisie sur une autre feuille (feuil 2 par ex) et garder le résultat de ma requête sur la feuille 1

j'ai donc écrit le code suivant

Dans Feuil2 j'ai :

Private Sub Worksheet_Change(ByVal Target As Range)

'Exécution automatique
If Target.Address <> ("A4") Then Exit Sub

Call Requete
End Sub

Dans This Workbook j'ai :

'Affectation d'une valeur dans la variable
tabl = Worksheets(2).Range("A4").Value

'Place [ et ] sur tabl
If Right(tabl, 1) <> "]" Then
tabl = tabl & "]"
End If
If Left(tabl, 1) <> "[" Then
tabl = "[" & tabl
End If

'Efface les valeur déja présente
Worksheets(1).Range("B:CW").ClearContents

'Requete SQL
With Worksheets(1).ListObjects.Add(SourceType:=0, Source:= _
"ODBC;DSN=Serveur;UID=aa;PWD=mdp;;;DATABASE=Entreprise" _
, Destination:=Worksheets(1).Range("$B$1")).QueryTable
.CommandText = _
"SELECT" & col & Chr(13) & "" & Chr(10) & "FROM [Entreprise].[dbo]." & tabl & Chr(13) & "" & Chr(10) & "WHERE" & whe & fil
.Refresh BackgroundQuery:=True
End With

End Sub

Or ce code ne marche pas, j'ai message d'erreur qui me dit q'un sub ou une function non définie, et je ne voit mon erreur, donc si quelqu'un veut bien m'aider

Merci
0
moby79 Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup, cela fonctionne!!
0