IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Formulaire double affichage et Recordset (énumération des enregistrements sélectionnés) [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 65
    Points
    65
    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!

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 256
    Points
    34 256
    Par défaut
    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
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 65
    Points
    65
    Par défaut
    Bonjour, d'abord, merci de ta réponse.

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

    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.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 256
    Points
    34 256
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TaTable SET B='Pioupiou' WHERE Piou=-1
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 65
    Points
    65
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 65
    Points
    65
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    <div style="margin-left:40px">
    SelTop = Me.SelTop
    SelHeight = Me.SelHeight
    'Debug.Print lngSelTop, lngSelHeight</div>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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    33
     
    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
     
    <div style="margin-left:40px">
    'RS.Open "ENR_DFV", CurrentProject.Connection, adOpenKeyset, adLockOptimistic</div>
       ' 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

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 57
    Points : 65
    Points
    65
    Par défaut
    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 !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Formulaire double affichage
    Par johanaquatique dans le forum IHM
    Réponses: 19
    Dernier message: 12/11/2020, 21h54
  2. [AC-2013] Formulaire double-affichage - Largeur des colonnes
    Par FRinguette dans le forum IHM
    Réponses: 3
    Dernier message: 03/09/2020, 15h42
  3. Réponses: 6
    Dernier message: 08/04/2014, 11h43
  4. Réponses: 2
    Dernier message: 08/06/2009, 16h34
  5. Evènement formulaire double affichage
    Par bastringue dans le forum VBA Access
    Réponses: 5
    Dernier message: 21/08/2008, 23h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo