Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2861 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Critères de Choix pour tri sur un Formulaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Critères de Choix pour tri sur un Formulaire

n°1989883
alex'78
Posté le 03-05-2010 à 16:52:49  profilanswer
 

Bonjour,  
 
J'ai un Formulaire nommé "Choix de Visualisation" où sont affichés ds une colonne le nom des Champs d'une Table nommé "Table0" ( Organisme, Dates, Contact etc... ). Comme vous le voyez, le principe de cette page est de faire des tris, des tests pour ensuite appuyer sur un Bouton "Afficher" qui afficherait donc une Liste représentant les critères que jai rentré dans ce formulaire.
Pour mieux comprendre j'ai mis un Exemple basé que sur les Dates de la Table, donc là le tri que je veux faire c'est les dates supérieures ou égales au 9/12/2009 ET inférieures ou égales au 13/01/2010.  Le truc c'est que je sais pas si je dois afficher ça sous forme de requête ou pas, et au niveau des expressions, j'ai essayé mais la syntaxe est mauvaise.
 
Nomenclature : les deux listes déroulantes où il y a les comparateurs ( que j'ai rentré manuellement via la propriété Liste de valeurs ) sont nommées respectivement "TestChamp5" et "Test2Champ5" ; les deux zones de texte où il y a les dates sont nommées respectivement "ValChamp5" et "Val2Champ5" ; la case à cocher ET est nommée "OperEt5"
 
J'ai essayé naïvement une requête avec comme critère quelque chose du genre [Formulaire]![Choix de Formulaire]![TestChamp5] ET [Formulaire]![Choix de Formulaire]![ValChamp5] etc.... bien sur ça n'a pas marché, je débute en Access en VBA et SQL donc bon je galère beaucoup..
 
Si vous avez des idées sur mon problème n'hésitez pas ^^
 
http://img203.imageshack.us/img203/1209/visu2.jpg
 
PS :  ne faites pas attention à la Case "Réponse" qui est cochée "activé", j'ai pas encore configurée cette partie.


Message édité par alex'78 le 04-05-2010 à 15:39:35
mood
Publicité
Posté le 03-05-2010 à 16:52:49  profilanswer
 

n°1990498
SuppotDeSa​Tante
Aka dje69r
Posté le 05-05-2010 à 15:58:38  profilanswer
 

Pourquoi ouvrir un nouveau topic ?
 
Pour le critere dans la requete, tu es obligé de tester ce que contient TestChamp5 et Test2Champ5... Tu peux pas passer autrement...
Genre, Vraifaux(TestChamp5 = ">";>[Formulaire]![Choix de Formulaire]![TonChampDate];Vraifaux(TestChamp5 = "<";<[Formulaire]![Choix de Formulaire]![TonChampDate];Vraifaux(TestChamp5 = ">=";>=[Formulaire]![Choix de Formulaire]![TonChampDate]))) etc.
 
Le mieux, est donc de construire ta requete en VB, comme ca tu peux passer ce que contient tes pioches (du texte) directement en operateur (> ; >= etc.)
 
Exemple :
Soit une table [Table] avec deux champs :
[Num] et [Date]
Un formulaire : Formulaire1
Une pioche comme toi avec des operateurs dedans : Operateur1
Une textbox comme toi où on saisit une date : SDate1
 
Ensuite tu as deux possibilités, soit tu créés une table du resultat, soit tu créés directement une requete (qui sera effacé a chaque fois, logique)
 
Pour créer la requete :

Code :
  1. On Error Resume Next
  2.     'On créé la requete sql directement. Et on passe l'operateur en parametre.
  3.     InstrSQL = "SELECT Table.Num, Table.Date" & _
  4.     "FROM [Table]" & _
  5.     "WHERE (((Table.Date)" & Forms("Formulaire1" )("Operateur1" ) & "[Formulaires]![Formulaire1]![SDate1]));"
  6.    
  7.     'On supprime la requete créée precedemment
  8.     DoCmd.DeleteObject acQuery, "NomDeTaRequete"
  9.     'on la recrée
  10.     CurrentDb.CreateQueryDef "NomDeTaRequete", InstrSQL


 
Pour créer une table, autant passer directement par une requete ajout :

Code :
  1. On Error Resume Next
  2.     'On créé la requete sql directement. Avec un INTO pour créer ta table, et on passe l'operateur en parametre.
  3.     InstrSQL = "SELECT Table.Num, Table.Date INTO NomDeTaTable" & _
  4.     "FROM [Table]" & _
  5.     "WHERE (((Table.Date)" & Forms("Formulaire1" )("Operateur1" ) & "[Formulaires]![Formulaire1]![SDate1]));"
  6.    
  7.     'On supprime la requete créée precedemment
  8.     DoCmd.DeleteObject acQuery, "NomDeTaRequete"
  9.     'on la recrée
  10.     CurrentDb.CreateQueryDef "NomDeTaRequete", InstrSQL


Message édité par SuppotDeSaTante le 05-05-2010 à 15:59:39

---------------
Soyez malin, louez entre voisins !
n°1990695
alex'78
Posté le 06-05-2010 à 09:53:24  profilanswer
 

Salut,
 
Déja merci pour ta réponse ( j'ai crée un nouveau topic parce que c'est un problème différent de l'autre, mais tu as raison la prochaine fois je mettrais à la suite ^^ ),
Alors je l'ai testé ( méthode de la création d'une Table de résultat du Test )
 

Code :
  1. Private Sub AffichListe_Click()
  2. On Error Resume Next
  3.     'On créé la requete sql directement. Avec un INTO pour créer ta table, et on passe l'operateur en parametre.
  4.     InstrSQL = "SELECT Table0.Date INTO TableResult" & _
  5.     "FROM Table0" & _
  6.     "WHERE (((Table0.Date)" & Forms("Choix de Visualisation" )(TestChamp5) & "[Formulaires]![Choix de Visualisation]![ValChamp5]));"
  7.     'On supprime la requete créée precedemment
  8.     DoCmd.DeleteObject acQuery, "Requête1"
  9.     'on la recrée
  10.     CurrentDb.CreateQueryDef "Requête1", InstrSQL
  11. End Sub


 
J'ai pas compris pourquoi tu as mis "Table.Num", enfin je pense que c'est ds le cas où je test sur plusieurs Champs de ma Table non ? Dans le doute je l'ai enlevé,
Sinon, lorsque je clique sur mon Bouton après avoir rentré par exemple ">" dans TestChamp5 et "01/11/2009" dans ValChamp5, rien ne se passe, la requête qui était créée auparavant "Requête1" se supprime donc c'est normal c'est le code, mais après elle ne se recréée pas =S
Si tu as une idée du pourquoi ?

n°1990713
SuppotDeSa​Tante
Aka dje69r
Posté le 06-05-2010 à 10:25:27  profilanswer
 

Deja ce que je peux voir c'est que la syntaxe de ta clause Where n'est pas bonne
 
"WHERE (((Table0.Date)" & Forms("Choix de Visualisation" )("TestChamp5") & "[Formulaires]![Choix de Visualisation]![ValChamp5]));"
 
Essaie deja comme cela.
 
 
Ensuite, tu as un On Error Resume Next donc tu ne peux pas voir où se situe l'erreur.
 
Tiens moi au parfum.


Message édité par SuppotDeSaTante le 06-05-2010 à 10:30:38

---------------
Soyez malin, louez entre voisins !
n°1990745
alex'78
Posté le 06-05-2010 à 10:51:51  profilanswer
 

J'ai modifié la syntaxe, et j'ai mis "On Error go to suite  
[ .... ]
suite : Err.Description
Exit Sub"
 
Et l'erreur affichée est la suivante : "La Requête doit être construite à partir d'au moins une Table ou une requête Source", il supprime bien la table donc l'erreur doit se produire au moment où il la recrée,
 
Pourtant l'instruction "CurrentDb.CreateQueryDef "Requête1", InstrSQL" devrait lui fournir le texte SQL qu'on a défini et qui contient une Table Source :/ nan ?
 
Petite question en passant, la table resultat "TableResult" doit déja être crée au préalable ? ( Edit : Dans le doute j'ai crée "TableResult", il m'affiche la même erreur )


Message édité par alex'78 le 06-05-2010 à 10:57:33
n°1990784
SuppotDeSa​Tante
Aka dje69r
Posté le 06-05-2010 à 11:16:02  profilanswer
 

C'est ta syntaxe.
 
Essaie de faire un Debug.Print InstrSQL et tu verras par exemple que  

Code :
  1. FROM Table0" & _
  2.     "WHERE


te donne FROM Table0WHERE
Il manque donc un espace entre Table0 et WHERE
 
Ensuite moi je créeais la requete pour te montrer ce qu'elle faisait... Pour que tu vois a quoi ressemble requete1
Mais ca ne sert a rien de se taper la commande SQL pour créer une requete1 pour finalement la lancer...
Autant lancer directement la commande SQL...!
 

Code :
  1. On Error Resume Next
  2.    
  3.     'On eleve les messages de confiramtion de creation de table
  4.     DoCmd.SetWarnings False
  5.    
  6.     'Syntaxe de notre commmande sql
  7.     InstrSQL = "SELECT Table0.Date INTO TableResult " & _
  8.     "FROM Table0 " & _
  9.     "WHERE (((Table0.Date)" & Forms("Choix de Visualisation" )("TestChamp5" ) & "[Formulaires]![Choix de Visualisation]![ValChamp5]));"
  10.    
  11.     'On lance la commande SQL et tu auras ta table TableResult de créée
  12.     DoCmd.RunSQL InstrSQL
  13.    
  14.     '******************************
  15.     'Cette partie la c'est si tu veux voir a quoi ressemble la requete créé a partir de la commande SQl
  16.    
  17.     'On supprime la requete créée precedemment
  18.     'DoCmd.DeleteObject acQuery, "Requête1"
  19.     'on la recrée
  20.     'CurrentDb.CreateQueryDef "Requête1", InstrSQL
  21.     '******************************


 
Edit :
En image, ma table0 contient les dates du 01/05/2010 au 31/05/2010, le formulaire demande les dates <06/05/2010 et je me retrouve avec ca :
http://dje69r.free.fr/alex78-2.JPG


Message édité par SuppotDeSaTante le 06-05-2010 à 11:43:10

---------------
Soyez malin, louez entre voisins !
n°1990828
alex'78
Posté le 06-05-2010 à 11:46:43  profilanswer
 

Ha c'est nickel ça fonctionne ! Merci beaucoup pour ton aide !
 
Je me demandais aussi parallèlement à ça si c'est possible de faire en sorte que l'instruction dans la requête s'adapte en fonction de la table Sélectionnée ( dans la Liste Déroulante de Tables ), je sais pas si je m'exprime bien, par exemple là ça fonctionne pour la Table0 que j'ai sélectionné, mais si je change de table et que je selectionne Table1, la requête m'affichera toujours dans TableResult les résultats pour la Table0.
 
Et de manière général, là je parle pour tout ce qui est "Date" dans mon Formulaire mais ma question se pose également pour toutes les autres listes déroulantes que j'ai ( pour Contact, la liste déroulante affiche tt les contacts, mais pareille si je change de table sélectionnée la liste m'affichera toujours les contacts de Table0, etc.. ), je me demandais donc s'il y a une manière de procéder là dessus..
 
