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 :

Déplacer la copie de données d'un UserForm en fonction de la réponse à une ComboBox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2020
    Messages : 7
    Par défaut Déplacer la copie de données d'un UserForm en fonction de la réponse à une ComboBox
    Bonjour à tous,

    Je viens de rejoindre la communauté afin de me former sur la programmation VBA sous excel.

    Voilà mon problème.

    - J'ai créer un UserForm ou je rentre des données sur la gestion de 3 locataires (date de loyer, mois du loyer, montant, mode de paiement…)
    - J'ai mis une combobox avec 3 choix (locataire 1, locataire 2, locataire 3).

    Et pour finir un bouton "valider".

    Je voudrais qu'en fonction du choix de la Combobox, le bouton "valider" renvoie les données du UserForm sur une autre page excel, par exemple "loyers", mais en déplaçant ces données suivant la réponse.

    Par exemple du style de résultat voulut,
    sur la feuille "loyers"

    Locataire 1:
    Départ des données à partir de la cellule A5
    Incrémenter les lignes suivantes jusqu'à A17 à chaque validation du UserForm et avec le choix Locataire 1 de la combobox.

    Locataire 2:
    Départ des données à partir de la cellule A20
    Incrémenter les lignes suivantes jusqu'à A32 à chaque validation du UserForm et avec le choix Locataire 2 de la combobox.

    Locataire 3:
    Départ des données à partir de la cellule A35
    Incrémenter les lignes suivantes jusqu'à A47 à chaque validation du UserForm et avec le choix Locataire 3 de la combobox.

    Résultat final:

    Locataire 1:
    02/01/2020 Loyer JANVIER "nom du locataire 1" la somme de: 300€ payé par virement
    05/02/2020 Loyer FEVRIER "nom du locataire 1" la somme de: 300€ payé par virement
    03/03/2020 Loyer MARS "nom du locataire 1" la somme de: 300€ payé par virement


    Locataire 2:
    10/01/2020 Loyer JANVIER "nom du locataire 2" la somme de: 400€ payé par chèque
    15/02/2020 Loyer FEVRIER "nom du locataire 2" la somme de: 400€ payé par chèque
    13/03/2020 Loyer MARS "nom du locataire 2" la somme de: 400€ payé par chèque


    Locataire 3:
    10/01/2020 Loyer JANVIER "nom du locataire 3" la somme de: 250€ payé par chèque
    15/02/2020 Loyer FEVRIER "nom du locataire 3" la somme de: 250€ payé par chèque
    13/03/2020 Loyer MARS "nom du locataire 3" la somme de: 250€ payé par chèque


    J'espère avoir été suffisamment explicite.
    En attente d'une réponse.

    Cordialement.

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,

    À mon avis il serait plus opportun de placer l ensemble de vos écritures sur une même feuille.
    Les différentes infos locatives seraient des lors visible par filtre ou une feuille avec toutes les écritures et autant de feuilles que de locataire où la table mère serait splittée.

    Cette solution me semble plus pérenne et permettant une plus grande flexibilité en cas d ajout de biens locatifs, locataires, synthèse,...

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2020
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2020
    Messages : 7
    Par défaut Précision: toutes ces données sont bien reportées sur une même page mais à différents endroits
    Bonjour et merci pour cette première réponse.

    Oui le triage par filtre pourrait se faire pour rechercher des données spécifiques, mais le but est de reporter ma saisie du UserForm à un endroit choisit et que toutes les données soit visibles sur la même page, mais triées par Locataire.

    Le but final étant de simuler un bilan comptable, donc de rentrer une opération par un UserForm et d'avoir une page excel par compte, et d'envoyer les éléments dans chaque compte grâce aux choix des combobox du UserForm.

    Je commence par la page la plus simple des loyers, mais je voudrai poursuivre par une page "Capital', "Recettes", "Amortissements", "Dépenses"...
    Il faut "juste" que j'arrive à définir la feuille et la plage de copie des données en fonction des choix des combobox.

    Cordialement.

  4. #4
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Il te faut alors récupérer la valeur de ta cbo et l affecter à une variable worksheet.

    Tu pourras dès lors cibler ta feuille, avec l utilisation de cette variable, pour l ajout des données dans la feuille souhaitée.

    Au besoin poste ton code, pour y jeter un œil.

    Bat

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Pour ma part, s'il faut ajouter un enregistrement, alors je ne serais pas fan de positionner les enregistrements à des endroits différents d'une feuille de travail.

    J'opterais davantage vers les tableaux structurés.
    1 tableau par poste comptable (Loyers, Capital…)

    On pourrait alors envisager la structure de ton projet ainsi:
    - 1 feuille d'accueil comportant un bouton de commande par poste comptable
    - chaque bouton activant la visualisation d'un formulaire de saisie
    - chaque formulaire, via un bouton "Validation" ajouterait une ligne au tableau

    Les actions ultérieures (filtre…) ne poseraient alors aucun problème.

    Ainsi, cette architecture permettrait une souplesse d'utilisation (1 bouton = 1 tableau = 1 formulaire) et une évolution future (ajout de poste comptable) sans bouleversement de la structure acquise.

    Pour ajouter une ligne à un tableau depuis un formulaire, tu peux t'inspirer de cette discussion.

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour à tous
    si malgré toutes les explications vous cherchez à continuer ton chemin vous pouvez opter pour ce bricolage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
    Dim F As Worksheet
    Dim plage As Range
    Dim Ligne As Integer
    Set F = Sheets("loyers")
    If ComboBox1.Value = "Locataire 1" Then Set plage = F.Range("A5:A17")
    If ComboBox1.Value = "Locataire 2" Then Set plage = F.Range("A20:A32")
    If ComboBox1.Value = "Locataire 3" Then Set plage = F.Range("A35:A47")
     Ligne = plage.Find("*", , , , xlByColumns, xlPrevious).Row + 1
     F.Cells(Ligne, 1) = CDbl(TextBox1.Value)
     Unload Me
    End Sub
    sans oublier d'ajouter des contrainte : ne pas dépasser la ligne 17 s'il s'agit du locataire 1 et idem pour locataire 2 et 3

    ci joint un exemple
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Copie de données depuis Userform
    Par greenwulf dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/03/2019, 14h06
  2. stocker des données d un formulaire en fonction des valeurs d'une combobox
    Par Tournament dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/07/2015, 12h12
  3. [VBA-E] Problème de copie de données
    Par JM_stp dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2006, 00h33
  4. Réponses: 3
    Dernier message: 24/04/2005, 14h19
  5. Copie des données d'une table d'une base Interbase 6
    Par Djedjeridoo dans le forum InterBase
    Réponses: 6
    Dernier message: 02/02/2004, 09h39

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