appraille
Messages postés9Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention21 mai 2008
-
9 avril 2008 à 12:29
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
17 avril 2008 à 15:16
Bonjour, j'éspére ne pas me tromper d'endroit pour poser ma question.
Le but pour moi est de pouvoir envoyer une variable d'excel à vb
J'ai un petit probléme de syntaxe, je vous joins le code se sera plus parlant:
Private Sub CommandButton1_Click()
Dim lenom As Variant
lenom = Sheets("PAGE").Range("f1")
Le probléme vient de la syntaxe dans la déclaration de la variable ou dans la requéte elle méme, j'ai essayer pas mal de solutions, mais là je suis limite à m'arracher les cheveux!!
PS: j'ai essayer avec une donnée en dure à la place de la variable et ça marche
Merci à tous ceux qui pourront m'apporter leur aide.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 17 avril 2008 à 15:16
Re,
Content que cela fonctionne. Donc si ton problème est résolu, il ne te reste plus qu'à appuyer sur réponse acceptée sur le ou les posts qui t'ont aidé à avancer.
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 9 avril 2008 à 13:45
Moi, ce que je ne comprends pas, c'est pourquoi mettre dans le bout de code qui ressemble à une requête SQL, des Chr(13) et Chr(10)
"SELECT BIDE.IDNOM " & Chr(13) & "" & Chr(10) &
Faire un retour chariot et un retour à la ligne dans une requête SQL, ça ne peut que planter non ?
Molenn
Vous n’avez pas trouvé la réponse que vous recherchez ?
appraille
Messages postés9Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention21 mai 2008 9 avril 2008 à 14:02
Bonjour Molenn, merci de t'intéresser à mon probléme , pour les chr(13), je t'explique, je n'ai pas taper le code mais j'ai enregistrer une macro pour ouvrir ma base et lancer une requéte, avec une donnée en dure et ensuite j'ai récupérer le code dans vbs et là ça marche, le probléme vient au moment ou je veux transformer ma donnée en dure en variable.
Pour Jrivet, j'ai essayer le .value et le .txt, mais sans succés
Merci à tous
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 9 avril 2008 à 14:19
Une chose à préciser encore : tu as récupéré le code dans le VBS, à mon avis, c'est une erreur, tu l'as récupéré dans le VBE et tu fais du VBA là
Je serais vraiment étonné de voir un code VBS (VBScript) commençant par :
Private Sub CommandButton1_Click()
Ceci étant, je me demande si le type de ta variable ne pose pas pb ...
Ton critère est :
"WHERE (BIDE.IDNOM=" & lenom & ")"
Vu le nom de ton champ (IDNOM), je pense que ce que tu cherches est un chiffre entier.
Déclares ta variable comme suit :
Dim lenom As Integer
lenom = Sheets("PAGE").Range("f1").value
Regarde avec le débuggeur ou colle un msgbox lenom pour être sûr que ta variable contient bien le chiffre à contrôler.
Mets ta syntaxe m'étonne quand même pour du VBA, tu es sûr que si tu mets
"SELECT BIDE.IDNOM FROM MEDIANE.dbo.BIDE BIDE WHERE BIDE.IDNOM=" & lenom
ça ne fonctionne pas ?
appraille
Messages postés9Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention21 mai 2008 9 avril 2008 à 15:47
Mollen, je t'assure le commandbutton vient bien de vb script, c'est un simple bouton sur une page excel, j'ai essayer ta syntaxe......., mais ça marche pas ...désolé
Merci
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 9 avril 2008 à 17:01
Tu m'étonnes beaucoup quand même, mais pas grave, c'est pas le propos ^^
J'ai utilisé mon enregistreur de macro dans Excel pour récupérer la même chose que toi, en me connectant sur une base ACCESS. Voici ce que ça me donne :
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=MS Access Database;DBQ=C:\BAM.mdb;DefaultDir=C:;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;" _
, Destination:=Range("F9"))
.CommandText = Array( _
"SELECT RésultatsIndicateur.NomCR, RésultatsIndicateur.TotalitéIndispo" & Chr(13) & "" & Chr(10) & "FROM `C:\BAM`.RésultatsIndicateur RésultatsIndicateur" _
)
.Name = "Lancer la requête à partir de MS Access Database_1"
Blabla, je saute la fin du code inutile à la compréhension
1ère chose, effectivement, ça colle des retours charriot O_o ... Mais bon passons (la logique MSoft sans doute)
Par rapport à ta requête, je ne vois qu'une différence : j'ai le chemin de ma base de données dans le FROM ... mais est-ce que c'est à cause de la connexion à ACESS ? Aucune idée.
"SELECT BIDE.IDNOM " & Chr(13) & "" & Chr(10) & "FROM MEDIANE.dbo.BIDE BIDE" & Chr(13) & "" & Chr(10) & "WHERE (BIDE.IDNOM=" & lenom & ")" _
Normal au fait que tu aies BIDE marqué 2 fois ?
Sinon, j'avoue que je sèche.
Tu as bien vérifié le contenu de ta variable lenom ? tu as bien ce que tu attendais ?
La seule autre chose que je vois, c'est le type de ton champ IDNOM. Il est bien de type Numérique ou NuméroAuto ? S'il est de type texte, ta requête ne peut pas fonctionner comme elle est, mais ça ne fonctionnerait pas en dur ... à moins que lorsque tu rentres la valeur en dur, tu l'encadres avec une quote ? Ce qui expliquerait ton erreur au passage.
En résumé, j'ai épuisé mes quelques connaissances là-dessus
appraille
Messages postés9Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention21 mai 2008 9 avril 2008 à 22:27
Bonjour Molenn, merci encore pour ton aide, dans la fin de ton message tu me dis que si c'est du texte ça ne peut pas marcher, car effectivement c'est bien du texte et non du numérique et ma valeur en dure , pour que ça fonctionne je l'avais bien entouré de quotes, alors si ça t'éclaire pour une solution je suis evidemment preneur.
Pour le Bide noter deux fois, c'est msquery qui fait cette syntaxe, moi aussi je n'ai pas compris, mais il m'a toujours fait ça.
Gil
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 10 avril 2008 à 09:58
Ah ben voilà alors ^^ ... Ton champ est de type texte, donc, il faut que tu encadres ta variable par des quotes. Il y a plusieurs syntaxes qui te permettent de le faire, personnellement, j'utilise la suivante, pas forcément la mieux :
"SELECT BIDE.IDNOM FROM MEDIANE.dbo.BIDE BIDE WHERE BIDE.IDNOM=" & """" & lenom & """"
appraille
Messages postés9Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention21 mai 2008 10 avril 2008 à 18:47
Bonjour et merci à ceux qui m'on aider, particuliérement à toi Molenn, j'essairai le code demain, car aujourd'hui je suis en repos, je vous informe pour la suite
Bye
Gil
appraille
Messages postés9Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention21 mai 2008 14 avril 2008 à 14:45
Bonjour à tous, je vous rejoins le code complet, impeccable ça marche avec un champ numérique, par contre pas moyen avec un champ texte, j'ai essayer ta syntaxe Molenn mais pas moyen..........
Private Sub CommandButton1_Click()
Columns("A:A").Select
Selection.ClearContents
Dim lenom As Variant
lenom = Sheets("PAGE").Range("f1")
appraille
Messages postés9Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention21 mai 2008 14 avril 2008 à 17:50
Bonjour Molenn, effectivement dans le code publié, il n'y avait pas ton code, j'ai mis celui-ci car il fonctionne (en numérique).
J'ai fait comme tu as dis j'ai remplacé tout le bloc with, voilà l'erreur renvoyer
"erreur d'execution 1004"
"erreur général odbc"
et quand je fais le débogage il me surligne en jaune :
.Refresh BackgroundQuery:=False
Pour la façon dont j'ai construit le fichier, voilà ma méthode, j'ai ouvert une feuille excel, j'ai enregistrer une macro en allant chercher les donnée externes, ouverture de ms query, conditions et retour excel, j'ai ensuite créer un bouton sur la méme page et fais un copier coller du code entre les balises de ce dernier, voilà je crois que je n'ai rien oublier...
A bientôt
Merci
Gil