Tu as une idée ?

n°1990912
SuppotDeSa​Tante
Aka dje69r
Posté le 06-05-2010 à 14:08:45  profilanswer
 

Euh... It's a joke ?
 
Tu as tous les éléments en main là pour faire ce que tu veux... Si tu n'y arrives pas c'est que tu n'as pas compris ce que faisait "InstrSQL ="
 
Explication :
 
    InstrSQL = "SELECT Table0.Date INTO TableResult " & _
    "FROM Table0 " & _
    "WHERE (((Table0.Date)" & Forms("Choix de Visualisation" )("TestChamp5" ) & "[Formulaires]![Choix de Visualisation]![ValChamp5]));"
 
Ce qui apparait en rouge permet de sortir de la syntaxe de la requete pour y mettre une valeur. Mais une requete sql ce n'est ni plus ni moins qu'une chaine (de texte)
 
Par exemple imaginons une chaine :
Chaine = "Toto est la bas"
Sur un formulaire nommé "formulaire1" tu as controle nommé "Textbox" qui contient un prénom que tu veux changer.
Pour changer ce que retourne ta chaine il suffit de faire
Chaine = Forms("formulaire1" )("Textbox" ) & " est la bas"
 
C'est pareil avec la chaine de la requete. Normalement la seconde ligne devrait etre
"WHERE (((Table0.Date) < [Formulaires]![Choix de Visualisation]![ValChamp5]));"
mais comme tu veux passer en parametre les opérateurs, on remplace "<" par :
Forms("Choix de Visualisation" )("TestChamp5" )
 
Pour t'en convaincre, créé une requete avec l'editeur de requete d'access, et tu vas en mode SQL
 
Donc pour passer en parametre le nom de ta table il suffit juste de changer la chaine "table0" par un parametre, en l'occurence un controle de ton formulaire.
Ce qui donnerait :
    InstrSQL = "SELECT " & Forms("Choix de Visualisation" )("NomDeTonChamp" ) & ".Date INTO TableResult " & _
    "FROM " & Forms("Choix de Visualisation" )("NomDeTonChamp" ) & " " & _
    "WHERE (((" & Forms("Choix de Visualisation" )("NomDeTonChamp" ) & ".Date)" & Forms("Choix de Visualisation" )("TestChamp5" ) & "[Formulaires]![Choix de Visualisation]![ValChamp5]));"
 
