Variable dans commandtext

drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008
- 23 avril 2008 à 14:07
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008
- 23 avril 2008 à 17:48
Bonjour, encore moi,

J'ai ce code (sous excel 2003):With ActiveSheet.QueryTables.Add(Connection:_<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>

        "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=******;PWD=******;SERVER=******;Destination:=Range("A1"))

        .CommandText = Array("Ma_Seletion; ......"
 & Chr(13) & "" & Chr(10) & "FROM SERVEUR.MATABLE MATABLE" & Chr(13) & "" & Chr(10) & "WHERE (MATABLE.DATE Like '01/04/2008')")

Donc je donne un critère pour ma requete "Quand la date commence par 01/04/2008".
ca marche très bien sauf que:
Je voudrais changer la date.
J'ai créé pour cela une variable qui contient "WHERE (MATABLE.DATE Like '01/04/2008')" avec la date qui change comme je le veux.
Sauf que si je remplace dans mon code "WHERE (MATABLE.DATE Like '01/04/2008')" par ma variable ca ne marche plus.
Comment pourrais-je faire ?
Merci

20 réponses

lillith212
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009

23 avril 2008 à 14:22
re:

En réalité il n'y a que ta date qui va être dynamique. Pour ne pas mettre simplement ta date en dynamique c'est à dire dans une variable.
Ca te donnerai un truc genre :





With ActiveSheet.QueryTables.Add(Connection:_<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>











        "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=******;PWD=******;SERVER=******;Destination:=Range("A1"))











        .CommandText = Array("Ma_Seletion; ......"





 & Chr(13) & "" & Chr(10) & "FROM SERVEUR.MATABLE MATABLE" & Chr(13) & "" & Chr(10) & "WHERE (MATABLE.DATE Like '" &maVariable & "')")


Je ne suis pas spécialiste en vba mais voila ce que j'en pense...
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 14:26
Merci lillith je vais essayer,


mais je penssais a un truc il faut peu etre convertir ma variable en texte, mais j'ai oublier le code ...
0
lillith212
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009

23 avril 2008 à 14:30
re:

la commande Cstr(maVariable) converti en string...
Et voila...
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 14:41
merci mais j'ai bien regardé je n'ai rien oublier et pourtant ca ne marche toujours pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lillith212
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009

23 avril 2008 à 14:47
tu as quoi comme message d'erreur?
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 15:01
Ben en fait c juste que ca marche pas car si je met une date fixe ca marche et sinon ca ne remplis pas la table
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
23 avril 2008 à 15:08
je ne comprends pas cette manie d'utiliser LIKE pour trouver .... la valeur exacte ...

bref.

une date, (énième question posée concernant ce point précis...)
se formatte ainsi :

"... WHERE `Date` = #" & Format$(maVariableDate, "MM\/DD\/YYYY") & "# "
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 15:16
Merci de ta réponse mais je n'arrive pas trop a voir ta ligne de commande.
Mon like me permet de choisir la date avec "commence par ..." car dans ma colonne j'ai la date et l'heure .
Voila
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 15:20
de plus je vien d'essayer ton code mais je n'ai toujours rien dsl.
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
23 avril 2008 à 15:21
aucune utilité également de faire ... & "" & ....

pour en revenir a ma proposition de code (avec LIKE, si ca te chante) :

.CommandText = Array("Ma_Seletion; ...... " & _
"FROM SERVEUR.MATABLE MATABLE " & _
"WHERE (MATABLE.DATE Like #" & Format$(maVariable, "MM\/DD\/YYYY\/") & "# ")
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 16:03
Merci je vais essayer. Pour le coup du ...&""&... C'est un enregistrement de macro donc il a enregistré ca et je n'ai pas enlevé car débutant en vba .
Merci encore
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
23 avril 2008 à 16:08
ok, je vois ca souvent, j'ignorais que l'enregistreur de macro ajoutais cela...
j'ai appris un truc, encore, aujourd'hui ^^
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 16:09
Bon ca ne marche toujours pas.
A chaque fois j'ai une erreur sur "Refresh BackgroundQuery:=False".
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
23 avril 2008 à 16:15
possible de passer par un Long, pour virer l'heure :

.CommandText = Array("Ma_Seletion; ...... " & _
"FROM SERVEUR.MATABLE MATABLE " & _
"WHERE (ROUND(MATABLE.DATE,0) = #" & Format$(maVariable, "MM\/DD\/YYYY\/") & "# ")
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 16:21
Désolé mais ya pas moyen le .Refresh BackgroundQuery:=False fait toujours des siennes. a chaque fois je compile ca marche mais a l'éxecution erreur 1004 refresh en jaune et si je met une date fixe je n'ai pas ce probleme donc ca doit venir du code de la variable .
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
23 avril 2008 à 16:24
quelle est ton erreur (le texte, s'il te plait)
?
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 16:26
Erreur d'éxecution '1004' :
Erreur de syntax SQL
Débogage : .Refresh BackgroundQuery:=False          surligné ne jaune
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 16:50
Sinon pour résoudre le probleme j'ai crée une variable p = """WHERE (MATABLE.DATE Like '')""" dans laquelle j'ajoute la date que je veux.
Ca ca marche j'ai pnew= "WHERE (MATABLE.DATE Like '23/04/2008')"
Donc c'est bon maintenant il faudrait mettre pnew dans le commandtext. Mais si je met directement pnew ca ne marche pas : meme erreur meme débogage.
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
23 avril 2008 à 16:55
ton champ date n'est pas au format date/heure, si ?
0
drik56
Messages postés
127
Date d'inscription
mercredi 16 avril 2008
Statut
Membre
Dernière intervention
8 juillet 2008

23 avril 2008 à 17:48
non ya juste la date
0