Microsoft 365 Alimentation listview et feuille excel

sebastien176

XLDnaute Junior
Bonjour à tous,

J'ai un soucis dans le fichier ci-joint
Lorsque que je fait un 1er enregistrement (via le Bouton "valider et imprimer un bon de sortie"), l'enregistrement se fait en dessous du tableau qui se trouve sur la feuille "BDD"
Dans la listview, cet enregistrement apparaît sur la 2ème ligne

Le but est que le s enregistrement se fassent dans le tableau de la feuille "BDD"
et que la listview lise ce tableau

Merci d'avance de vos retours

Bonne journée à tous

Seb
 

Pièces jointes

  • Applicaton.xlsm
    62.1 KB · Affichages: 6
Solution
La feuille Bdd a déjà un tableau structuré de nom Tableau134
Quand vous aurez finalisé les contrôles de l'Userform,
le code d'enregistrement peut prendre 2 formes :
  • le premier court et bestial,
avantage: très rapide et indépendant des noms de colonnes
inconvénient; les colonnes doivent rester statiques sinon il faut recalculer le code
VB:
Private Sub CommandButton_Validation_Click() ' Solution 1
   [Tableau134].ListObject.ListRows.Add().Range.Value = Array(TBox1.Value, TBox2.Value, Format(Tbox3.Value, "dd/mm/yy"), Format(Tbox4.Value, "hh:mm"), TBox5.Value, TBox6.Value, TBox7.Value)
   
    'Remplir le bon de sortie
    Sheets("Bon de sortie").Range("G6") = Tbox3.Value
    Sheets("Bon de sortie").Range("E13") = Tbox4.Value...

patricktoulon

XLDnaute Barbatruc
re
bonjour
c'est normal pour le listview
sur les 32 et 64 ce n'est pas les mêmes librairies
d'ailleurs sur certaines version clikand run 64 aussi
il vous suffit de supprimer le listview de le remettre avec votre boite outils et decocher le manquant 32 ou 64
ci dessous sur la capture vous avez un apercu des deux nom pour cette librairie pour le
listview
demo.gif


après c'est bon
 

patricktoulon

XLDnaute Barbatruc
re
j'ajouterais que l'ajout de la listview dynamiquement règle le problème de conflit entre version
car l'ajout ce fait avec la librairie dispo (early/late) binding
VB:
Dim Lst
Set Lst = Form1.Controls.Add("MSComctlLib.ListView", "ListView_Gestion_Bon_Sortie")
With Lst
    .Visible = True
    .Left = x
    .Top = y
    .Width = Z
    .Height = q
End With
 

fanch55

XLDnaute Barbatruc
La feuille Bdd a déjà un tableau structuré de nom Tableau134
Quand vous aurez finalisé les contrôles de l'Userform,
le code d'enregistrement peut prendre 2 formes :
  • le premier court et bestial,
avantage: très rapide et indépendant des noms de colonnes
inconvénient; les colonnes doivent rester statiques sinon il faut recalculer le code
VB:
Private Sub CommandButton_Validation_Click() ' Solution 1
   [Tableau134].ListObject.ListRows.Add().Range.Value = Array(TBox1.Value, TBox2.Value, Format(Tbox3.Value, "dd/mm/yy"), Format(Tbox4.Value, "hh:mm"), TBox5.Value, TBox6.Value, TBox7.Value)
   
    'Remplir le bon de sortie
    Sheets("Bon de sortie").Range("G6") = Tbox3.Value
    Sheets("Bon de sortie").Range("E13") = Tbox4.Value
    Sheets("Bon de sortie").Range("B23") = TBox2
    Sheets("Bon de sortie").Range("B27") = TBox7
   
    Impression
    RAZ
    UserForm_Initialize
       
End Sub


  • le deuxième est plus parlant et parfaitement adapté à la philosophie des tables structurées ;)
avantage : décrit bien ce que l'on fait et facilement "amendable"
inconvénient : si l'ordre des colonnes n'a plus d'importance, le nom de celles-ci devient statique .
VB:
Private Sub CommandButton_Validation_Click()
Dim lg
   
    With [Tableau134].ListObject
        lg = .ListRows.Add.Index
        .ListColumns("Réf").DataBodyRange.Rows(lg) = TBox1.Value
        .ListColumns("Nom du demandeur").DataBodyRange.Rows(lg) = TBox2.Value
        .ListColumns("Date de réservation").DataBodyRange.Rows(lg) = Format(Tbox3.Value, "dd/mm/yy")
        .ListColumns("Heure de réservation").DataBodyRange.Rows(lg) = Format(Tbox4.Value, "hh:mm")
        .ListColumns("Zone de retrait").DataBodyRange.Rows(lg) = TBox5.Value
        .ListColumns("Validation").DataBodyRange.Rows(lg) = TBox6.Value
        .ListColumns("Description").DataBodyRange.Rows(lg) = TBox7.Value
    End With
   
    'Remplir le bon de sortie
    Sheets("Bon de sortie").Range("G6") = Tbox3.Value
    Sheets("Bon de sortie").Range("E13") = Tbox4.Value
    Sheets("Bon de sortie").Range("B23") = TBox2
    Sheets("Bon de sortie").Range("B27") = TBox7

    Impression
    RAZ
    UserForm_Initialize
       
End Sub

A vous de faire un choix ...😁
 

Discussions similaires

Réponses
4
Affichages
276

Statistiques des forums

Discussions
312 076
Messages
2 085 086
Membres
102 773
dernier inscrit
dorok