En bleu, on remplace donc Table0 par & Forms("Choix de Visualisation" )("NomDeTonChamp" ) &
Et pour ca, le mieux, c'est Notepad ;)


---------------
Soyez malin, louez entre voisins !
n°1990918
SuppotDeSa​Tante
Aka dje69r
Posté le 06-05-2010 à 14:15:26  profilanswer
 

Et c'est pareil pour tout. L'ordre de tri (ORDER BY), renvoi de boolen etc.
 
Logiquement si tu as compris ce que j'ai mis en haut, tu devrais pouvoir meme passer le nom de ton formulaire en parametre, ainsi que le nom du ou des controles.
Ce qui fait que pour tout tes traitements, une seule fonction avec une chaine SQl suffit.


Message édité par SuppotDeSaTante le 06-05-2010 à 14:16:14

---------------
Soyez malin, louez entre voisins !
n°1990924
alex'78
Posté le 06-05-2010 à 14:23:36  profilanswer
 

:o c'est aussi simple que ça ? j'y avais pas pensé j'avais essayé de faire ça mais j'avais mis quelque chose du genre "SELECT [Formulaire]![Choix de Visualisation]![ListeTable].Date" ou d'autres variantes dans le genre mais ça fonctionnait pas évidemment ^^", ne connaissant pas les syntaxes c'était pas évident, mais maintenant oui j'ai compris, j'ai déja commencé à appliquer cette méthode et cette logique pour tout le reste, je posterais sur ce Topic si je rencontre une difficulté.
Merci beaucoup pour ton aide tu m'as vraiment bien fait avancer =)

mood
Publicité
Posté le 06-05-2010 à 14:23:36  profilanswer
 

n°1990925
SuppotDeSa​Tante
Aka dje69r
Posté le 06-05-2010 à 14:24:18  profilanswer
 
n°1990957
alex'78
Posté le 06-05-2010 à 16:00:32  profilanswer
 

J'ai un petit soucis, c'est pas en rapport avec le SQL, le code fonctionne très bien si ma Table se nomme genre "Table0" mais, c'est dans mon formulaire "Importation de Fichier" avec le Bouton que j'ai crée qui importe des Fichiers Excel :  
 

Code :
  1. Private Sub ImportXlAcc_Click()
  2. On Error GoTo suite
  3. a4 = Right(ZoneTexte, Len(ZoneTexte) - InStrRev(ZoneTexte, "." ))
  4. If a4 = "xlsx" Xor a4 = "xls" Then
  5. DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Table", ZoneTexte, True
  6. DoCmd.Rename "Table_" & Now(), acTable, "Table"
  7. DoCmd.OpenForm "Choix de Visualisation", acNormal
  8. Else: MsgBox "Le Fichier n'est pas en format Excel, la conversion est donc inutile, vous pouvez l'ouvrir."
  9. End If
  10. suite: Exit Sub
  11. End Sub


 
A Chaque importation le Fichier à un nom différent du style "Table_06/05/2010 15:20" ce qui me permet d'en importer indéfiniement sans que la nouvelle Table importée s'ajoute aux enregistrements de la Table précedente. Le problème c'est qu'avec un nom comme celà le code ne marche plus il me met qu'il y a une erreur ds la clause FROM alors qu'avec Table0 il n'y a pas de soucis, c'est à cause des caractères "_ / :" ?
 
Si oui, alors il ne faut plus que j'utilise cette méthode pour pouvoir importer plusieurs tables distinctement et du coup j'avais pensé à quelque chose avec une boucle For, une variable I et ça ferait du style ""Table" & I" avec I qui varierait de 0 à je sais pas combien, autant qu'il y a d'importation quoi et qui s'incrémenterait à chaque fois, mais encore une fois la syntaxe ET la mise en forme (oui parce que j'ai qd même arpenté l'aide access voir comment la boucle For fonctionne mais bon ^^" ) me font défauts donc je n'ai pas reussi...
Bisarrement je sens que la solution est très conne mais je suis vraiment à la masse là dedans..
 
Peux-tu m'aider stp ?

n°1990966
SuppotDeSa​Tante
Aka dje69r
Posté le 06-05-2010 à 16:35:40  profilanswer
 

Créé une requete avec l'editeur de requete d'access.
Tu ajoutes ta table "Table_06/05/2010 15:20", tu mets un champ pour affichage.
Tu bascule en mode sql et la tu te rends compte qu'il l'ecrit comme ca :
SELECT [Table_06/05/2010 15:20].Date
FROM [Table_06/05/2010 15:20];
 
Tu n'as donc qu'a rajouter des crochets de part et d'autre de ta valeur.
Ce qui donnerait pour la 1ere ligne :
InstrSQL = "SELECT [" & Forms("Choix de Visualisation" )("NomDeTonChamp" ) & "].Date INTO TableResult " & _  
 
Tu devrais vraiment regarder comment fait Access pour ecrire en SQL avec l'editeur de requete... Parceque la tu te prends la tete sur des trucs que l'editeur de requete te montre tres tres facilement


Message édité par SuppotDeSaTante le 06-05-2010 à 16:36:15

---------------
Soyez malin, louez entre voisins !
n°1991142
alex'78
Posté le 07-05-2010 à 10:12:25  profilanswer
 

Oui encore une fois c'était très simple =s je te remercie, voila le code final sur le Bouton :  
 

