Microsoft 365 Enregistrement des notes prises dans un fichier

pelerin65

XLDnaute Occasionnel
Bonjour le forum,

J'ai un userform avec une frame "PRISE DE NOTES DU PARCOURS3 ET 2 boutons "Ajouter" et "Modifier"

je n'ai pas trouvé de solutions sur les forums.

j'aimerais lors du clic sur "Ajouter", qu'il enregistre dans une feuille du fichier afin d'éviter de perdre les données.

3.png
 

Pièces jointes

  • esv3-3.xlsb
    361.6 KB · Affichages: 11

fanch55

XLDnaute Barbatruc
Bonjour le Fil
je vois que dans le Ficher de fanch55 , il n'est plus question de ListView2.CheckBoxes à True !
Jean marie
Salut @ChTi160 , je n'en vois pas l'utilité sauf pour une suppression multiple.
Pour l'ajout, cela n'a pas d'impact .
Pour une modification, c'est absolument inutile puisqu'il n'y a qu'une ligne de saisie ...

( A moins d'une fonction non encore définie 🤔 ? )
 

pelerin65

XLDnaute Occasionnel
Salut @ChTi160 , je n'en vois pas l'utilité sauf pour une suppression multiple.
Pour l'ajout, cela n'a pas d'impact .
Pour une modification, c'est absolument inutile puisqu'il n'y a qu'une ligne de saisie ...

( A moins d'une fonction non encore définie 🤔 ? )
Re fanch55
les checkboxes sont utiles lors de la fin de service pour checker les lignes déjà vérifier lors de la fin du service pour le rapport final car on peut avoir plus de 20 lignes.
Pourquoi lorsque que j ouvre le journal il y a un rafraichissement de la listview 1 (Voir fichier zip petit vidéo du phénomène)
 

Pièces jointes

  • Enregistrement 2024-05-06 162729.zip
    872.8 KB · Affichages: 2

pelerin65

XLDnaute Occasionnel
je te remercie Fanch55 et ChTi160,

Mon projet a bien avancé, et la c'est parfait pour cette partie de prise de notes

Private Sub CmbAjouter_Click()

' ThisWorkbook.Activate
' With [t_Journal].ListObject.ListRows.Add.Range
' .Resize(, 8) = Array(CmB_Categories, CmB_Type, TextBoxLIGNE, TextBoxVOIE, _
' TextBoxDU_PK, TextBoxAU_PK, TextboxCAUSES, Date)
' .Parent.Columns.AutoFit
' End With


If Not IsVide Then
'On crée une Nouvelle Ligne, on met la valeur dans la première colonne de cette Ligne
With Me.ListView2.ListItems.Add(, , Me.CmB_Type.Value)
.ForeColor = Color_Lvw 'On la colore
.ListSubItems.Add(, , Me.TextBoxLIGNE.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.TextBoxVOIE.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.TextBoxDU_PK.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.TextBoxAU_PK.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.TextboxCAUSES.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.CmB_Categories).ForeColor = .ForeColor
.Selected = True
End With
Effacer
End If

End Sub
la parie souligné, elle est toujours fonctionnelle en enlevant les virgules positionner devant ses lignes
Cordialement
 

pelerin65

XLDnaute Occasionnel
Bonjour le forum,ChTI160, Fanch55

Vous m'avez bien aider dans mon projet
il avance bien

hier soir, j ai rajouté du code pour le bouton Ajouter dans la listview2
Mais j'ai encore un soucis.
'******************************************************************************************************************************
'Ajout des données dans la listview2
'******************************************************************************************************************************
Private Sub CmbAjouter_Click()

Dim lg As Long, cl As Long, i As Long, j As Long
Dim T As Variant
Dim derlig As Long

If Not IsVide Then
'On crée une Nouvelle Ligne, on met la valeur dans la première colonne de cette Ligne
With Me.ListView2.ListItems.Add(, , Me.CmB_Type.Value)
.ForeColor = Color_Lvw 'On la colore
.ListSubItems.Add(, , Me.TextBoxLIGNE.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.TextBoxVOIE.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.TextBoxDU_PK.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.TextBoxAU_PK.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.TextboxCAUSES.Value).ForeColor = .ForeColor
.ListSubItems.Add(, , Me.CmB_Categories).ForeColor = .ForeColor
.Selected = True
End With

With ListView2
lg = .ListItems.Count
cl = .ColumnHeaders.Count
ReDim T(1 To lg, 1 To cl + 1)
For i = 1 To lg
T(i, 1) = .ListItems(i).Text
For j = 1 To cl - 1
T(i, j + 1) = .ListItems(i).ListSubItems(j).Text
Next j
Next i
End With

With Sheets("JOURNAL")
derlig = .Cells(Rows.Count, 1).End(xlUp).Row ' dernière ligne occupée
For i = 1 To lg ' boucle sur les lignes du tableau
' derlig + i => pour incrémenter au fur et à mesure les lignes de la feuille
.Range("A" & derlig + i) = T(i, 1) 'Categories
.Range("B" & derlig + i) = T(i, 2) 'Type
.Range("C" & derlig + i) = T(i, 3) 'Lignz
.Range("D" & derlig + i) = T(i, 4) 'Voie
.Range("E" & derlig + i) = T(i, 5) 'Du PK
.Range("F" & derlig + i) = T(i, 6) 'Au PK
.Range("H" & derlig + i) = T(i, 8) 'Localisation
Next i
End With


End If
Effacer
End Sub
lorsque j'ajoute une ligne, j'ai un décalage forcement il prends pas en compte la catégories et me décale type
3.png

j aimerais intégrer la catégories dans la sauvegarde de l'onglet Journal


cordialement
JL
 

fanch55

XLDnaute Barbatruc
Bonjour le forum,ChTI160, Fanch55

Vous m'avez bien aider dans mon projet
il avance bien

hier soir, j ai rajouté du code pour le bouton Ajouter dans la listview2
Mais j'ai encore un soucis.

lorsque j'ajoute une ligne, j'ai un décalage forcement il prends pas en compte la catégories et me décale type
Regarde la pièce jointe 1196353
j aimerais intégrer la catégories dans la sauvegarde de l'onglet Journal


cordialement
JL
Dans le dernier code fourni, si tu as décommenté les lignes dont tu parlais, il prend en compte la Catégorie
VB:
' ThisWorkbook.Activate ' indispensable si on a ouvert un autre classeur ...
' With [t_Journal].ListObject.ListRows.Add.Range
'     .Resize(, 8) = Array(CmB_Categories, CmB_Type, TextBoxLIGNE, TextBoxVOIE, _
'                          TextBoxDU_PK, TextBoxAU_PK, TextboxCAUSES, Date)
'     .Parent.Columns.AutoFit
' End With
 

fanch55

XLDnaute Barbatruc
Code à placer dans l'userform JOURNAL :
VB:
Option Explicit
Private Sub UserForm_Initialize()
Dim Cel As Range, Data As Range, Line As Range, It As ListItem
    With ThisWorkbook.Sheets("Journal")
        Set Data = .Range("A1").CurrentRegion
        For Each Line In Data.Rows
            With Me.ListView1
                If Line.Row = 1 Then
                    .ListItems.Clear
                    With .ColumnHeaders
                        .Clear
                        For Each Cel In Line.Cells
                            .Add , , Cel, Cel.Width
                        Next
                    End With
                Else
                    Set It = Nothing
                    For Each Cel In Line.Cells
                        If It Is Nothing Then
                            Set It = .ListItems.Add(, , Cel)
                        Else
                            It.ListSubItems.Add , , Cel
                        End If
                    Next
                End If
            End With
        Next
        Me.ListView1.ListItems(Me.ListView1.ListItems.Count).EnsureVisible
    End With
End Sub
 

pelerin65

XLDnaute Occasionnel
bonsoir
Re
question s Lol

le déroulé prévu de ta Journée est en ListView1(c'est ça ,)
Pourquoi ne pas mettre les Mêmes données dans la ListView2 ( tu aurais 5 colonnes prés remplie)
et les Modifier, si la journée ne se passe pas comme prévue sur le Plan ?( ça limiterait les erreurs de saisie )
les colonnes Parcours (ListView1) et Localisation (ListView2) ont elles un Rapport ?
jean marie
Bonsoir ChTI160
Aujourd'hui, cette partie fonctionne très bien
Parfois, il y a des changements programme, des modifications de mesure ou des ajours de mesure,
comme ça, c'est parfait.
 

pelerin65

XLDnaute Occasionnel
Code à placer dans l'userform JOURNAL :
VB:
Option Explicit
Private Sub UserForm_Initialize()
Dim Cel As Range, Data As Range, Line As Range, It As ListItem
    With ThisWorkbook.Sheets("Journal")
        Set Data = .Range("A1").CurrentRegion
        For Each Line In Data.Rows
            With Me.ListView1
                If Line.Row = 1 Then
                    .ListItems.Clear
                    With .ColumnHeaders
                        .Clear
                        For Each Cel In Line.Cells
                            .Add , , Cel, Cel.Width
                        Next
                    End With
                Else
                    Set It = Nothing
                    For Each Cel In Line.Cells
                        If It Is Nothing Then
                            Set It = .ListItems.Add(, , Cel)
                        Else
                            It.ListSubItems.Add , , Cel
                        End If
                    Next
                End If
            End With
        Next
        Me.ListView1.ListItems(Me.ListView1.ListItems.Count).EnsureVisible
    End With
End Sub
Bonsoir fanch55,
Désolé, j'étais au taf dans la journée.
J'ai vite regardé ton code, la je viens de le mettre dans l'userform "journal
Je le lance, il se passe rien.
6.png
1.png

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 155
Membres
112 671
dernier inscrit
Sylvain14