Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/05/2011, 12h00   #1
Membre du Club
 
Homme Pierrick
Étudiant
Inscription : avril 2011
Messages : 57
Détails du profil
Informations personnelles :
Nom : Homme Pierrick
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 57
Points : 45
Points : 45
Par défaut Formulaire double affichage et Recordset (énumération des enregistrements sélectionnés)

Bonjour à toutes/tous,
Je viens vous voir car je n'arrive pas à régler un problème depuis plusieurs jours. J'ai parcouru la FAQ, le forum, et le net, mais je ne trouve pas de réponse vraiment utile dans mon cas. Mais bon, comme je préfère espérer qu'il y a une astuce que je n'avais pas vu, voici mon problème:

J'ai un formulaire double affichage (qui contient en haut de page, des champs permettant de remplir la table et en bas de page, la susdite table )

Cette table contient des informations sur des produits (nom - n° de série, pour simplifier) mais également sur l'étiquette apposée sur ces produits (Imprimée? - Date d'impression - remarques).

Lors de l'enregistrement d'un lot de produits, des N° de séries sont générés et affectés (en recherchant lesquels sont libre dans une autre table), puis une ligne est ajoutée à la table pour chaque produit du lot.

J'aimerais savoir s'il était possible de créer un code pour que:

1) L'utilisateur sélectionne X enregistrements dans la table, et clique sur un bouton qui: -Coche la case a cocher "imprimée?" - Remplit la colonne "d’étiquetage" avec la date. tout sa pour les X enregistrements, pas seulement le 1er sélectionné.

2) L'utilisateur sélectionne X enregistrements, et les supprime, la fonction qui "vide" la table des Numéros de série utilisés s'active, et efface les X N° de série sélectionnés (encore une fois, pas seulement le 1er sélectionné).

Voila, je suis à votre disposition pour toute question, j’espère avoir été clair!

A bientôt, et merci encore!
koluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 14h08   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 737
Points : 10 737
Envoyer un message via MSN à jpcheck
salut,

les cases que tu coches correspondent-elles a des champs dans la table ?

la mise a jour de la date se fait avec une requete UPDATE
les suppressions successives se feront elles avec DELETE
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 14h49   #3
Membre du Club
 
Homme Pierrick
Étudiant
Inscription : avril 2011
Messages : 57
Détails du profil
Informations personnelles :
Nom : Homme Pierrick
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 57
Points : 45
Points : 45
Bonjour, d'abord, merci de ta réponse.

Citation:
les cases que tu coches correspondent-elles a des champs dans la table ?
OUI!

Citation:
la mise a jour de la date se fait avec une requete UPDATE
les suppressions successives se feront elles avec DELETE
Mince j'ai essayé en VBA, mais pas avec du SQL.
Je ne sais pas si je me suis bien expliqué: d'après toi, le SQL permettrai de mettre a jour/supprimer PLUSIEURS enregistrements sélectionnés par l'utilisateur (de plus, dans un form double affichage)?
Sa m'aiderait beaucoup si c'est la cas. Je vais essayer tout de suite.

Encore merci.
koluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 15h02   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 737
Points : 10 737
Envoyer un message via MSN à jpcheck
Oui,
si par exemple ton champ s'appelle Piou et qu'il faut vrai et que tu veux mettre une valeur Pioupiou dans ton champs B ca donnerait simplement,

Code SQL :
UPDATE TaTable SET B='Pioupiou' WHERE Piou=-1
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 15h28   #5
Membre du Club
 
Homme Pierrick
Étudiant
Inscription : avril 2011
Messages : 57
Détails du profil
Informations personnelles :
Nom : Homme Pierrick
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 57
Points : 45
Points : 45
Code :
UPDATE TaTable SET B='Pioupiou' WHERE Piou=-1
Je pense que tu n'as pas compris ce que je voulais exactement.
Un peu plus d'explications:
l'utilisateur ouvre un formulaire1 contenant de quoi enregistrer DES nouveaux produits, mais aussi modifier le champ "étiquette_imprimée?" des produits déjà enregistrés.
J'aimerais que l'utilisateur n'ai qu'a sélectionner des champs, cliquer sur un bouton et hop, magique, les cases se cochent et la date se remplit.
Le problème, c'est que pour faire ça, j'ai besoin de savoir quels enregistrements sont sélectionnés! Là, je colle...

Je suis clair ou pas??

Merci encore et toujours =)

ps: je suis en train d'esssayer de faire ça: http://support.microsoft.com/kb/148393/fr

EDIT: Voila, j'arrive a récupérer selHeight et Seltop en enregistrant leur valeurs dans des variables sur l’évènement sourisdéplacée.
koluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2011, 09h38   #6
Membre du Club
 
Homme Pierrick
Étudiant
Inscription : avril 2011
Messages : 57
Détails du profil
Informations personnelles :
Nom : Homme Pierrick
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 57
Points : 45
Points : 45
Par défaut Formulaire double affichage et Recordset (énumération des enregistrements sélectionnés)

Bonjour à tous!
Pour ceux que sa intéresserait, voici le code que j'ai utilisé pour récupérer "l'emplacement" de la sélection:
Code :
1
2
3
4
5
6
 
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)<blockquote>
SelTop = Me.SelTop
SelHeight = Me.SelHeight
'Debug.Print lngSelTop, lngSelHeight
</blockquote>End Sub
C'est bien beau... Mais j'ai encore un problème
Voici le code qui est sensé "récupérer" la selection:
Code :
1
2
3
4
5
6
7
Dim F As Form
Dim RS As ADODB.Recordset
'RS.Open "ENR_DFV", CurrentProject.Connection, adOpenKeyset, adLockOptimistic ' Get the form and its recordset
. Set F = Forms!ENR_DFV Set RS = F.RecordsetClone 'ERREUR 13 INCOMPATIBILITE DE TYPE
Sachant que ENR_DFV représente mon formulaire double affichage

Là, je suis bloqué :/
Avez vous déjà rencontré ce problème?

Merci de votre aide, bonne journée sous la pluie....

PS: Voici la fonction a laquelle je voudrais aboutir:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
Public Function impression()
Dim i As Long
 
Dim F As Form
Dim F2 As Form
 
Dim RS As ADODB.Recordset
Dim RS2 As ADODB.Recordset
<blockquote>
'RS.Open "ENR_DFV", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
</blockquote>   ' 1:Get the form and its recordset.
  DoCmd.OpenForm "ENR_DFV1", acFormDS
  Set F = Forms!ENR_DFV1
  Set RS = F.RecordsetClone
 
  ' 1bis: autre tentative avec le formulaire Double affichage cette fois si
  Set F2 = Forms!ENR_DFV
  Set RS2 = F2.RecordsetClone
 
   ' 2: Move to the first record in the recordset.
   RS.MoveFirst
 
   ' 3: Move to the first selected record.
   RS.Move lngSelTop - 1
 
   '4: Pour chaque element selectionné, on effectue:
   For i = 1 To lngSelHeight
     'Code qui coche la case a cocher et inscrit la date du jour dans le champ date
     RS.MoveNext
   Next i
End Function
koluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2011, 14h18   #7
Membre du Club
 
Homme Pierrick
Étudiant
Inscription : avril 2011
Messages : 57
Détails du profil
Informations personnelles :
Nom : Homme Pierrick
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : avril 2011
Messages : 57
Points : 45
Points : 45
J'ai trouvé une solution ce week end, je suis passé par un autre formulaire, contenant une LISTBOX!
Voila!
Merci beaucoup pour l'aide que j'ai reçu ici !!
koluche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h28.


 
 
 
 
Partenaires

Hébergement Web