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 -
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
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:
- Aide sur VBA pour une requête SQL
- Logiciel sql - Télécharger - Bases de données
- Excel compter cellule couleur sans vba - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Sql (+) - Forum Programmation
- Find vba - Astuces et Solutions
4 réponses
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 ']
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)
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
(Actuellement je la commande avec un bouton, ce qui n'est pas très pratique!!)
Merci pour vos réponses
Salut,
Clic droit sur l'onglet de la feuille concernée / Visualiser le code puis copier coller ceci (ou quelque chose dans le genre...) :
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
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
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