Aide sur VBA pour une requête SQL
Résolu/Fermé
moby79
Messages postés
16
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
19 mars 2012
-
7 avril 2011 à 11:39
moby79 Messages postés 16 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 19 mars 2012 - 22 avril 2011 à 09:22
moby79 Messages postés 16 Date d'inscription mardi 1 mars 2011 Statut Membre Dernière intervention 19 mars 2012 - 22 avril 2011 à 09:22
A voir également:
- Aide sur VBA pour une requête SQL
- Excel compter cellule couleur sans vba - Guide
- Find vba - Astuces et Solutions
- Sql lister les tables ✓ - Forum Programmation
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
7 avril 2011 à 13:23
7 avril 2011 à 13:23
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)
moby79
Messages postés
16
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
19 mars 2012
7 avril 2011 à 15:02
7 avril 2011 à 15:02
Merci beaucoup, sa fonctionne parfaitement!!
moby79
Messages postés
16
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
19 mars 2012
Modifié par moby79 le 8/04/2011 à 08:41
Modifié par moby79 le 8/04/2011 à 08:41
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
8 avril 2011 à 08:51
8 avril 2011 à 08:51
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
moby79
Messages postés
16
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
19 mars 2012
22 avril 2011 à 09:22
22 avril 2011 à 09:22
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
moby79
Messages postés
16
Date d'inscription
mardi 1 mars 2011
Statut
Membre
Dernière intervention
19 mars 2012
8 avril 2011 à 09:42
8 avril 2011 à 09:42
Merci beaucoup, cela fonctionne!!