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 :

Codes UserForm Excel 2016 [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 9
    Par défaut Codes UserForm Excel 2016
    Bonjour à tous
    J'ai créé un formulaire pour saisir des données sur une feuille qui comporte 5 colonnes :
    Nature des opérations
    Mode de paiement
    Débit
    Crédit
    Solde (lequel se calcul par une formule)
    A chaque nouvelle saisie les infos s’inscrivent bien sur la feuille de données. Mais j’ai trois problèmes :
    1) Lorsque je saisie une nouvelle donnée, celle-ci remplace purement et simplement les infos de la première ligne alors que je voudrais que cette nouvelle information s’inscrive, juste dessous, sur la première ligne vierge.
    2) Le formulaire contient un cadre (frame) avec 2 optionbutton : « Dépense » et « Recette ».
    Voici le code que j’ai saisi pour le Bouton « Valider » (pour les boutons OptionButton1 et OptionButton2 je n'ai pas mis de code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Bouton_Valider_Click()
    ' Validation de l'opération
    Sheets("Feuil1").Range("A4") = ComboBox1.Value
    Sheets("Feuil1").Range("B4") = ComboBox2.Value
     If OptionButton1 = True Then
         Sheets("Feuil1").Range("C4") = TextBox1 ‘Choix « Dépense »
      Else
         Sheets("Feuil1").Range("D4") = TextBox1 ‘ Choix « Recette »
       End If
    End Sub
    Bien entendu, lorsque je clique sur le bouton « Dépense », la valeur « Montant » s’inscrit dans la colonne C, ligne 4 et si je choisie « Recette » l’inscription se fait dans la colonne D, ligne 4, étant précisé, comme je l’ai dit plus haut, qu’à chaque donnée, celle-ci remplace purement et simplement les infos de la première ligne et ne s’enregistre pas sur la ligne suivante.
    Je voudrais que la valeur inscrite dans le TextBox "Montant" s’inscrive dans la colonne « C » si je choisie « Dépense » et dans la colonne « D » si je choisie le bouton « Recette », et qu'à chaque saisie, les informations s’enregistrent sur la première ligne libre (vierge) de ma feuille. Pour l’instant, les infos s'inscrivent sur la même ligne et écrasent celles précédemment enregistrées.
    3) Pour l’instant, je n’ai qu’une feuille de saisie. Mais j’ai l’intention d’en créer une par mois (c’est-à-dire 12) et d’utiliser le même Userform pour chaque feuille de saisie mensuelle. Quel est le code ? Que faut-il que je modifie dans la feuille « Code » de l’Userform pour que celui-ci soit utilisable sur toutes les feuilles de saisie.
    J’ai cherché un peu partout sur Internet : sans succès.
    Je joins le fichier que j’ai créé.
    D’avance, je vous en remercie

    Bramoset
    Fichiers attachés Fichiers attachés

  2. #2
    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
    Bonsoir
    Bien-sûr que ça va remplacer la valeur présidente si tu écris que la cellule c4 égal à combobox1.value
    Recherche comment déclarer un variable de type long pour la dernière ligne non vide , ajoute 1 et comme ça tu écrirais dans la cellule souhaitée

  3. #3
    Membre confirmé
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2016
    Messages : 70
    Par défaut
    Salut !
    Teste Ceci
    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
    Private Sub Bouton_Valider_Click()
        ' Validation de l'opération
        Dim Ligne As Integer 'Définition d'une variable pour _
        recupérer la dernière non vide à laquelle on ajoute 1 pour aller la ligne suivante
        Ligne = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row + 1 'recupération de la derniere ligne non vide et _
        mémorisation dans la variable Ligne
     
        Sheets("Feuil1").Range("A" & Ligne) = ComboBox1.Value'Si la dernière ligne du tableau est 5 alors, Ligne sera=6. Ainsi on aura la concaténation Range("A" & Ligne) qui donnera A6
        Sheets("Feuil1").Range("B" & Ligne) = ComboBox2.Value
        If OptionButton1 = True Then
             Sheets("Feuil1").Range("C" & Ligne) = TextBox1.Value 'Choix « Dépense »
          Else
             Sheets("Feuil1").Range("D" & Ligne) = TextBox2.Value 'Choix « Recette »
        End If
    End Sub

  4. #4
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 9
    Par défaut Codes UserForm Excel 2016
    Bonjour,
    Merci TSAFACK-M pour ta réponse.
    Un petit souci avec le code proposé : quand je saisie une opération et que je choisis "Recette", j'ai un message d'erreur à la ligne "Sheets("Feuil1").Range "D" & Ligne) = TextBox2.Value". De plus, la "nature des opérations" et le "Montant" (Colonne crédit) ne s’enregistrent pas.
    A suivre
    Cordialement
    Bramoset

  5. #5
    Membre confirmé
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2016
    Messages : 70
    Par défaut
    C'est parce qu'il n'existe pas de textbox2 dans le userform

    petite correction

    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
     
    Private Sub Bouton_Valider_Click()
        ' Validation de l'opération
        Dim Ctrl As Control
        Dim Ligne As Integer 'Définition d'une variable pour _
        recupérer la dernière non vide à laquelle on ajoute 1 pour aller la ligne suivante
        Ligne = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row + 1 'recupération de la derniere ligne non vide et _
        mémorisation dans la variable Ligne
        Sheets("Feuil1").Range("A" & Ligne) = ComboBox1.Value 'Si la dernière ligne du tableau est 5 alors, Ligne sera=6. Ainsi on aura la concaténation Range("A" & Ligne) qui donnera A6
        Sheets("Feuil1").Range("B" & Ligne) = ComboBox2.Value
        If OptionButton1 = True Then
             Sheets("Feuil1").Range("C" & Ligne) = CDbl(TextBox1.Value) 'Choix « Dépense »
          Else
             Sheets("Feuil1").Range("D" & Ligne) = CDbl(TextBox1.Value) 'Choix « Recette »
        End If
        'vider les controles apres validation
        For Each Ctrl In Me.Controls
            If TypeOf Ctrl Is MSForms.ComboBox Or TypeOf Ctrl Is MSForms.TextBox Then
                Ctrl.Value = ""
            End If
        'Réinitialise les OptionButtons
            If TypeOf Ctrl Is MSForms.OptionButton Then
                Ctrl.Value = False
            End If
        Next Ctrl
    End Sub

  6. #6
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 9
    Par défaut [XL-2016] Codes UserForm Excel 2016
    Merci TSAFACK-M d'avoir travaillé pour me dépanner.
    Je vais tenter ma chance avec le code ci-dessus.
    A bientôt
    Bramoset

  7. #7
    Membre confirmé
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2016
    Messages : 70
    Par défaut
    Je ne sais pas exactement ce que tu veux faire comme gestion dans la feuille mais
    créer une nouvelle feuille pour générer une même tâche est contre indiqué et contre
    productif en informatique. Je pense qu'au lieu de ça tu pourrais ajouter une colonne
    date par exemple...
    pour t'aider un peu, j'ai apporter quelques modifications au code mais sans explications
    un peu d'effort pour comprendre !

    Du courage !

    Cordialement.
    Fichiers attachés Fichiers attachés

  8. #8
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 9
    Par défaut XL-2016 - Codes UserForm Excel 2016
    Bonjour,
    J'ai actuellement un classeur "Budget" avec, entre autre, douze feuilles de saisie mensuelles que j'alimente, chaque mois, au vu de mon relevé bancaire mensuel. Chaque feuille comporte, pour les rubriques "Nature des opérations" et "Mode de paiement", des listes déroulantes dans lesquelles je choisie l'opération (Colonne A) puis le mode de paiement (Colonne B) et enfin le montant en débit (Colonne C) ou en crédit (Colonne D). Les infos saisies mensuellement vont alimenter des feuilles, également mensuelles, répartissant les opérations par nature de recettes et de dépenses. Tout cela fonctionne parfaitement. Mais j'ai pensé que ce serait peut-être plus facile d'utiliser un formulaire pour saisir mes infos mensuelles, plutôt que de cliquer sur les listes déroulantes. Pour que ce soit efficace, il faut que le même formulaire soit utilisable sur chacune des feuilles.
    Je vais voir les modifications que tu as apportées.
    Merci
    Cordialement
    Bramoset

  9. #9
    Membre confirmé
    Homme Profil pro
    Logisticien
    Inscrit en
    Avril 2016
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Logisticien
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2016
    Messages : 70
    Par défaut
    Ok,

    Dans ce cas pourquoi ne pas donner à tes feuilles le nom des mois
    genre Janvier Fevrier.....Decembre. En suite Ajouter une page d'accueil,
    masquer toutes les feuilles correspondant à tes mois. Puis dans le
    UserForm, tu inscris un code qui va afficher la feuille correspondant au
    mois courant chaque fois que tu cliques sur ouverture UserForme.....
    Les possibilités sont infinis !

    Je te mets un exemple en PJ.

    Fichiers attachés Fichiers attachés

  10. #10
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Février 2016
    Messages : 9
    Par défaut [XL-2016] Codes UserForm Excel 2016
    Merci TSAFACK-M,

    Je vais suivre tes conseils et utiliser le fichier que tu viens de m'envoyer.

    Merci pour tout

    Bramoset

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    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
    Private Sub Bouton_Valider_Click()
    ' Validation de l'opération
        Dim Ctrl As Control, Ligne As Long,transfert as variant
        Ligne = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row + 1    'recupération de la derniere ligne non vide et mémorisation dans la variable Ligne
        transfert = Array(ComboBox1.Value, ComboBox2.Value, IIf(OptionButton1 = True, TextBox1.Text, ""), IIf(OptionButton1 = True, TextBox2.Text, ""))
        Sheets("Feuil1").Range("A" & Ligne).Resize(1, 4) = transfert
        'réinitialiser les controles apres validation
        For Each Ctrl In Me.Controls
            Select Case TypeName(Ctrl)
            Case "ComboBox": Ctrl.ListIndex = -1
            Case "TextBox" : Ctrl.Value = ""
            Case "OptionButton": Ctrl.Value = False
            End Select
        Next Ctrl
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    sous une autre forme d'ecriture aussi il y a cela
    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
    Private Sub Bouton_Valider_Click()
    ' Validation de l'opération
        Dim Ctrl As Control
          With Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 4)
            .Value = Array(combobox1.value, combobox2.value, IIf(OptionButton1 = True, TextBox1.Text, ""), IIf(OptionButton1 = True, TextBox2.Text, ""))
           End With
        'réinitialiser les controles apres validation
        For Each Ctrl In Me.Controls
             Select Case TypeName(Ctrl)
            Case "ComboBox": Ctrl.ListIndex = -1
            Case "TextBox": Ctrl.Value = ""
            Case "OptionButton": Ctrl.Value = False
            End Select
        Next Ctrl
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 20/05/2012, 16h55
  2. Contribution codes VBA Excel : Pour vos UserForm
    Par Zandar dans le forum Contribuez
    Réponses: 0
    Dernier message: 01/03/2008, 17h11
  3. [VBA]Userform Excel VBA
    Par ducater6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/03/2007, 23h42
  4. Réponses: 1
    Dernier message: 08/02/2007, 10h11
  5. donnees access dans une combo userform excel
    Par megapacman dans le forum Access
    Réponses: 6
    Dernier message: 06/03/2006, 10h14

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