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 :

Tableau modifiable dans un formulaire [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2018
    Messages : 27
    Points : 17
    Points
    17
    Par défaut Tableau modifiable dans un formulaire
    Bonjour,

    J'aimerai pouvoir afficher dans un formulaire le contenu d'un tableau présent dans un onglet (et filtré par la valeur d'une colonne par exemple).

    Puis, j'aimerai pouvoir modifier la valeur de certaines colonnes à partir de ce formulaire.

    J'aimerai sur ce formulaire que la mise en forme soit proche d'un tableau et idéalement que les lignes soient sur 2 lignes (avec par exemple un retour à la ligne comme sur les onglets Excel).

    Merci par avance pour vos idées

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    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 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonjour
    La demande n'est pas claire au moins pour moi
    Comment sont tes données de départ ?
    C'est quoi la finalité?
    Je crois et si j'ai compris, tu veux faire un formulaire de recherche sur une base de données
    tu sélectionne un article par exemple, tu fais des modifications puis tu enregistre ces modification sur la feuille Excel?
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  3. #3
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2018
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Voici un fichier exemple en PJ.

    Liste modifiable.xlsx

    Mes données de départ sont dans un tableau simple Excel.
    La finalité est que les utilisateurs puissent modifier les informations de certaines lignes à partir du tableau qui sera remonté dans le formulaire (car sur le fichier Excel elles seront masquées).



    Merci beaucoup.

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    Hello,
    quelque chose dans ce genre-là (utilisation d'un ListView) ? :

    Nom : FormulaireDid.png
Affichages : 138
Taille : 9,4 Ko


    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2018
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Oui c'est ça. Mais pour le filtre, je voudrais qu'il soit fait dans le code. Par exemple, filtrer la colonne a avec le valeur "1" par exemple. Donc mon tableau, il n'y aurait plus qu'une ligne

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    Et pourquoi veux-tu faire cela avec un formulaire alors que tu pourrais utiliser une autre feuille avec les cellules liées à la feuille dans laquelle on ne doit pas modifier certaines données car ce serait plus simple.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    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 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonjour
    Je crois que tu cherches des combobox en cascade
    je propose un formulaire peut servir pour saisir des nouvelles données ou bien pour modifier des données existantes
    à tester
    Fichiers attachés Fichiers attachés
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  8. #8
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2018
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    Dans mon fichier je n'ai que cet onglet de disponible. Je voudrais que les utilisateurs aient accès à ces donnés modifiables qu'à partir du formulaire en cliquant sur un bouton sur cet onglet. À partir de ce bouton les utilisateurs auraient seulement certaines données filtrées par la valeur d'une colonne. Et le format de visualisation de ces lignes modifiables doit ressembler à un tableau

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 954
    Points : 9 284
    Points
    9 284
    Par défaut
    Hello,
    voici une solution possible en utilisant un tableau structuré, un autofiltre et une listview dans le formulaire. Il pourrait y avoir des problèmes de performance si il y a beaucoup de lignes dans le tableau structuré. Dans la listview une colonne a été ajoutée par rapport au tableau structuré pour stocker l'index de ligne. Comme je ne suis pas spécialiste des tableaux structurés dans le code, il doit y avoir des choses à optimiser. Après remplissage de la ListView j'enlève le filtre du tableau ce qui n'est pas obligatoire. Attention il faut cocher Microsoft Windows Common Controls SP6 dans Outils/Réferences dans l'Editeur VBA.
    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
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    Option Explicit
    Private IndexSelected As Integer
    Private Tbl As ListObject
     
     
    Private Sub UserForm_Initialize()
        Set Tbl = Worksheets("Feuil1").ListObjects("Tableau1")
        Call InitListView
        Call FilterListView
        Call LoadCombos
    End Sub
     
     
    Private Sub InitListView()
        Dim rngCell As Range
     
     
        With Me.ListView1
            .Gridlines = True
            .HideColumnHeaders = False
            .View = lvwReport
            .FullRowSelect = True
             'Ajouter les en-têtes de colonnes
             For Each rngCell In Tbl.HeaderRowRange.Cells
                 .ColumnHeaders.Add Text:=rngCell.Value, Width:=90
              Next rngCell
            .ColumnHeaders.Add Text:="row", Width:=20
            .ColumnHeaders(1).Width = 40: .ColumnHeaders(1).Alignment = lvwColumnLeft
            .ColumnHeaders(2).Width = 40: .ColumnHeaders(2).Alignment = lvwColumnCenter
            .ColumnHeaders(3).Width = 40: .ColumnHeaders(3).Alignment = lvwColumnCenter
            .ColumnHeaders(4).Width = 100: .ColumnHeaders(4).Alignment = lvwColumnCenter
            .ColumnHeaders(5).Width = 100: .ColumnHeaders(5).Alignment = lvwColumnCenter
            .ColumnHeaders(6).Width = 50: .ColumnHeaders(6).Alignment = lvwColumnCenter
            .ListItems.Clear
        End With
     
    End Sub
     
     
    Private Sub FilterListView()
        Dim rngCell As Range
        Dim LstItem As ListItem
        Dim RowCount As Long, ColCount As Long
        Dim i As Long, j As Long
     
     
        With Tbl.Range
              .AutoFilter Field:=1, Criteria1:=Me.ComboBox1
              .AutoFilter Field:=2, Criteria1:=Me.ComboBox2
        End With
        Me.ListView1.ListItems.Clear
     
     
        RowCount = Tbl.DataBodyRange.Rows.Count
        ColCount = Tbl.DataBodyRange.Columns.Count
     
        With Tbl.Range  ' application d'un filtre auto
              .AutoFilter Field:=1, Criteria1:=Me.ComboBox1
              .AutoFilter Field:=2, Criteria1:=Me.ComboBox2
        End With
     
        With Tbl.DataBodyRange
        'Remplir la Listview
        For i = 1 To RowCount
             If Not .Cells(i, 1).EntireRow.Hidden Then
                 Set LstItem = Me.ListView1.ListItems.Add(Text:=.Cells(i, 1).Value)
                 For j = 2 To ColCount
                    LstItem.ListSubItems.Add Text:=.Cells(i, j).Value
                 Next j
                 LstItem.ListSubItems.Add Text:=CStr(i)
             End If
        Next i
        End With
        Tbl.AutoFilter.ShowAllData ' suppression du filtre auto
    End Sub
     
     
    Private Sub ComboBox1_Change()
      Call FilterListView
    End Sub
     
     
    Private Sub ComboBox2_Change()
      Call FilterListView
    End Sub
     
     
    Private Sub CommandButton1_Click()
     Tbl.DataBodyRange(IndexSelected, 4).Value = Me.TextBox1
     Tbl.DataBodyRange(IndexSelected, 5).Value = Me.TextBox2
     Call FilterListView
    End Sub
     
     
    Private Sub CommandButton2_Click()
     UserForm1.Hide
    End Sub
     
     
    Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
     Me.TextBox1.Value = Me.ListView1.ListItems(Item.Index).SubItems(3)
     Me.TextBox2.Value = Me.ListView1.ListItems(Item.Index).SubItems(4)
     IndexSelected = CInt(Me.ListView1.ListItems(Item.Index).SubItems(5))
    End Sub
     
     
    Private Sub LoadCombos()
        Dim rngData As Range, rngCell As Range
        Dim RowCount As Long, i As Long
        Dim oDictionary1 As Object, oDictionary2 As Object
     
     
        Set rngData = Tbl.DataBodyRange
        Set oDictionary1 = CreateObject("Scripting.Dictionary")
        Set oDictionary2 = CreateObject("Scripting.Dictionary")
     
        RowCount = rngData.Rows.Count
     
        For i = 1 To RowCount
            If Not oDictionary1.exists(rngData(i, 1).Value) Then
                oDictionary1.Add rngData(i, 1).Value, 0
                Me.ComboBox1.AddItem rngData(i, 1).Value
            End If
            If Not oDictionary2.exists(rngData(i, 2).Value) Then
                oDictionary2.Add rngData(i, 2).Value, 0
                Me.ComboBox2.AddItem rngData(i, 2).Value
            End If
        Next i
    End Sub

    Nom : FormModTab.gif
Affichages : 107
Taille : 181,5 Ko

    Ami calmant, J.P
    Fichiers attachés Fichiers attachés
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Membre à l'essai
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2018
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2018
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    C'est exactement ce que je cherchait , merci beaucoup Jurassic Pork

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/06/2018, 19h33
  2. [AC-2000] Lier deux Listes modifiables dans un formulaire tableau
    Par BW7541 dans le forum IHM
    Réponses: 0
    Dernier message: 07/11/2009, 16h17
  3. Réponses: 3
    Dernier message: 27/08/2009, 21h15
  4. Réponses: 1
    Dernier message: 06/12/2005, 20h40
  5. Réponses: 5
    Dernier message: 30/09/2005, 16h42

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