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

Macros et VBA Excel Discussion :

Sous formulaire Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Points : 33
    Points
    33
    Par défaut Sous formulaire Excel
    Bonjour
    Je souhaiterais savoir si c'est possible de créer des sous formulaires comme dans Accès !
    Merci de bien vouloir me renseigner.

  2. #2
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    Bonjour,

    Excel permet effectivement de créer des formulaires mais pas aussi "facilement" qu'Access.

    Access est prévu pour des formulaires de présentation de données. Excel te laisse la possibilité de créer des formulaires objet par objet (zones de saisie, cases à cocher, ...) mais tu devras toi-même écrire le code qui les fera s'articuler.
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  3. #3
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Citation Envoyé par fergut Voir le message
    Bonjour
    Je souhaiterais savoir si c'est possible de créer des sous formulaires comme dans Accès !
    Merci de bien vouloir me renseigner.
    Non il n'est pas possible avec Excel de créer un sous-formulaire, c'est-à-dire un formulaire qu'on pourrait intégrer dans un formulaire "principal".
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Points : 33
    Points
    33
    Par défaut Liaison formulaires
    Bonjour,
    J’ai des problèmes avec mes formulaires de saisies
    Gestion des adhérents :
    J’ai un formulaire de saisie « frmSaisie » qui alimente une feuille « Données » de 400 adhérents sylviculteurs : nom, qualité, adresse, tel, mail et cotisations, un champ « surface forêt » et génération d’un code adhérent « txtCode ».
    Gestion des parcelles
    J’ai un Formulaire saisie foret « frmsaisieforet » qui alimente une feuille « Données forêt » avec les différentes parcelles du sylviculteur concerné, code adhérent, Adresse parcelle, N°, surface, lieudit, environ 4000 parcelles (moyenne de 10 par adhérent)
    Le total des surfaces des parcelles « frmsaisie_PF » devrait alimenter la surface foret de l’adhérent « txtSurf_Foret »pour le calcul de sa cotisation.
    Une parcelle ne peut être qu’a un seul adhérent, 1 adhérent peut avoir plusieurs parcelles
    Le lien entre les deux est le code adhérent. « txtCode »
    Feuilles actives : Donnees, donnees_foret, tableau de bord et listes déroulantes et codes_champs
    Les deux formulaires sont opérants sauf la fonction « le bouton Ajout de frmsaisie_DF » mais qui fonctionne sur « frmsaisie »
    Également « frmsaisie_PF » je n’arrive pas à valider la ligne « ActiveCell.Offset(0.1).Value = txtSection_PF = ( 0. 10 )
    Puisqu’il n’est pas possible d’avoir un sous formulaire je souhaiterais lier ces deux formulaires « frmsaisie et rfmsaisie_PF » afin de saisir les différentes parcelles de foret d’un adhérent depuis le formulaire « frmsaisie »
    frnSaisie : Dans « txtCode » je souhaiterais l’equivalent : ‘=CONCATENER(GAUCHE(I150;2);GAUCHE(J150;2);S150;L150)
    Concaténation des 2 premiers caractères de « txtNom », es 2 premiers caractères de « txtPrenom »,
    txtINSEE et txtDoublons

    Merci de bien vouloir me renseigner pour corriger le « frmsaisie_PF », me donner la procédure de liaison des deux formulaires et la fonction concaténer

    Merci

    ci-dessous ma BDD


    https://fromsmash.com/2-bEsLhe5l-ct
    Egalement feuille Excel pour transposition instructions EXCEL
    Fichiers attachés Fichiers attachés

  5. #5
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    Bonjour,

    Tu ne peux pas faire une double affectation de valeur en une seule ligne en VBA.
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0.1).Value = txtId_PF = ""
    n'est syntaxiquement pas correct.

    A priori de ce que je comprends de cette ligne tu veux:
    - reporter "txtId_PF" dans ActiveCell.Offset(0.1)
    puis
    - vider la zone du formulaire txtId_PF

    Il te faut faire en 2 temps (je reprends ta méthode volontairement même si on pourrait éviter d'utiliser "ActiveCell.Offset")
    -
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0.1).Value = txtId_PF
    puis
    -
    C'est le même principe sur l'ensemble de ces lignes
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
        ActiveCell.Offset(0.1).Value = txtId_PF = ""
        ActiveCell.Offset(0.2).Value = txtCode = ""
        ActiveCell.Offset(0.3).Value = txtNom = ""
        ActiveCell.Offset(0.4).Value = txtPrenom = ""
        ActiveCell.Offset(0.5).Value = txtVille = ""
        ActiveCell.Offset(0.6).Value = txtCode_postal = ""
        ActiveCell.Offset(0.7).Value = txtCommune = ""
        ActiveCell.Offset(0.8).Value = txtDepar_PF = ""
        ActiveCell.Offset(0.9).Value = txtINSEE_PF = ""
        ActiveCell.Offset(0.1).Value = txtSection_PF = ""
        ActiveCell.Offset(0.11).Value = txtNum_PF = ""
        ActiveCell.Offset(0.12).Value = txtLieu_PF = ""
        ActiveCell.Offset(0.13).Value = txtSurf_PF = ""
        ActiveCell.Offset(0.14).Value = cboPEFC_PF = ""
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  6. #6
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    Citation Envoyé par fergut Voir le message
    Dans « txtCode » je souhaiterais l’equivalent : ‘=CONCATENER(GAUCHE(I150;2);GAUCHE(J150;2);S150;L150)
    Concaténation des 2 premiers caractères de « txtNom », es 2 premiers caractères de « txtPrenom », txtINSEE et txtDoublons
    Dans les cellules pour concaténer plusieurs cellules tu peux utiliser cette syntaxe plutôt que la fonction "concatener".
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(I150;2)&GAUCHE(J150;2)&S150&L150

    Le résultat est le même mais c'est plus lisible (à mon avis).

    Et pour concaténer les valeurs de différentes zones de ton formulaire c'est le même principe
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    txtCode = Left(txtNom, 2) & Left(txtPrenom, 2) & txtINSEE & txtDoublons

    Bien sûr cette ligne de code est à placer après avoir rempli les zones dont elle dépend.
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  7. #7
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    Je t'ai créé en PJ un exemple basé sur ton fichier initial de 2 formulaires dépendants.

    Le premier formulaire reprend la liste des adhérents (boutons "précédent" et "suivant" pour naviguer) et le second reprend exclusivement les parcelles de l'adhérent choisi dans le premier (boutons "précédent" et "suivant" pour naviguer).

    Si l'adhérent affiché n'a pas de parcelles le bouton d'affichage du second formulaire est verrouillé.

    Je me suis uniquement intéressé à l'interdépendance entre les 2 formulaires; ils ne permettent pas d'ajouter des données. Je ne les ai pas prévu pour. Ils servent uniquement d'exemple pour que tu puisses voir comment ça fonctionne et le faire sur ton fichier.

    A toi de mettre en pratique pour ton fichier précis.

    Teste et dis-nous.
    Fichiers attachés Fichiers attachés
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Points : 33
    Points
    33
    Par défaut Liaison formulaires et effacement de données
    Citation Envoyé par Alex020181 Voir le message
    Merci pour ta réponse

    Mes deux formulaires ont été créés d'après un tuto de Learnacces (1,2,3) et cela fonctionne parfaitement dans le formulaire frmSaisie mais pas avec frmSaisie_pf pour quelle raison !
    ______________________________________________________

    Cette instruction c'est dans frmSaisie: txtCode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub txtCode_Change()
            TxtCode = Left(txtNom, 2) & Left(txtPrenom, 2) & txtINSEE & txtDoublons
    End Sub
    ______________________________________________________
    Dans ma BDD tu as une feuille Codes_champs
    Peut on utiliser plusieurs fois ces variables dans 2 formulaires !
    Merci

  9. #9
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    Je te confirme, en tout cas sur ma version Excel, une double affectation ne passe pas.

    Dans le code du bouton "Ajouter" de ton formulaire "frmsaisie" tu n'utilises pas la double affectation. Tu utilises des affectations simples (regarde le nombre de fois ou tu as mis le signe "=" dans ta ligne).
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 5).Value = txtDenomination
    Donc aucun souci.

    Par contre si je modifie cette ligne de code pour faire une double affectation comme tu le fais dans le second formulaire
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 5).Value = txtDenomination = ""

    Cette ligne ne fera pas planter l'exécution du code mais le résultat affiché sera erroné.

    Nom : insert denomination.png
