saisie semie automatique liste déroulante Access - VB/VBA/VBS - Programmation
Marsh Posté le 11-06-2010 à 11:53:13
Hello
Il faut "betement" jouer sur les colonnes.
Donc la, si je comprends bien ta liste affiche 3 colonnes.
A verifier dans les propriétés de ta liste dans la propriété : Nbre Colonnes
Ensuite en dessous, toujours dans la fenetre propriété de ta liste, tu dois voire la propriété : largeurs colonnes
Avec par exemple : 2cm;2,5cm;3cm
Il suffit de remplacer le premier chiffre par 0
Ce qui donnerait : 0;2,5cm;3cm
Et la, miracle, le numéro n'apparait plus (mais c'est lui qui est utilisé pour stocker ou renvoyer des valeurs) mais seulement le nom. Et donc tu peux commencer a saisir dans la pioche pour atteindre un nom specifique.
Et comme je suis de bonne humeur, petit screen a l'appui
Marsh Posté le 11-06-2010 à 12:19:09
Ok super
Jme voyais déjà devoir programmer en VBA pour ça!
Merci beaucoup!!!!
Marsh Posté le 11-06-2010 à 12:58:07
Comment je fais maintenant pour créer un filtre sur mon formulaire?
J'ai créé une liste déroulante avec le nom de toutes les communes,
et je voudrais n'afficher que les abonnés de cette commune.
Sur quelle action créer le code? et comment j'écris ma fonction avec DoCmd.RunSQL (je m'empatouille avec les '";&;'&....)
Marsh Posté le 11-06-2010 à 14:09:01
Oula, il y a beaucoup plus simple que toujours passer par du code "complexe"...
Ton formulaire doit avoir une requete comme source, ou une table. le mieux c'est une requete.
Comme ca dans le champ "numero de commune" de ta requete source, tu mets en critere ta pioche.
Et en code, tu n'as qu'un petit DoCmd.Requery a mettre apres mise a jour de ta pioche...
Regarde ca :
En rouge : la source de la pioche, a savoir la table commune, et donc le numéro de commune.
En vert : la source du formulaire, une requete nommée "requete2" dont tu as la forme juste en dessous
En bleu : Le critere sur le numéro de commune dans la requete "requete2" qui est la source du formulaire qui filtre donc sur ce que contient la pioche du formulaire1
Donc en gros la requete n'affiche les infos que pour les communes de la table commune qui sont egales a la pioche. Et comme cette requete est la source du formulaire1, ton formulaire sera filtré. Juste un petit Requery comme dit plus haut a mettre sur mise a jour de ta pioche.
Marsh Posté le 11-06-2010 à 15:52:35
trop de code tue le code
Marsh Posté le 17-06-2010 à 15:50:06
Bonjour,
J'ai maitenant un soucis de masque de saisie
j'ai une requête qui concatène 2 champs:
Tiroir : T1, à T4
Fibre: 1 à 144
J'aimerais pouvoir ranger par ordre alphabétique cette concaténation pour retrouver rapidement les fibres disponibles.
Seulement le tri ne fonctionne pas car ma chaine numérique possède 1 2 ou 3 caractère, de ce fait j'ai un ordre du sytle
T1.1
T1.13
T1.114
T1.2
C'est pas du tout ce que je cherche!
J'ai changé le format de mon champ: il affiche fibre "002" au lieu de "2"
mais ce format ne s'enregistre pas dans la base, et de ce fait n'existe pas à la sortie de ma requête.
Pouvez-vous m'aider?
Marsh Posté le 17-06-2010 à 17:04:24
Tu fais le format lors de la concatenation de la chaine.
2 champs calculés dans ta requete :
Un pour l'affichage comme tu as fait, du genre je pense : [Tiroir] & "." & [Fibre]
Un second pour le tri, tri croissant, que tu n'affiches pas : [Tiroir] & "." & Format$([Fibre];"000" )
Comme ca tes fibres seront comme ca : 001 ; 002 ; ... 099 ; ... ; 144
Et ca te donnera T1.001 ;...; T1.099 ; ... ; T1.144 qui une fois trié te les mettras dans le bon ordre, mais ce champ est masqué et ne sert qu'au tri
Tu te retrouveras donc bien avec ton champ trié, qui lui est affiché comme cela :
T1.1
T1.2
T1.13
T1.14
Etc.
Marsh Posté le 21-06-2010 à 16:06:50
j'ai créé un formulaire avec deux onglets.
Chaque onglet dépend d'un sous-formulaire.
Chaque sous-formulaire dépend d'une requête.
Mon sous-formulaire fonctionne nickel en me demandant quelle est la valeur du Modifiable17sur lequel il doit baser son exécution (déduction : la requête est correcte) (j'avais cette ligne dans ma requête : WHERE (NRO.NomNRO=[Formulaires]![RechercheNRO]![Modifiable17]))
Dans mon formulaire principal, en modifiant le modifiable17, j'ai le droit de re-rentrer manuellement ce que je viens d'indiquer dans la liste déroulante (RequêteRechercheNROPassif.NomNRO)..... GRRRR
pourquoi?
Marsh Posté le 21-06-2010 à 16:14:10
ah et ce même paramètre m'est également demandé à l'ouverture du formulaire avant même que j'ai touché au modifiable...
Marsh Posté le 21-06-2010 à 18:39:48
Citation : Mon sous-formulaire fonctionne nickel en me demandant quelle est la valeur du Modifiable17sur lequel il doit baser son exécution (déduction : la requête est correcte) (j'avais cette ligne dans ma requête : WHERE (NRO.NomNRO=[Formulaires]![RechercheNRO]![Modifiable17])) |
Ca c'est pas normal il ne devrait rien de te demander. Soit le nom du formulaire principal est mal orthographié soit c'est celui du controle Modifiable17
Marsh Posté le 22-06-2010 à 08:12:40
Effectivement, j'ai retiré les sou-formulaires, puis les ai remis en place, j'avais du les modifier pendant qu'ils se trouvaient encore sur le formulaire principal.
Marsh Posté le 28-06-2010 à 11:34:27
C'est encore moi!
Ma base de données avance bien, j'ai le clic précis maintenant.
Mais nouvelle problématique: le publipostage.
J'ai des couriers types à envoyer à des propriétaires selon leur type de passage (façade, souterrain,...). Je compte créer un bouton sur le formulaire qui affiche toutes les caractéristiques du propriétaire. Ce bouton analyserai le type de passage et ouvrirai automatiquement le courier publiposté adéquat.
Comment faire?
Marsh Posté le 28-06-2010 à 11:58:54
Comme toujours, sois un peu plus explicite
Pour le publipostage deux solutions :
Word se connecte a ta base de données et fusionne
Access pilote Word pour le publipostage
Marsh Posté le 28-06-2010 à 12:01:07
C'est access qui piloterai Word: depuis la page du propriétaire concerné, le code détermine le publipostage approprié et renvoie le document word.
Je voudrais que tout soit piloté par Access
Marsh Posté le 28-06-2010 à 14:01:54
Citation : J'ai des couriers types à envoyer à des propriétaires selon leur type de passage (façade, souterrain,...). Je compte créer un bouton sur le formulaire qui affiche toutes les caractéristiques du propriétaire. Ce bouton analyserai le type de passage et ouvrirai automatiquement le courier publiposté adéquat. |
Faut etre plus precis, c'est vraiment trop vague la...
Sinon un bout de code pour piloter Word :
Code :
|
Marsh Posté le 28-06-2010 à 15:06:44
le but est d'imprimer le courrier type à envoyer (par la poste, pas de mail) au propriétaire d'une parcelle.
J'ai plusieurs documents word type selon le type de passage de la fibre. Les champs liés sont nom, prénom ville
En cliquant sur le bouton, ca ouvrirait le document word adéquat avec les champs qui correspondent à l'enregistrement sur lequel je suis sur access. Ce document part à l'impression ensuite.
Marsh Posté le 28-06-2010 à 15:27:21
Et bah tu as le code dont tu as besoin dans mon dernier post.
Il faut te faire un document de fusion pour chaque type, tu appelles tel ou tel document de fusion que tu lies a une table qui contient le ou les enregistrements a fusionner, tu fusionnes le document et tu as tes documents pret a etre imprimer...
Marsh Posté le 29-06-2010 à 14:06:39
Merci pour la piste!!
Avec un peu de recherche je suis arrivée à quelque chose de très sympathique!!
Marsh Posté le 29-06-2010 à 19:49:37
Ca serait sympa de partager ici au cas ou qqun ai le meme 'souci'
Marsh Posté le 30-06-2010 à 09:02:15
oui j'ai essayé de mettre le code en copie, pour que ce soit dans un encadré au post mais je sais pas où il est le bouton! lol
jfais juste copié collé ou ya autre chose pour la mise en forme?
Marsh Posté le 30-06-2010 à 09:16:49
moé lol Donc re pour ceux qui ont suivi.
ok Donc voilà mon code, une première fonction déclenchée au clic, qui fait appel à une requête déjà écrite pour déterminer le type de passage.
Code :
|
En fonction du type, je renvoie vers la fonction appropriée.
Exemple d'une de ces fonctions de publipostage
Code :
|
Marsh Posté le 30-06-2010 à 09:20:04
Je te laisse effacer la multitude de poste
(Modification de ton message , coche "Effacer message" en dessous de la zone de saisie)
Marsh Posté le 01-07-2010 à 15:35:03
Bon rebelote avec l'exportation sous excel qui fonctionne pas. Ca c'est ce que j'aimerais faire : on entre une date, on clique, et ça sort la liste des abonnés raccordés depuis cette date. La requête fonctionne bien.
Code :
|
et ca fonctionne pas car apparement query n'est pas une requête
et sinon j'ai tenté avec ce qui existe sur Internet, c'est-à-dire une requete temporaire.
Et là.... Rien ,rien d'affiché dans le fichier excel, même pas le nom des colonnes.
Help please?
Marsh Posté le 01-07-2010 à 18:21:10
Et pourquoi tu créés pas "betement" une requete dans Access, vu que tu n'as pas de choses particuliere sur cette requete, et derriere un simple docmd.transferspreadsheet ??
Marsh Posté le 02-07-2010 à 09:08:59
ba le simple doCmd.Transferspreadsheet ne m'a jamais rien affiché dans excel...! sais pas pourquoi. Pas plus de succès avec le OutputTo
Finalement j'ai une solution qui fonctionne, je me suis servie du code automation : http://cafeine.developpez.com/acce [...] xcel/#LV-A,
ça marche, mais comme c'est du code, c'est légèrement plus long à exécuter.
Marsh Posté le 06-07-2010 à 14:16:11
Ya-t-il un moyen de demander à access d'attribuer le prochain numéro automatique disponible à un nouvel enregistrement?
explications : après une (ou plusieurs) manipulation inconnue, je passe de l'abonné N° 135 à l'abonné N° 56976394.
Comment puis-je rendre access à la raison?
Marsh Posté le 06-07-2010 à 14:24:03
A part :
- supprimer tout ce qu'il y a apres le 135, puis compacater la base
- Stocker dans une table temporaire tout ce qu'il y a apres le 135, compacter la base, ajouter de la table temporaire a la table
- Stocker dans une table temporaire tout ce qu'il y a apres le 135, supprimer tout ce qu'il y a apres le 135, ajouter dans la table en forcant le numéro automatique
Marsh Posté le 06-07-2010 à 14:28:43
il n'y a plus rien après le N°135, la base se compacte à la fermeture.
Mais à la réouverture, le nouveau prochain abonné est le n° 56 millions...
Faut-il un autre type de compactage? Comment "ajouter dans la table en forcant le numéro automatique"?
Marsh Posté le 06-07-2010 à 15:15:56
Hum apres compactage de la base DES DONNEES normalement il doit repartir a plus 1 sur chaque table depuis le derniere numéro auto...
C'est quelle version d'Access déjà ?
Marsh Posté le 06-07-2010 à 15:44:17
C'est bien le fichier où sont les données (Tables) et pas celle ou tu as les programmes (Formulaires, requetes etc.) que tu compactes on est d'accord ?
Bouton Office, Gerer base de données (ou un truc dns le genre j'ai pas le 2007 sous les yeux), Compacter la base
Marsh Posté le 06-07-2010 à 15:46:01
je n'ai pas encore séparé la base en 2, car je crée encore des formulaires
Marsh Posté le 06-07-2010 à 16:03:28
ReplyMarsh Posté le 07-07-2010 à 12:40:17
Il semble que le fait de fractionner la base de données en 2 résolve le problème.
En fractionnant, il y a compactage et le numéro automatique de ma base redevient raisonnable.
Merci d'avoir trouvé la piste!
Marsh Posté le 12-07-2010 à 17:00:20
J'ai une requête insert into qui ne fonctionne pas en VBA:
Code :
|
à la ligne CurrenDB.Execute sql,
Access m'affiche : "la requête doit être construite à partir d'au moins une table ou une requête source"
késaco???
Marsh Posté le 11-06-2010 à 11:35:35
Bonjour,
Je travaille sur un formulaire access.
Une liste déroulante appelée N°Abonné affiche le Numéro de l'abonné (numéro qui n'a aucune signification), le nom et le prénom de l'abonné. C'est bien un numéro d'abonné qui est enregistré dans ce champ.
Je voudrai que lorsque je commence à taper le NOM d'un abonné dans cette liste déroulante, la sélection se place automatiquement sur le premier nom de la liste correspondant. Ainsi, en ayant tapé un NOM, je trouve la ligne correspondant au NUMERO.
Par exemple, dans la liste j'ai les lignes suivantes:
N°ABonné---------------NOM----------PRENOM
1--------------------------MARTIN------Gilles
2--------------------------MARIGNAN---Martine
Si je tape "MAR" c'est la ligne 2 qui est sélectionnée (principe de la saisie automatique mais pas sur la colonne principale).
Je ne sais pas si je suis très claire....
Pouvez-vous m'aider???