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 :

Formulaire et macro [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Bonjour à tous

    Je suis nouveau sur le forum et j’espère que vous serez indulgent avec moi

    Je débute dans le monde des macros et j'ai créer un fichier, avec dedans un tableau avec plusieurs colonnes (noms, prénoms, conjoint, enfants adresse,.....)

    Je voudrais créer un formulaire pour remplir plus facilement mon tableau, que toutes les colonnes se remplissent en cliquant sur un bouton du formulaire

    Je vous joins un exemple de fichier et en cliquant sur l'onglet "salariès" en haut j'ai déjà creer mon questionnaire.

    Le problème c'est que je n'arrive pas programmer tout le

    Le seul bouton que j'ai réussi à programmer c'est celui ou j'appuie pour "quitter"

    J’espère que vous pourrez m'aider

    Merci d'avance pour votre réponse

    Tiger62
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonsoir,

    Il y a beaucoup de choses dans ton formulaire et beaucoup de code à mettre en place. Peux-tu expliquer à quoi vont servir les boutons mis en place.

    J'en ai une vague idée, mais j'aimerai en être certain.

    Je te joint un modèle de formulaire que j’utilise, tu verras qu'il y a beaucoup de code. Je ne suis pas un expert en Vba, mais cela te donnera une petite idée.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Bonsoir NEC14

    Lorsque je clique sur ton fichier , je ne vois rien

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Après ouverture du fichier, tu fais Alt+F11, le formulaire est dans le gestionnaire de macro Vba. C'est juste un modèle avec ses macros, il ne fonctionnera pas car les données qui l'alimente ne sont pas avec le fichier modèle.

  5. #5
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour
    Un début de code à coller sous le bouton Ajouter du formulaire
    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 CmdAjout_Click()
    Dim lig As Integer
    'recherche la derniere ligne vide
    lig = Sheets("salariès").Range("a65000").End(xlUp).Row
    colle les element du formulaire sur la feuille
        Sheets("salariès").Cells(lig, 1) = Formulaire.Txtbox1
        Sheets("salariès").Cells(lig, 2) = Formulaire.Txt1
        Sheets("salariès").Cells(lig, 3) = Formulaire.Txtbox2
        Sheets("salariès").Cells(lig, 4) = Formulaire.Txt2
        Sheets("salariès").Cells(lig, 5) = Formulaire.Txt3
        Sheets("salariès").Cells(lig, 6) = Formulaire.Txt4
        Sheets("salariès").Cells(lig, 7) = Formulaire.Txt6
        Sheets("salariès").Cells(lig, 8) = Formulaire.Txtbox3
     
    End Sub
    Ceci vous permet d'ajouter un enregistrement sur la derniere cellule vide de votre tableau salariés.
    Quelques remarques en vrac :
    - Il y une faute d'accent sur salarié (feuille), pas grave en soi, mais le jour ou vous corriger, plus aucune macro ne fonctionnera.
    - Les noms des txtbox dans le formulaire devraient être plus explicite(txtnoms, txtprenoms...), ceci pour la maintenance du code. S'il commence tous de la meme façon, cela permettra de boucler sur tous les controls texte sans avoir a ecrire les 45 lignes pour renvoyé les valeurs a leur place. Avec un truc de genre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for colonne= 1 to 45
    For each controls in formulaire
    If controls.name like (txt*) then
    colonne1=controls.value
    next control
    - Si vous avez 6 enfants, il est déconseiller de tomber enceinte. il faudrait faire 2 tableaux, 1 pour les salarié, 1 pour les enfants que l'on raccorde par un numéro unique, à la manière d'access.
    J'espere ne pas vous avoir fait peur, c'est juste pour vous inciter à penser en amont les difficultés que vous allez peut être(sûrement) rencontrer.
    Et puis au pire, il y a développez pour vous aider.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut
    Bonsoir tout le monde

    j'ai pris un peu d'idée à droite et à gauche.

    J'ai refait mon formulaire complètement en 3 parties comme on me l'a suggéré, à juste titre (Je trouve mon formulaire beaucoup plus lisible maintenant). Ensuite j'essaie, avec pas mal de difficultés je l'avoue, d'avancer.

    J'ai réussi, à partir du formulaire, à éditer une nouvelle ligne complète .

    Mais je n'arrive pas à modifier une ligne existante avec mon formulaire ou en supprimer une.

    Aussi, une question, lorsque j'ajoute une ligne, est ce qu'il est possible qu'il y est un tri automatique (par ordre alphabétique de la première colonne du tableau)?

    Je vous remercie de vos réponses et vos précieux conseils

    Tiger62
    Fichiers attachés Fichiers attachés

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Classique des Userform

    Ci-joint les modifications à apporter

    1 seul bouton pour ajouter et pour modifier et un bouton pour supprimer

    1. Dans l'userform public Module1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Public Lig As Long
     
    Sub Tri()
    Dim LastLig As Long
     
    With Worksheets("Salariés")
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        If LastLig > 7 Then .Range("A7:AN" & LastLig).Sort Key1:=.Range("A7"), Order1:=xlAscending, Header:=xlYes
    End With
    End Sub
    2. L'userform est ouvert pour modification par double clique sur la colonne A de la feuille Salariés sur le nom de la personne à modifier ou supprimer
    Pour l'ajout, double cliquez sur une cellule vide quelconque de la colonne A

    Pour cela, sur le module de la feuille Salariés, mettre ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     
    If Target.Column = 1 And Target.Row > 7 Then
        Cancel = True
        If Target(1, 1) <> "" Then
            Lig = Target.Row
        Else
            Lig = 0
        End If
        Formulaire.Show
    End If
    End Sub
    3. Dans le module de l'userform, ce code:
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    Option Explicit
     
    Private Sub UserForm_Initialize()
     
    If Lig = 0 Then
        Me.CmbEditer.Caption = "Ajouter"
    Else
        Me.CmbEditer.Caption = "Modifier"
        With Worksheets("Salariés")
            On Error Resume Next
            With .Range("A" & Lig)
                Formulaire.TNew1 = .Value
                Formulaire.TNew2 = .Offset(0, 1)
                Formulaire.TNew3 = .Offset(0, 2)
                Formulaire.ComboBox3.Value = .Offset(0, 3)
                Formulaire.ComboBox2.Value = .Offset(0, 4)
                Formulaire.ComboBox1.Value = .Offset(0, 5)
                Formulaire.TextBox3 = .Offset(0, 6)
                Formulaire.TextBox4 = .Offset(0, 7)
                Formulaire.TextBox5 = .Offset(0, 8)
                Formulaire.TextBox1 = .Offset(0, 9)
                Formulaire.TextBox2 = .Offset(0, 10)
                Formulaire.TEnf1 = .Offset(0, 11)
                Formulaire.TEnf2 = .Offset(0, 12)
                Formulaire.TEnf3 = .Offset(0, 13)
                Formulaire.TEnf4 = .Offset(0, 14)
                Formulaire.TEnf5 = .Offset(0, 15)
                Formulaire.TEnf6 = .Offset(0, 16)
                Formulaire.TEnf7 = .Offset(0, 17)
                Formulaire.TEnf8 = .Offset(0, 18)
                Formulaire.TEnf9 = .Offset(0, 19)
                Formulaire.TEnf10 = .Offset(0, 20)
                Formulaire.TEnf11 = .Offset(0, 21)
                Formulaire.TEnf12 = .Offset(0, 22)
                Formulaire.TEnf13 = .Offset(0, 23)
                Formulaire.TEnf14 = .Offset(0, 24)
                Formulaire.TEnf15 = .Offset(0, 25)
                Formulaire.TEnf16 = .Offset(0, 26)
                Formulaire.TEnf17 = .Offset(0, 27)
                Formulaire.TEnf18 = .Offset(0, 28)
                Formulaire.TNew4 = .Offset(0, 29)
                Formulaire.TNew5 = .Offset(0, 30)
                Formulaire.TNew6 = .Offset(0, 31)
                On Error GoTo 0
            End With
        End With
    End If
    End Sub
     
    Private Sub CmbEditer_Click()
     
    Application.ScreenUpdating = False
    With Worksheets("Salariés")
        If Lig = 0 Then Lig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        With .Range("A" & Lig)
            .Value = Formulaire.TNew1                  ' nom
            .Offset(0, 1) = Formulaire.TNew2           ' prenom
            .Offset(0, 2) = Formulaire.TNew3           ' date de naissance
            .Offset(0, 3) = Formulaire.ComboBox3.Value    ' type de contrat
            .Offset(0, 4) = Formulaire.ComboBox2.Value    ' coefficient
            .Offset(0, 5) = Formulaire.ComboBox1.Value    ' statut
            .Offset(0, 6) = Formulaire.TextBox3        ' Conjoint
            .Offset(0, 7) = Formulaire.TextBox4        ' prénom conjoint
            .Offset(0, 8) = Formulaire.TextBox5        ' date de naissance conjoint
            .Offset(0, 9) = Formulaire.TextBox1        'Entré e le
            .Offset(0, 10) = Formulaire.TextBox2       'sorti e le
            .Offset(0, 11) = Formulaire.TEnf1          'Nom enfant 1
            .Offset(0, 12) = Formulaire.TEnf2          'Prénom enfant 1
            .Offset(0, 13) = Formulaire.TEnf3          'Age enfant 1
            .Offset(0, 14) = Formulaire.TEnf4          'Nom enfant 2
            .Offset(0, 15) = Formulaire.TEnf5          'Prénom enfant 2
            .Offset(0, 16) = Formulaire.TEnf6          'Age enfant 2
            .Offset(0, 17) = Formulaire.TEnf7          'Nom enfant 3
            .Offset(0, 18) = Formulaire.TEnf8          'Prénom enfant 3
            .Offset(0, 19) = Formulaire.TEnf9          'Age enfant 3
            .Offset(0, 20) = Formulaire.TEnf10         'Nom enfant 4
            .Offset(0, 21) = Formulaire.TEnf11         'Prénom enfant 4
            .Offset(0, 22) = Formulaire.TEnf12         'Age enfant 4
            .Offset(0, 23) = Formulaire.TEnf13         'Nom enfant 5
            .Offset(0, 24) = Formulaire.TEnf14         'Prénom enfant 5
            .Offset(0, 25) = Formulaire.TEnf15         'Age enfant 5
            .Offset(0, 26) = Formulaire.TEnf16         'Nom enfant 6
            .Offset(0, 27) = Formulaire.TEnf17         'Prénom enfant 6
            .Offset(0, 28) = Formulaire.TEnf18         'Age enfant 6
            .Offset(0, 29) = Formulaire.TNew4          'rue
            .Offset(0, 30) = Formulaire.TNew5          'code postale
            .Offset(0, 31) = Formulaire.TNew6          ' ville
        End With
    End With
    Tri
    Lig = 0
    Unload Me
    End Sub
     
    Private Sub CmbSup_Click()
     
    Application.ScreenUpdating = False
    If Lig > 0 Then
        With Worksheets("Salariés")
            If MsgBox("Voulez vous supprimer la ligne correspondant au salarié " & .Range("A" & Lig) & " " & .Range("B" & Lig) & "?", vbDefaultButton2 + vbYesNo) = vbYes Then .Rows(Lig).Delete
        End With
        Lig = 0
    End If
    Unload Me
    End Sub
     
    Private Sub CmbFerm_Click()
     
    Unload Me
    End Sub

    PS: Pour la feuille Salariés, il faudra supprimer toutes les lignes en dessous des lignes remplies (aucun total ou autre ne doit être)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 4
    Par défaut merci
    Bonjour tout le monde
    Je vous remercie pour vos réponses et expériences
    Mon formulaire marche impeccable
    Bonne continuation
    Merci
    Tiger

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 14/09/2018, 17h40
  2. [AC-2007] Ouverture de formulaire via macro
    Par damsmut dans le forum IHM
    Réponses: 7
    Dernier message: 10/12/2009, 09h49
  3. [WD-2003] formulaire et macros
    Par irwen dans le forum Word
    Réponses: 1
    Dernier message: 07/11/2009, 20h06
  4. Dans un formulaire executer macro publique
    Par doogybreton dans le forum IHM
    Réponses: 13
    Dernier message: 22/01/2008, 04h22
  5. Formulaire et macro
    Par miiguel dans le forum Access
    Réponses: 3
    Dernier message: 17/10/2006, 15h36

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