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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

+ 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