Affichages : 904
Taille : 18,2 Ko
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  10. #10
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je ne sais pas ce que vous entendez par "double affectation", car en VBA, ça n'existe pas.

    La ligne ActiveCell.Offset(0, 5).Value = txtDenomination = "" ne crée pas une "double affectation", mais affecte à Activecell.offsert(0,5).value le résultat de l'évaluation txtdenomination = "" => VRAI ou FAUX (d'où l'apparition du FAUX dans la cellule)

    C'est un fonctionnement identique en Excel: le premier = sert à l'affectation à la cellule, les suivants servent à l'évaluation booléenne:

    Nom : 2021-01-31_195559.png
Affichages : 863
Taille : 2,9 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 926
    Points
    55 926
    Billets dans le blog
    131
    Par défaut
    J'ai proposé une contribution qui modélise les échanges entre tableau structuré et userform. Peut-être pourrais-tu t'en inspirer.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    @Pierre
    affecte à Activecell.offsert(0,5).value le résultat de l'évaluation txtdenomination = ""
    Oui c'est ça. Je ne savais pas trop comment appeler ce traitement.

    J'avais appelé ça une double affectation car je pensais à la lecture de
    ActiveCell.Offset(0, 5).Value = txtDenomination = ""
    qu'il voulait en une seule ligne:
    - imputer la valeur de txtdenomination dans la cellule
    ET
    - imputer la valeur "" dans txtdenomination

    C'est pour ça que je lui ai répondu 30/01/2021, 22h22 que cela était impossible et qu'il devait le faire en 2 étapes.
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  13. #13
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    Dans ma BDD tu as une feuille Codes_champs
    Peut on utiliser plusieurs fois ces variables dans 2 formulaires !
    Oui bien sûr. Dans ton code ou même dans le rowsource de plusieurs objets tu peux appeler les mêmes cellules.

    Rien ne t'empêche de définir 5 listes sur ton formulaire, et même sur plusieurs formulaires et de définir leur rowsource sur le même ensemble de cellules. Idem dans le code; tu peux appeler plusieurs fois cet ensemble de cellule.

    As-tu regardé le fichier exemple "gestion_parcelles.xlsm" que je t'ai déposer Hier, 02h54 ?
    As-tu compris comment j'ai fait ? (c'est une des méthodes. Chaque développeur a ses habitudes).
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Points : 33
    Points
    33
    Par défaut Liaison formulaires et formulaires
    Bonjour et merci pour vos réponses

    Principe de BDD que je souhaiterais :
    En début d’année je dispose de ma base de données mise à jour au 31 décembre de l’année précédente, d’environ 400 adhérents. « Base de donnees »
    En début d’année également, au fur et à mesure de la réception des cotisations je renouvèle ou crée la fiche de l’adhérent.
    -Création : A l’aide du formulaire « saisie » pour les données de l’adhérent et du formulaire « frmsaisie_PF » pour toutes ces parcelles.
    -Renouvèlement : À partir du code adhèrent j’appelle sa fiche la modifie ou la complété si nécessaire (deux formulaires)
    Ces deux saisies d’enregistrements sont enregistrées pour créer la « BDD en cours ».
    Au 31 décembre en fin d’année, je copie et remplace les enregistrements de la « BDD en cours » sur « Base de donnees » disponible pour l’année suivante.
    La « Base de donnees » comprend donc les fiches renouvelées ,les créées ainsi que les non renouvelés « certains adhérents sautes quelquefois un renouvèlement ».
    Un adhérent peut avoir plusieurs parcelles, mais une parcelle ne peut appartenir qu’à un seul propriétaire
    Parallèlement au « rfmsaisie » avec le « frmsaisie_PF » je renseigne toutes les différentes parcelles de l’adhérent 1ère partie je rappelle des données de l’adhérent en 2ème partie je renseigne toutes ses différentes parcelles pour alimenter « Donnes foret »
    Cette saisie je souhaite qu’elle soit liée à la saisie de l’adhérent, mais je ne sais comment de faire pour créer une relation un à plusieurs, une liaison éviterait de renseigner la 1ère partie.
    Je joins ma BDD qui correspond un peu mieux à ce que je souhaite
    L’instruction suivante ne fonctionne pas de même que le bouton Ajout de btnAjout_PF alors que btnAjout fonctionne normalement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' concatène pour code_
    Private Sub txtCode_Change()
        TxtCode = Left(txtNom, 2) & Left(txtPrenom, 2) & txtINSEE & txtDoublons
    End Sub
    Merci de bien vouloir me donner votre avis sur le schéma que je vous présente
    Et de me renseigner sur les sur les modifications à apporter en tenant compte si possible de mes possibilités, j’ai construit cette BDD à l’aide des tutos de learnaccess sur youtube mais je ne maitrise pas le VBA.
    Dans un 2ème temps je reviendrais sur le contenu des formulaires.
    Merci à tous pour votre participation.

    https://fromsmash.com/yiX1ky-X-w-ct

  15. #15
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    Citation Envoyé par fergut Voir le message
    L’instruction suivante ne fonctionne pas de même que le bouton Ajout de btnAjout_PF alors que btnAjout fonctionne normalement.
    ' concatène pour code_
    Private Sub txtCode_Change()
    TxtCode = Left(txtNom, 2) & Left(txtPrenom, 2) & txtINSEE & txtDoublons
    End Sub
    Ce code fonctionne parfaitement mais est mal placé.

    Tel qu'il est actuellement il faut d'abord compléter le nom, le prénom, l'INSEE et le doublon. Ensuite, comme tu as mis le code sur "Private Sub txtCode_Change()" il s'exécutera uniquement lors d'une modification du champ txtcode. Autrement dit tu dois ensuite saisir n'importe quel caractère dans txtcode pour que sa valeur se mette à jour.

    Pour que le champ txtcode se mette à jour lors de la saisie du nom ou du prénom ou de l'INSEE ou du doublon tu dois le mettre non pas dans "Private Sub txtCode_Change()" mais dans "Private Sub txtNom_Change()" et "Private Sub txtPrenom_Change()" et "Private Sub txtINSEE_Change()" et "Private Sub txtDoublons_Change()".
    Pour éviter de dupliquer ce code partout il serait préférable d'utiliser l'appel d'une fonction mais dans un premier temps si tu ne sais pas faire une fonction tu peux dupliquer ce code.
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Points : 33
    Points
    33
    Par défaut Instruction VBA dans formulaire
    Bonjour et merci pour les dernières réponses:

    Pour le moment je me contente de la fonction concaténer qui effectivement fonctionne, après un caractère dans code_adhérent

    Si possible je souhaiterais transposer en VBA les instructions Excel de la feuille jointe.

    Merci de bien vouloir me renseigner




    Merci aussi de bien vouloir donner votre avis sur la conception de ma BDD en cours
    Fichiers attachés Fichiers attachés

  17. #17
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    Bonjour,

    Je n'ai pas encore regardé ton fichier en détail mais par rapport à ce que tu dis si j'ai bien compris tu récupères les données de tes adhérents des années précédentes par copier/coller.

    Pourquoi ne pas créer une colonne Actif/passif avec un menu déroulant ? Ainsi tu n'aurais pas à faire ce copier coller. Tu mets en "actif" tout ceux qui ont payés (si j'ai bien compris) et en "passif" les autres.
    Si un passif paye tu sélectionnes son formulaire et bascule le menu déroulant en "actif".

    Par commodité également sur ton formulaire des adhérents tu prévois une case à cocher "Inclure les passifs" pour inclure ou pas les passifs dans les adhérents affichés par le formulaire.
    En fin d'année tu rebascules tout le monde en passif (via un bouton pas 1 par 1).
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Points : 33
    Points
    33
    Par défaut Instruction VBA dans formulaire
    Bonjour et merci pour ta réponse.

    Je l'ai envisagé avec le champ Année, avoir seulement la feuille "donnees" et ensuite faire des requêtes sur l'année.
    Liaison base de donnees/Donnees foret frmsaisie et frmsaisie_ foret si les deux formulaires sont liés il n'est peut être pas nécessaire de reprendre les données de l'adhérent hormis son code ?
    Merci

  19. #19
    Membre éprouvé Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 569
    Points : 1 006
    Points
    1 006
    Par défaut
    C'est tout à fait ça; si tes 2 formulaires sont liés tu n'as pas besoin de reprendre tes données adhérents dans ta feuille parcelle (hormis le code adhérent pour assurer la liaison bien sûr puisque tu es en 1 pour x). Par contre Excel ne fait pas de liaison automatique. Il faut coder en VBA. C'est ce que je t'ai fait dans l'une de mes réponses précédentes.

    Tu vois que dans le premier formulaire tu as le choix de l'adhérent et qu'ensuite le second s'ouvre mais n'affiche qu'uniquement les parcelles de l'adhérent choisi dans le premier formulaire (j'ai également remis le nom, prénom et code adhérent dans le caption du formulaire de parcelle (=la barre des titres en bleu en haut à gauche du bouton de fermeture du formulaire)). Et si tu vas voir dans la feuille des parcelles tu verras que seul le code adhérent apparait et non pas le nom, prénom ou tout autres données propres propres à l'adhérent. Pourtant tu retrouves des données absentes de cette feuille dans le formulaire de parcelles. Après je n'ai mis que le nom, prénom pour te montrer "le truc" mais libre à toi de "surcharger" le formulaire de parcelles en rappelant d'autres données de l'adhérent.

    Je vais regarder plus précisément ton fichier pour continuer sur cette lancée.

    Connais-tu Access ? Pourquoi ne l'utilises tu pas ? A priori oui puisque tu parles de sous-formulaire et de liaison de formulaire qui sont tout à fait faisables dans Access.

    Si tu connais Access mais que tu veux rester sur une présentation utilisateur Excel tu peux également construire tes tables, liaisons et requêtes sous Access puis utiliser Excel pour aller lire et mettre à jour les données Access. Excel est capable d'aller lire les tables et les requêtes Access et de t'afficher leur résultat dans une feuille Excel.
    C'est toujours sympa de savoir si on vous a aidé ou non. Pensez-y

    N'hésitez pas à marquer le sujet comme résolu le cas échéant.

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Février 2014
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 304
    Points : 33
    Points
    33
    Par défaut Instruction VBA dans formulaire
    Bonjour et merci pour la dernière réponse :
    Je n'opte pas pour Access que j'ai essayé au début mais je préfère Excel que j'utilisais "en basique" depuis très longtemps

    Pour le moment J’opte pour une seule base de données « BDD en cours »: (ensuite je transposerais sur Donnees foret), BDD qui comprendra :
    La BDD en cours au 31 décembre « qui existe » BDD en cours
    - Les enregistrements non renouvelés n-2, n-3
    - Les enregistrements en attente de renouvèlement
    - Les enregistrements « actifs » que je distinguerais avec le champ Année
    J’aurais les données de l’année en cours avec des requêtes notamment sur l’année
    J’ai le formulaire saisie qui reste à compléter notamment pour les fonctions.
    -btnAjout Qui ajoute des données dans BDD en cours « créer un adhérent »
    -btnSource Qui visualise BDD en cours
    -btnEfface Qui efface le formulaire
    -btnFermer Qui ferme le formulaire

    Ce que je souhaiterais serait avoir un bouton MAJ ou je pourrais afficher, modifier et valider ou effacer les données d’un adhérent
    Je ne trouve pas l’évènement à associer à cette macro
    Merci de bien vouloir me renseigner
    Fergut.

Discussions similaires

  1. importation excel dans sous formulaire
    Par emmablue dans le forum Access
    Réponses: 1
    Dernier message: 23/07/2007, 18h13
  2. Réponses: 10
    Dernier message: 16/08/2006, 11h11
  3. Réponses: 5
    Dernier message: 25/04/2006, 16h04
  4. PB envoi sous-formulaire dans excel
    Par STANDBOY dans le forum Access
    Réponses: 7
    Dernier message: 13/03/2006, 09h21
  5. Exporter un sous formulaire sous excel
    Par titou dans le forum Access
    Réponses: 3
    Dernier message: 14/02/2005, 17h01

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