Code :
  1. Private Sub AffichListe_Click()
  2. On Error GoTo suite
  3.     'On eleve les messages de confiramtion de creation de table
  4.     DoCmd.SetWarnings False
  5.     'Syntaxe de notre commmande sql
  6. If Coche_5 = True Then
  7.     If OperEt5 = True Then
  8.     InstrSQL = "SELECT All [" & Forms("Choix de Visualisation" )("ListeTable" ) & "].* INTO TableResult " & _
  9.     "FROM [" & Forms("Choix de Visualisation" )("ListeTable" ) & "] " & _
  10.     "WHERE ((([" & Forms("Choix de Visualisation" )("ListeTable" ) & "].Date)" & Forms("Choix de Visualisation" )("TestChamp5" ) & "[Formulaires]![Choix de Visualisation]![ValChamp5]) And (([" & Forms("Choix de Visualisation" )("ListeTable" ) & "].Date)" & Forms("Choix de Visualisation" )("Test2Champ5" ) & "[Formulaires]![Choix de Visualisation]![Val2Champ5]));"
  11.     'Correspond à Activé=true, ET=true
  12.     'On lance la commande SQL et tu auras ta table TableResult de créée
  13.     DoCmd.RunSQL InstrSQL
  14.    
  15.             Else: InstrSQL = "SELECT All [" & Forms("Choix de Visualisation" )("ListeTable" ) & "].* INTO TableResult " & _
  16.             "FROM [" & Forms("Choix de Visualisation" )("ListeTable" ) & "] " & _
  17.             "WHERE ((([" & Forms("Choix de Visualisation" )("ListeTable" ) & "].Date)" & Forms("Choix de Visualisation" )("TestChamp5" ) & "[Formulaires]![Choix de Visualisation]![ValChamp5]));"
  18.             'Correspond à Activé=true, ET=false
  19.             DoCmd.RunSQL InstrSQL
  20.     End If
  21.    
  22.     If OpérOu5 = True Then
  23.     InstrSQL = "SELECT All [" & Forms("Choix de Visualisation" )("ListeTable" ) & "].* INTO TableResult " & _
  24.     "FROM [" & Forms("Choix de Visualisation" )("ListeTable" ) & "] " & _
  25.     "WHERE ((([" & Forms("Choix de Visualisation" )("ListeTable" ) & "].Date)" & Forms("Choix de Visualisation" )("TestChamp5" ) & "[Formulaires]![Choix de Visualisation]![ValChamp5]) Or (([" & Forms("Choix de Visualisation" )("ListeTable" ) & "].Date)" & Forms("Choix de Visualisation" )("Test2Champ5" ) & "[Formulaires]![Choix de Visualisation]![Val2Champ5]));"
  26.     'Correspond à Activé = True, OU=True, et pas d'instruction pour Activé=true, OU=false car <=> Activé=true, ET=false
  27.     'On lance la commande SQL et tu auras ta table TableResult de créée
  28.     DoCmd.RunSQL InstrSQL
  29.    
  30.     End If
  31.    
  32. Else: GoTo suite2
  33. End If
  34.     Exit Sub
  35.    
  36. suite:     MsgBox Err.Description
  37. Exit Sub
  38. suite2:    MsgBox "Critère non Activé"
  39.    
  40.     '******************************
  41.     'Cette partie la c'est si tu veux voir a quoi ressemble la requete créé a partir de la commande SQl
  42.     'On supprime la requete créée precedemment
  43.     'DoCmd.DeleteObject acQuery, "Requête1"
  44.     'on la recrée
  45.     'CurrentDb.CreateQueryDef "Requête1", InstrSQL
  46. End Sub


 
Par contre c'est vraiment lourd au niveau de la syntaxe entre le taper sur les procédures VBA et dans les requêtes, en faisant des copiés collés de ce que j'ai mis ds le code VBA dans les lignes SQL des requêtes ( et en enlevant bien sur tt les trucs inadequate genre les "" au début et fin les & _ etc.. ) il me met des erreurs de syntaxe... alors par exemple là pour ma liste déroulante des Contacts avant j'avais mis ça  
"SELECT DISTINCT Table0.Contact FROM Table0;" pas de soucis, je mets ça "SELECT DISTINCT [" & Forms("Choix de Visualisation" )("ListeTable" ) & "].Contact FROM [" & Forms("Choix de Visualisation" )("ListeTable" ) & "];", il me dit que l'objet est introuvable, je rajoute des guillemets j'en enlève je test tout et pourtant ça fonctionne pas, il rajoute du coup "AS Expr1" devant la ligne enfin c'est vraiment prise de tête...
 
J'ai également essayer de passer par du code VBA :  
 

Code :
  1. Private Sub ListeTable_AfterUpdate()
  2. 'Renvoi en cas d'erreur
  3.     On Error GoTo erreur
  4.    
  5.     InstrSQL = "SELECT DISTINCT [" & Forms("Choix de Visualisation" )("ListeTable" ) & "].Contact " & _
  6.     "From [" & Forms("Choix de Visualisation" )("ListeTable" ) & "];"
  7.     Me.TestChamp2.RowSource = InstrSQL
  8.     DoCmd.RunSQL InstrSQL
  9.    
  10. 'On ouvre un recordset de la table sélectionnée dns la pioche
  11.     Set TPioche = CurrentDb.OpenRecordset(Forms("Choix de Visualisation" )("ListeTable" ))
  12. 'On recupere le nombre de champ de la pioche
  13. [.....]
  14. End Sub


 
Il m'affiche : "l'action ExecuterSQL nécessite un argument consistant en une instruction SQL" Mais ça fonctionne quand même oO, j'ai essayé de mettre "DoCmd.SetWarnings False" juste avant il me l'affiche encore..
 
Edit : J'ai mis "On Error Resume Next" il n'y a plus le message donc a priori c'est bon ^^


Message édité par alex'78 le 07-05-2010 à 10:40:37
n°1991184
SuppotDeSa​Tante
Aka dje69r
Posté le 07-05-2010 à 11:18:22  profilanswer
 

C'est pas parceque tu n'as plus le message que ca fonctionne hein...
 
Et normal dans l'instruction SQL du generateur de requete, ca ne se construit pas comme ca...
 
Parcontre ton InstrSQL, a vue de nez a l'air d'etre bon...
Essaie de faire un Debug.Print InstrSQL juste apres la definition de InstrSQL pour voir ce que renvoi la chaine exactement...


---------------
Soyez malin, louez entre voisins !
n°1991696
alex'78
Posté le 10-05-2010 à 10:18:28  profilanswer
 

Bonjour,
 
Il me met l'erreur pour chaque instrSQL, je te mets la chaine exact : "SELECT DISTINCT [Table0].N°, [Table0].Contact FROM [Table0] WHERE (((Table0.Contact) = [Formulaires]![Choix de Visualisation]![TestChamp2]));"
Donc à priori il n'y a pas l'air d'avoir d'erreurs mais bon, ( j'ai pas utiliser Debug.Print InstrSQL il ne m'affichait rien j'ai mis MsgBox InstrSQL ), mais bon s'il me fait quand même ce que je veux c'est pas bien grave nan ?
 
A part ça, je me demandais si tu connaissais pas un moyen de créer un Bouton qui, sur clique, permettrait d'Enregistrer la TableResult sur le PC dans le format au choix ( Excel ou Texte ) ?
 
(Edit : Je suis aller voir ça : http://access.developpez.com/faq/? [...] oitEnregSs mais le code est compliqué je sais pas comment le faire fonctionner =S, il m'ouvre la fenêtre d'enregistrement ok mais je ne sais pas quoi modifier pour qu'il enregistre TableResult au format ".xls" par exemple.. )


Message édité par alex'78 le 10-05-2010 à 11:28:16
n°1991738
SuppotDeSa​Tante
Aka dje69r
Posté le 10-05-2010 à 11:56:20  profilanswer
 

Hello
 
Alors déjà [Table0].N° ca va pas le faire. Le "°" ne passe pas. Il faudrait [Table0].[N°] ou utiliser des symboles autorisés en SQL. l'underscore etc.
 
Pour exporter en XLS c'est pas bien compliqué en utilisant la commande :
DoCmd.TransferSpreadsheet
 
Apres tout depend de ce que tu veux, genre tu cliques sur un bouton, pouf ta table est directement mise dans un dossier defini.
Ou alors si tu veux qu'une boite de dialogue s'ouvre pour que tu selectionnes où mettre le fichier, quel  nom lui donner etc. Et là c'est le lien que tu as donné.
 
Mais si tu connais le nom du fichier et son chemin, sans avoir a le passer en parametre, le DoCmd.TransferSpreadsheet devrait te suffire.
 
Exemple pour transferer en Excel, sous C:\Toto.xls la table TableResult  
DoCmd.TransferSpreadsheet acExport, 8, "TableResult" , "C:\Toto.xls", True, ""


Message édité par SuppotDeSaTante le 10-05-2010 à 11:58:47

---------------
Soyez malin, louez entre voisins !
n°1991758
alex'78
Posté le 10-05-2010 à 13:38:08  profilanswer
 

Ok c'est bon j'ai effectué les modifications par rapport au caractère inutilisable, merci pour la remarque.
Après j'avais pensé aussi à faire un export via la commande TransfertSpreedSheat, c'est le moyen le + simple et le + rapide,
 
Cependant, c'est quand même + interactif de pouvoir choisir soi-même sa destination etc.. c pour ça que le code du site m'interesse particulièrement, j'aurais aimé comprendre ce code, bon j'ai copié collé le code du haut dans un module, et je suppose que la dernière ligne "msgbox ....." c'est à mettre par exemple sur Evenement "clique" du bouton, mais je vois pas quoi modifier pour qu'il fasse ce que je veux en particulier :  
 
"MsgBox EnregistrerUnFichier(Me.hwnd, "Enrégistrer sous", "TableResult.xls" ???, "C:\" )" et pourquoi mettre MsgBox, qd je fais ça, il ouvre la Fênetre de Navigation, je choisis le dossier où l'enregistrer ( en nom par défaut il y a donc TableResult et en format il y a "Tous (*.*)" ), et quand j'appuie sur Enregistrer, bah il ya le MsgBox qui affiche le Chemin du fichier et rien ne se passe, le fichier n'a pas été enregistré, je suppose que c'est normal le code doit faire ça, mais on doit pouvoir ajouter quelque chose ou modifier qlq chose pour que ça l'enregistre nan ?

n°1991771
SuppotDeSa​Tante
Aka dje69r
Posté le 10-05-2010 à 14:08:00  profilanswer
 

Tu n'as pas besoin d'un msgbox, puisque le code deja lui ouvre la boite "enregistrer sous", le msgbox, ici, te permet de voir le chemin et le nom de fichier que tu viens de créer.
 
Il te suffit d'affecter a une variable le resultat de la fonction.
Ex :
a = EnregistrerUnFichier(Me.hWnd, "", "", "c:\" )
 
Mais il faut aussi parametrer la fonction EnregistrerUnFichier pour proposer les .xls :
cherche et modifie la variable lpstrFilter :
.lpstrFilter = "Excel (*.xls)" & Chr$(0) & "*.xls" & Chr$(0) 'Définition du filtre (aucun)
 
Ensuite tu fais ton export de ta table, ou "a" est la variable du chemin+nom de fichier (mais il n'y a pas l'extension, il faut donc la rajouter)
DoCmd.TransferSpreadsheet acExport, 8, "TableResult" , a & ".xls", True, ""


Message édité par SuppotDeSaTante le 10-05-2010 à 14:09:02

---------------
Soyez malin, louez entre voisins !
n°1991799
alex'78
Posté le 10-05-2010 à 14:45:50  profilanswer
 

Ca fonctionne niquel, je commence à mieux comprendre un p'tit peu cette logique, c'est vrai que expliqué comme ça, ça semble clair comme de l'eau de roche mais j'aurais jamais trouvé ^^"..
En tt cas merci beaucoup pour ta patience et pour ton aide précieuse !!

n°1991804
SuppotDeSa​Tante
Aka dje69r
Posté le 10-05-2010 à 14:53:03  profilanswer
 

Aucun souci le forum c'est fait pour ca ;)
 
Ravi d'avoir pu te filer un coup de pouce :jap:


---------------
Soyez malin, louez entre voisins !
n°1996363
alex'78
Posté le 27-05-2010 à 09:34:40  profilanswer
 

Bonjour, bon depuis le tps j'ai finalisé ma page il ne manque plus qu'à terminer l'instruction SQL que je construis par partie avec une boucle, mais là je galère sur la partie ORDER BY qui est assez lourde à mettre en place, je te link le code :  
 

Code :
  1. Private Sub AffichListe_Click()
  2. DoCmd.Close acForm, "Liste de Visualisation"
  3. DoCmd.Close acTable, "ListeVisualisation"
  4. On Error GoTo suite
  5.     'On enleve les messages de confirmation de creation de table
  6.    
  7.     DoCmd.SetWarnings False
  8. txt = Forms("Choix de visualisation" )("ListeTable" ) 'txt contient ce qui concerne FROM
  9. Cpteur = 1 'Variable pour parcourir chaque ligne
  10. 'condition : tant que la zone texte avec le Nom du Champ est non nul
  11.     Do While Forms("Choix de Visualisation" )("Champ" & Cpteur) <> ""
  12.    
  13.            
  14.     'Raccourcis pour alléger la lecture et l'écriture
  15.    
  16.             txtv = Forms("Choix de visualisation" )("ValChamp" & Cpteur)
  17.             txtc = Forms("Choix de visualisation" )("Champ" & Cpteur)
  18.             txtx = Forms("Choix de visualisation" )("Texte" & Cpteur)
  19.             txtx2 = Forms("Choix de visualisation" )("Texte2" & Cpteur)
  20.             txtv2 = Forms("Choix de Visualisation" )("Val2Champ" & Cpteur)
  21.             txtt = Forms("Choix de Visualisation" )("TestChamp" & Cpteur)
  22.             txtt2 = Forms("Choix de Visualisation" )("Test2Champ" & Cpteur)
  23.            
  24.     'Partie SELECT de la requête SQL si aucun tri est effectué
  25.    
  26.         If Forms("Choix de visualisation" )("Coche_" & Cpteur) = True Then
  27.             txt1 = txt1 & "[" & txtc & "]" & " ,"
  28.             'MsgBox txt1
  29.         End If
  30.        
  31.     'Partie WHERE de la requête SQL
  32.    
  33.         If Forms("Choix de Visualisation" )("OpérOu" & Cpteur) = True Then
  34.            
  35.             If Forms("Choix de Visualisation" )("ValChamp" & Cpteur) <> "" Or Forms("Choix de Visualisation" )("Val2Champ" & Cpteur) <> "" Then
  36.                
  37.                 If Forms("Choix de visualisation" )("Champ" & Cpteur) = "N°" Then
  38.                    
  39.                     txt2 = txt2 & "(" & txt & "." & txtc & txtt & txtv & _
  40.                         " or " & txt & "." & txtc & txtt2 & txtv2 & " )" & " And "
  41.                 Else
  42.                     txt2 = txt2 & "(" & txt & "." & txtc & txtt & "'" & txtv & "'" & _
  43.                         " or " & txt & "." & txtc & txtt2 & "'" & txtv2 & "'" & " )" & " And "
  44.                     'MsgBox txt2
  45.                 End If
  46.                    
  47.             ElseIf Forms("Choix de Visualisation" )("Texte" & Cpteur) <> "" And Forms("Choix de Visualisation" )("Texte2" & Cpteur) <> "" Then
  48.                     txtx = MakeUSDate(Me("Texte" & Cpteur))
  49.                     txtx2 = MakeUSDate(Me("Texte2" & Cpteur))
  50.                     txt2 = txt2 & "(" & txt & "." & txtc & txtt & txtx & _
  51.                         " or " & txt & "." & txtc & txtt2 & txtx2 & " )" & " And "
  52.                     'MsgBox txt2
  53.                    
  54.             ElseIf Not Forms("Choix de Visualisation" )("Texte2" & Cpteur) Then
  55.                     txtx = MakeUSDate(Me("Texte" & Cpteur))
  56.                     txtx2 = MakeUSDate(Me("Texte2" & Cpteur))
  57.                     txt2 = txt2 & "(" & txt & "." & txtc & txtt & txtx2 & " )" & " And "
  58.                    
  59.             ElseIf Not Forms("Choix de Visualisation" )("Texte" & Cpteur) Then
  60.                     txtx = MakeUSDate(Me("Texte" & Cpteur))
  61.                     txtx2 = MakeUSDate(Me("Texte2" & Cpteur))
  62.                     txt2 = txt2 & "(" & txt & "." & txtc & txtt & txtx & " )" & " And "
  63.            
  64.             End If
  65.            
  66.         ElseIf Forms("Choix de Visualisation" )("OperEt" & Cpteur) = True Then
  67.        
  68.             If Forms("Choix de Visualisation" )("ValChamp" & Cpteur) <> "" Or Forms("Choix de Visualisation" )("Val2Champ" & Cpteur) <> "" Then
  69.                
  70.                 If Forms("Choix de visualisation" )("Champ" & Cpteur) = "N°" Then
  71.                     txt2 = txt2 & "(" & txt & "." & txtc & txtt & txtv & _
  72.                         " And " & txt & "." & txtc & txtt2 & txtv2 & " )" & " And "
  73.                 Else
  74.                     txt2 = txt2 & "(" & txt & "." & txtc & txtt & "'" & txtv & "'" & _
  75.                         " And " & txt & "." & txtc & txtt2 & "'" & txtv2 & "'" & " )" & " And "                       'MsgBox txt2
  76.                 End If
  77.                    
  78.             ElseIf Forms("Choix de Visualisation" )("Texte" & Cpteur) <> "" Or Forms("Choix de Visualisation" )("Texte2" & Cpteur) <> "" Then
  79.                
  80.                 txtx = MakeUSDate(Me("Texte" & Cpteur))
  81.                 txtx2 = MakeUSDate(Me("Texte2" & Cpteur))
  82.                 txt2 = txt2 & "(" & txt & "." & txtc & txtt & txtx & _
  83.                     " And " & txt & "." & txtc & txtt2 & txtx2 & " )" & " And "
  84.                     'MsgBox txt2
  85.                    
  86.             End If
  87.         End If
  88.        
  89.     'Partie ORDER BY de la requête SQL, Si on veut effectuer un tri, le numéro doit définir quel champ sera mis en premier, donc il doit également agir sur le SELECT..
  90.    
  91.     If Forms("Choix de visualisation" )("Coche_" & Cpteur) = True Then
  92.    
  93.         If Forms("Choix de visualisation" )("TrinumDéCrois" & Cpteur) = "1" Then
  94.             txt3 = txt3 & txtc & " DESC,"
  95.         ElseIf Forms("Choix de visualisation" )("TrinumCrois" & Cpteur) = "1" Then
  96.             txt3 = txt3 & txtc & " ,"
  97.         End If
  98.        
  99.         If Forms("Choix de visualisation" )("TrinumDéCrois" & Cpteur) = "2" Then
  100.             txt1 = txtc & " ," & txt1
  101.             txt3 = txt3 & txtc & " DESC,"
  102.         ElseIf Forms("Choix de visualisation" )("TrinumCrois" & Cpteur) = "2" Then
  103.             txt1 = txtc & " ," & txt1
  104.             txt3 = txt3 & txtc & " ,"
  105.         End If
  106.    
  107.     End If
  108.    
  109.     'Gestion des Erreurs
  110.    
  111.     If Forms("Choix de Visualisation" )("TriNumCrois" & Cpteur) = Forms("Choix de Visualisation" )("TriNumCrois" & Cpteur + 1) Then
  112.         MsgBox "Erreur, il n'y peut pas y avoir deux numéros identiques dans l'ordre de tri."
  113.         Exit Sub
  114.     End If
  115.    
  116.     If Forms("Choix de Visualisation" )("TriNumCrois" & Cpteur) = (Forms("Choix de Visualisation" )("TriNumDécrois" & Cpteur) Or Forms("Choix de Visualisation" )("TriNumDécrois" & Cpteur + 1)) Then
  117.         MsgBox "Erreur, le tri ne peut pas être à la foi croissant et décroissant."
  118.         Exit Sub
  119.     End If
  120.             Cpteur = Cpteur + 1
  121.     Loop
  122. 'lorsqu'on sort de la boucle théoriquement il n'y a plus rien à rajouter, donc on supprime tt les caractères en trop "," "And" etc..
  123.    
  124.     txt1 = Left(txt1, InStrRev(txt1, Right(txt1, 2)))
  125.     txt2 = Left(txt2, InStrRev(txt2, Right(txt2, 6)))
  126.     txt3 = Left(txt3, InStrRev(txt3, Right(txt3, 2)))
  127. 'On Rassemble ttes les parties
  128.    
  129.     InstrSQL = "SELECT " & txt1 & " INTO ListeVisualisation " & _
  130.         "FROM " & txt & " " & _
  131.         "WHERE (" & txt2 & " ) " & _
  132.         "ORDER BY " & txt3 & ""
  133.        
  134. 'Si on ne définit pas d'ordre de Tri cette instruction supprime le ORDER BY
  135.    
  136.     If txt3 = "" Then
  137.     InstrSQL = Left(InstrSQL, InStrRev(InstrSQL, Right(InstrSQL, 11)))
  138.     End If
  139. InstrSQL = InstrSQL & ";"
  140. MsgBox InstrSQL
  141. DoCmd.RunSQL InstrSQL
  142. DoCmd.OpenTable "ListeVisualisation"
  143. Exit Sub
  144.    
  145. suite:     MsgBox Err.Description
  146. Exit Sub
  147. End Sub


 
Alors niveau nomenclature, ValChamp et Val2Champ correspond à la valeur du critère (en liste déroulante), Texte et Texte2 c'est la valeur du critère qd le champ est une Date (en zone de texte), TestChamp et Test2Champ c'est l'opérateur utilisé, OperOu c'est la case à cocher pour le OU, OperEt c'est la case à cocher pour le ET, Coche_ c'est la case à cocher lorsqu'on veut afficher le champ ds la requête, Trinumcrois c'est lorsqu'on veut trier par ordre croissant, TrinumDécrois par ordre décroissant.
MakeUSDate c'est une fonction ds un module pour convertir la date format anglais parce que ça fonctionnait pas lorsque je laissais la date en français le code si besoin :  

Code :
  1. Function MakeUSDate(dDate As Variant)
  2.     If Not IsDate(dDate) Then Exit Function
  3.     MakeUSDate = "#" & Month(dDate) & "/" & Day(dDate) & "/" & Year(dDate) & "#"
  4. End Function


 
Bon là la partie ORDER BY est un essai qui ne marche pas vraiment, en effet cette partie doit non seulement gérer la partie croissant ou décroissant, mais aussi l'ordre d'affichage donc elle doit agir aussi sur le SELECT, j'ai pensé à mettre la partie ORDER BY avant la partie SELECT ou carrement d'inclure la partie SELECT ds celle ORDER BY en Elseif, mais à coté de ça c'est vraiment au niveau du triage que je bloque pour qu'il prenne en compte tt les cas possibles...
Si tu as des idées je suis tout ouïe ^^, j'éditerais si je pense avoir oublié des infos utiles, voila.


Message édité par alex'78 le 27-05-2010 à 09:37:30
n°1996373
SuppotDeSa​Tante
Aka dje69r
Posté le 27-05-2010 à 10:28:51  profilanswer
 

Alors deja pour gerer moulte cas possible le plus simple c'est quand meme de passer par un select case
 
Ensuite essaie de voir ce que renvoi ta chaine InstrSQL avec un Debug.Print InstrSQL


---------------
Soyez malin, louez entre voisins !
n°1996395
alex'78
Posté le 27-05-2010 à 11:18:11  profilanswer
 

D'accord alors j'ai regardé l'aide associée à cette instruction, elle est utile apparement, donc pour mon cas, la variable à tester serait Forms("Choix de Visualisation" )("TriNumCrois" & Cpteur), et euuuh ensuite les blocs d'instruction je met tous les cas possibles ? nan il y en aurait trop...  
Ha ouai mais la variable à tester c'est pas que Forms("Choix de Visualisation" )("TriNumCrois" & Cpteur), si cpteur =1 il va tester celle-ci avec d'autres sauf que faudrait qu'il en teste plusieurs à la fois nan ? Par exemple si TriNumcrois3 = "2", TriNumcrois 6 = "1" et TriNumCrois5 = "3", jvois pas du tout comment construire l'instruction pour avoir au final le Champ6 en premier puis le Champ3 pui le Champ5, et pour que ça prenne une généralité de cas possible...

n°1996415
SuppotDeSa​Tante
Aka dje69r
Posté le 27-05-2010 à 12:34:05  profilanswer
 

SuppotDeSaTante a écrit :

Ensuite essaie de voir ce que renvoi ta chaine InstrSQL avec un Debug.Print InstrSQL



---------------
Soyez malin, louez entre voisins !
n°1996459
alex'78
Posté le 27-05-2010 à 14:50:09  profilanswer
 

J'ai pas eu besoin de faire un Debug.Print InstrSQL en fait vu que déja avec le MsgBox je voyais ce que renvoyait ma chaine, bon j'ai qd même essayer de faire le Select Case, je pense avoir reussi
Bon par contre je vais limiter le nombre de tri de toute façon l'utilisateur va pas numéroter tout ses champs surtout que les tables en contiennent plusieurs dizaines, mais qu'il ait la possibilité d'en mettre en évidence 5 ou 6 alors voici le code :

Code :
  1. If Forms("Choix de visualisation" )("Coche_" & Cpteur) = True And (Forms("Choix de visualisation" )("TriNumCrois" & Cpteur) <> "" Or Forms("Choix de visualisation" )("TriNumDéCrois" & Cpteur) <> "" ) Then
  2.        
  3.         Select Case Forms("Choix de visualisation" )("TriNumCrois" & Cpteur)
  4.        
  5.             Case 1
  6.                 a1 = txtc & " ,"
  7.                 t1 = a1
  8.             Case 2
  9.                 a2 = txtc & " ,"
  10.                 t2 = a2
  11.             Case 3
  12.                 a3 = txtc & " ,"
  13.                 t3 = a3
  14.             Case 4
  15.                 a4 = txtc & " ,"
  16.                 t4 = a4
  17.             Case 5
  18.                 a5 = txtc & " ,"
  19.                 t5 = a5
  20.             Case 6
  21.                 a6 = txtc & " ,"
  22.                 t6 = a6
  23.         End Select
  24.        
  25.         Select Case Forms("Choix de visualisation" )("TriNumDéCrois" & Cpteur)
  26.        
  27.             Case 1
  28.                 a1 = txtc & " DESC,"
  29.                 t1 = Left(a1, InStrRev(a1, Right(a1, 6)))
  30.             Case 2
  31.                 a2 = txtc & " DESC,"
  32.                 t2 = Left(a2, InStrRev(a2, Right(a2, 6)))
  33.             Case 3
  34.                 a3 = txtc & " DESC,"
  35.                 t3 = Left(a3, InStrRev(a3, Right(a3, 6)))
  36.             Case 4
  37.                 a4 = txtc & " DESC,"
  38.                 t4 = Left(a4, InStrRev(a4, Right(a4, 6)))
  39.             Case 5
  40.                 a5 = txtc & " DESC,"
  41.                 t5 = Left(a5, InStrRev(a5, Right(a5, 6)))
  42.             Case 6
  43.                 a6 = txtc & " DESC,"
  44.                 t6 = Left(a6, InStrRev(a6, Right(a6, 6)))
  45.         End Select
  46.        
  47.         txt3 = a1 & a2 & a3 & a4 & a5 & a6
  48.         txtk1 = t1 & t2 & t3 & t4 & t5 & t6
  49.        
  50.     'Partie SELECT de la requête SQL si aucun tri est effectué
  51.    
  52.     ElseIf Forms("Choix de visualisation" )("Coche_" & Cpteur) = True Then
  53.             txtk2 = txtk2 & "[" & txtc & "]" & " ,"
  54.             'MsgBox txt1
  55.     End If
  56.    
  57.         txt1 = txtk1 & txtk2


 
Bon peut-être que c'est moche et mal fait mais en tout cas ça fonctionne x), après s'il peut être optimisé...^^

n°1996464
SuppotDeSa​Tante
Aka dje69r
Posté le 27-05-2010 à 15:02:42  profilanswer
 

C'etait pas pour toi que je demandais le debug.print, mais pour moi, que je vois ta requete sql...
 
Parcontre je ne comprends pas pourquoi tu as a1,a2,a3 etc. etant donné que tu ne peux avoir qu'une seule valeur passante dans le select case, une seule variable doit suffire...
S'il passe dans le case 1, il ne passe pas ni dans le 2 ni dns le 3 donc ton a2 et a3 sont vide. Pas d'interet de gerer des variables vides...


---------------
Soyez malin, louez entre voisins !
n°1997422
alex'78
Posté le 31-05-2010 à 10:04:11  profilanswer
 

Ha c'était pour toi d'accord autant pour moi ^^", désolé du temps de réponse..
 
Nan mais c'est bon j'ai réglé ce problème tout fonctionne très bien pour cette page, un grand merci à toi pour toute ton aide jusqu'à présent =)
 
Néanmoins je viens de me rendre compte d'un truc génant dans une étape précédente, j'ai crée deux Boutons, un pour importer des tables excels en access, basé sur un TransfertSpreedSheat qui fonctionne très bien, et un autre pour Importer directement une Table contenue ds un fichier access, le pb est là le TransfertSpreedSheat ne fonctionne pas si le fichier est de type Access ( .accdb ou .mdb ou autre ), alors j'ai essayer le TransfertDataBase, ça fonctionne seulement il est nécessaire d'indiquer le Nom de la Table qu'on va importer, exemple "Table1" sauf que si la Table s'appelle autrement bah ça fonctionne pas, j'ai essayé de mettre "" sans succès..
Tu aurais une idée pour résoudre ce problème ? ( je continue de chercher de mon coté )

n°1997484
SuppotDeSa​Tante
Aka dje69r
Posté le 31-05-2010 à 11:47:12  profilanswer
 

Tu ne connais pas le nom de la table a importer ?


---------------
Soyez malin, louez entre voisins !
n°1997493
alex'78
Posté le 31-05-2010 à 11:56:41  profilanswer
 

Si mais c'est pas ça le problème, le nom ne sera pas toujours le même en fait
 

Code :
  1. DoCmd.TransferDatabase acImport, "Microsoft Access", a1, acTable, "" , "Table0"


 
a1=ZoneTexte et ZoneTexte contient le chemin d'un fichier qu'on a sélectionné via une Fenêtre de navigation
 
jpeux mettre un nom dans "" mais ça ouvrira que les fichiers dont les tables portent ce nom et bon il faut que j'évite de donner du boulot à l'utilisateur "fénéant", parce que sinon ce serait pas compliqué, soit je met un nom au hasard et je demande à l'utilisateur de renommer le nom de sa Table lui-même pour qu'il corresponde, soit je mets rien et l'utilisateur ira lui-meme mettre le nom de la Table dans le code, sauf que ça répond pas au cahier des charges =s ..
Faudrait en fait que ce code soit fonctionnel quelque soit le nom de la Table que l'on veut importer c'est ça le truc, si c'est possible déja..


Message édité par alex'78 le 31-05-2010 à 11:58:02
n°1997495
SuppotDeSa​Tante
Aka dje69r
Posté le 31-05-2010 à 12:05:23  profilanswer
 

Je ne comprends pas...
Comment le programme peut savoir quelle table prendre...? Tu le definis ou ?
 
Sinon tu mets un InputBox... L'utilisateur saisi le nom de la table puis c'est fini...


Message édité par SuppotDeSaTante le 31-05-2010 à 12:06:08

---------------
Soyez malin, louez entre voisins !
n°1997513
alex'78
Posté le 31-05-2010 à 13:17:14  profilanswer
 

Bah je sais pas trop, il prendrait la première table ouverte dans le fichier..
 
Mais la méthode de l'InputBox est pas mal, c'est quand même très raisonnable au niveau de l'effort demandé suffit de connaître le nom de sa Table, je connaissais même pas cette instruction, d'ailleurs je vais garder l'idée ^^ merci beaucoup =)

n°1997560
SuppotDeSa​Tante
Aka dje69r
Posté le 31-05-2010 à 15:04:35  profilanswer
 
n°1997842
alex'78
Posté le 01-06-2010 à 10:48:02  profilanswer
 

Bonjour,  
 
la Table résultat "ListeVisualisation" de toute mon opération là s'ouvre par défaut en mode "Feuille de donnée", je me demandais si c'était possible via du code de pouvoir changer le mode,
Par exemple : si je clique sur le Bouton "Ouvrir Liste" il l'affiche normalement en mode "Feuille de donnée" ça c'est ce que j'ai fais jusqu'à présent, et si je clique sur le Bouton "Ouvrir Graphique" il l'affiche en mode "Graphique Croisé dynamique".
 
Est-ce possible ?
 
Edit : Oui j'ai trouvé faut mettre "acViewPivotChart" en deuxième argument. ^^


Message édité par alex'78 le 01-06-2010 à 10:56:56
n°1997844
SuppotDeSa​Tante
Aka dje69r
Posté le 01-06-2010 à 10:53:36  profilanswer
 

Oui mais il faut avoir fait ton tableau grpahique croisé dynamique en amont, qui pointe sur les données de cette table


Message édité par SuppotDeSaTante le 01-06-2010 à 10:56:41

---------------
Soyez malin, louez entre voisins !
n°1997951
alex'78
Posté le 01-06-2010 à 14:04:03  profilanswer
 

Je sais pas si tu as vu mon édit, mais en mettant "acViewPivotChart" j'obtient ce que je veux la Table s'ouvre en mode graphique, c'est tout ce que je voulais j'ai mal du me faire comprendre ^^"
 
Je galère par contre pour exporter cette table format .jpg, ce que tu m'avais dis ds un post précédent ça fonctionne très bien pour le format ".xls", j'ai modifié le filtre pour qu'il propore également le format "Image (.jpg)", mais bon vu que la commande TransfertSpreedSheat acExport ne prend que du format Excel, bah je vois pas trop comment procéder..

n°1997975
SuppotDeSa​Tante
Aka dje69r
Posté le 01-06-2010 à 14:24:53  profilanswer
 

Désolé je ne sais pas exporter un graphique d'Access en utilisant l'outils integré d'Access...
Avec un MSgraph ou un graph excel dans Access oui, mais la non.


---------------
Soyez malin, louez entre voisins !
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Critères de Choix pour tri sur un Formulaire

 

Sujets relatifs
Variable issue d'un formulaire nulleCherche service de blogs avec critères
Relecture de formulaire à ligne variableProblème formulaire
[PHP/MYSQL] formulaire et modification à distance de fichierVérifier les champs d'un formulaire avec Javacript
[symfony] Formulaire avec embedform?Choix : CMS ? Framework ? les deux ?
Formulaire avec les BDDformulaire d'envoi demail dans courrier indésirable hotmail
Plus de sujets relatifs à : Critères de Choix pour tri sur un Formulaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR