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
Bonsoir,
Si je comprend la demande, il faut ajouter la ligne renseignée dans la frame "PRISE DE NOTES DU PARCOURS" quand on clique sur le bouton "AJOUTER" aux lignes existantes dans une certaine feuille ?
Pas de gestion de doublons , vous risquez de vite saturer votre classeur .
Pour ce faire, créez une nouvelle feuille, par exemple "Journal"
et insérez les lignes de codes ci-dessous en début de procédure "CmbAjouter_Click":
VB:
    With Sheets("Journal")
      ' On laisse la ligne 1 pour éventuellement des entêtes
        L = .Columns("A").Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext).Row
        .Rows(L).Resize(, 7) = Array(CmB_Categories, CmB_Type, TextBoxLIGNE, TextBoxVOIE, TextBoxDU_PK, TextBoxAU_PK, TextboxCAUSES)
    End With
 

pelerin65

XLDnaute Occasionnel
Bonsoir fanch55
voila mon code pour ajouter dans la listview2
j ai des couleurs pour chaque categories.

la ca bugue avec la ligne suivante

Voila le code complet du bouton ajouter dans la listview
'******************************************************************************************************************************
'Ajout des données dans la listview2
'******************************************************************************************************************************
Private Sub CmbAjouter_Click()
'variables pour la création de la Ligne et des colonnes de la ListView
Dim LstVitem As Object, LstVsItem As Object
Dim Indx_Lvw As Byte
'Variable Couleur
Dim StrColor
Dim L As Long
Dim Lvw

'PROGRAMME---------> Indx_Lvw2
'MESURE ACH---------> Indx_Lvw2
'PROG EIC LOC-------> Indx_Lvw2
'LTV----------------> Indx_Lvw2

'With Sheets("Journal")
' On laisse la ligne 1 pour éventuellement des entêtes
'L = .Columns("A").Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext).Row
'.Rows(L).Resize(, 7) = Array(CmB_Categories, CmB_Type, TextBoxLIGNE, _
'TextBoxVOIE, TextBoxDU_PK, TextBoxAU_PK, TextboxCAUSES)
'End With


If CmB_Categories <> "" Then
If CmB_Categories = "MESURE" Then
Lvw = 2
'On détermine la couleur de la ligne "MESURE"
StrColor = RGB(20, 148, 20)

ElseIf CmB_Categories = "ACH" Then
Lvw = 2
'On détermine la couleur de la ligne "ACH"
StrColor = &HFF0000

ElseIf CmB_Categories = "PROG" Then
Lvw = 2
'On détermine la couleur de la ligne "PROG
StrColor = RGB(185, 0, 0)

ElseIf CmB_Categories = "EIC" Then
Lvw = 2
'On détermine la couleur de la ligne "EIC"
StrColor = RGB(255, 0, 0)

ElseIf CmB_Categories = "LOC" Then
Lvw = 2
'On détermine la couleur de la ligne "LOC"
StrColor = RGB(222, 49, 99)

ElseIf CmB_Categories = "LTV" Then
Lvw = 2
'On détermine la couleur de la ligne "LTV"
StrColor = RGB(230, 126, 48)
End If

With Me.Controls("ListView" & Lvw)

'On crée une Nouvelle Ligne, on met la valeur dans la première colonne de cette Ligne
Set LstVitem = .ListItems.Add(, , CmB_Type.Value)
'Avec cette première colonne de la Ligne
With LstVitem
'On la colore
.ForeColor = StrColor
'On crée une Nouvelle Colonne
Set LstVsItem = .ListSubItems.Add(, , TextBoxLIGNE.Value)
'Avec cette nouvelle Colonne
With LstVsItem
'On la colore
ForeColor = StrColor
End With
'On crée une Nouvelle Colonne
Set LstVsItem = .ListSubItems.Add(, , TextBoxVOIE.Value)
With LstVsItem
'On la colore
.ForeColor = StrColor
End With
'On crée une Nouvelle Colonne
Set LstVsItem = .ListSubItems.Add(, , TextBoxDU_PK.Value)
With LstVsItem
'On la colore
.ForeColor = StrColor
End With
'On crée une Nouvelle Colonne
Set LstVsItem = .ListSubItems.Add(, , TextBoxAU_PK.Value)
With LstVsItem
'On la colore
.ForeColor = StrColor
End With
'On crée une Nouvelle Colonne
Set LstVsItem = .ListSubItems.Add(, , TextboxCAUSES.Value)
With LstVsItem
'On la colore
.ForeColor = StrColor
End With
End With
End With

' With Me.Controls("ListView" & Lvw)
' .ListItems.Add , , CmB_Type.Value
' L = .ListItems.Count
' .ListItems(L).ListSubItems.Add , , TextBoxLIGNE.Value
' .ListItems(L).ListSubItems.Add , , TextBoxVOIE.Value
' .ListItems(L).ListSubItems.Add , , TextBoxDU_PK.Value
' .ListItems(L).ListSubItems.Add , , TextBoxAU_PK.Value
' .ListItems(L).ListSubItems.Add , , TextboxCAUSES.Value
' End With

' CmB_Type.Value = ""
' TextBoxLIGNE = ""
' TextBoxVOIE = ""
' TextBoxDU_PK = ""
' TextBoxAU_PK = ""
' TextboxCAUSES = ""
End If

End Sub
 

pelerin65

XLDnaute Occasionnel
Bonsoir le Fil
Question :
On a les données dans

Puis en rouge dans
L'autre frame "Validation des notes "
Qui contient plusieurs lignes , d'où viennent ces lignes ? De la feuille où il faut coller la ligne en rouge ?
Édit : Depuis mon téléphone
Bonne fin de soirée
Jean marie
Bonsoir ChTi160

Le principe de la prise de notes
Je remplis les combobox et textboxs, j'appuies sure le bouton ajouter, elle se copie dans la listview
j'aimerais pouvoir avoir une sauvegarde dans un onglet du fichier ouvert

Cordialement
 

pelerin65

XLDnaute Occasionnel
Re
vite fait
Tu mets ceux ci plutôt que le Find()
VB:
With Sheets("Journal")
       'On laisse la ligne 1 pour éventuellement des entêtes
         L = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
''''        L = .Columns(1).Find("", SearchOrder:=xlByRows, SearchDirection:=xlNext).Row
     .Rows(L).Resize(, 7) = Array(CmB_Categories, CmB_Type, TextBoxLIGNE, _
        TextBoxVOIE, TextBoxDU_PK, TextBoxAU_PK, TextboxCAUSES)
    End With
Jean marie
Re
Ca fonctionne bien maintenant
si je voulais avoir la date du jour et les entêtes des colonnes de la listview
 

pelerin65

XLDnaute Occasionnel
Re
petite question
tu as dans ton tableau de la feuille "BD" des références Kilométriques de cette forme "256,859"
alors que tu affiche dans la ListeView2 des références Kilométriques de ce format "256+859"
pourquoi ne pas permettre la saisie de la virgule dans les TextBox ?
Jean marie
RE
C'est vrai j ai juste a remplacer le "+" par la ","

j'aimerai pourvoir modifier avec le bouton "Modifier", les lignes du la listview2 lorsque j ai fait une erreur de frappe.
 

fanch55

XLDnaute Barbatruc
le voila
j ai collé le code de fanch55
Regarde la pièce jointe 1196186
Exact, c'est une erreur qui peut se produire quand la feuille vient juste d'être créée .
Erreur plutôt incompréhensible mais qui ne devrait plus se produire si on met les entêtes dans la ligne 1 .
Code corrigé pour info :
VB:
    With Sheets("Journal")
       Dim R As Range: Set R = .Columns("A").Find("", SearchOrder:=xlByRows, SearchDirection:=xlPrevious)
       If R Is Nothing Then Set R = .Cells(2, 1) ' la première ligne pourraient être des entêtes
        .Rows(R.Row).Resize(, 7) = Array(CmB_Categories, CmB_Type, TextBoxLIGNE, _
                                         TextBoxVOIE, TextBoxDU_PK, TextBoxAU_PK, TextboxCAUSES)
        .Columns.AutoFit
    End With
 

pelerin65

XLDnaute Occasionnel
Bonjour,
Lorsqu'on veut créer un double-clic dans une listview ca fonctionne avec des textboxs mais avec des combobox aussi ou pas.

'**********************************************************************************************************************************
'Bouton MODIFIER
'**********************************************************************************************************************************
Private Sub CmbRemplacerLigne_Click()
Dim I As Byte
Dim LigneTransfert As Byte
If MémoireCode = "" Then
MsgBox " aucune ligne sélectionnée"
Exit Sub
End If
For I = 1 To Me.ListView2.ListItems.Count
If Me.ListView2.ListItems(I).SubItems(1) = MémoireCode Then
LigneTransfert = I
Exit For
End If
Next
'Me.ListView2.ListItems(I).SubItems(0) = Me.CmB_Type
Me.ListView2.ListItems(I).SubItems(1) = Me.TextBoxLIGNE
Me.ListView2.ListItems(I).SubItems(2) = Me.TextBoxVOIE
Me.ListView2.ListItems(I).SubItems(3) = Me.TextBoxDU_PK
Me.ListView2.ListItems(I).SubItems(4) = Me.TextBoxAU_PK
Me.ListView2.ListItems(I).SubItems(5) = Me.TextboxCAUSES
MémoireCode = ""
effacer
MsgBox "remplacement effectué"
ListView2.ListItems(1).Selected = False
Set ListView2.SelectedItem = Nothing
End Sub
car mon code fonfonne seulement avec les textboxs
cordialement
ou est mon erreur
 

pelerin65

XLDnaute Occasionnel
Re
je reprends depuis le début avec l'idée du fonctionnement ce fichier,
- A l'ouverture du fichier s'ouvre userfrom "ACCEUIL", cette userfrom permets de rechercher une journée de travail , en cliquant sur "AFFICHER",
1.png



ça ouvre l'userfrom "Préparation", avec la journée programmé et ses informations programme du jour (fond orange)
2.png

Dans le fond vert, c'est la partie prise de notes
- Avec la frame de Notes de parcours,
- On valide les Pk d'entrée réels et Pk d'arrivée réels de "Mesure"
- Il peut y avoir des Acheminements (ACH).
- Il peut y avoir aussi les problèmes de prog, EIC, LOC.
- Il peut y avoir des LTV (Limitation temporaire de vitesse).
toutes ses infos, au fur de la journée, on les mets avec le Bouton "Ajouter".
le tout s'affiche dans la listview "validation des notes".

-Avec la frame "DOCUMENTS DU JOUR"
la Première listbox fonctionne avec la combobox "livrets du jour" docs en PDF en cliquant dessus qui s'affiche dans le webbrowser à Gauche (fond Blanc)
le deuxième listbox " Sillons" ce sont des marches en PDF qui s'affiche dans le webbrowser à Gauche (fond Blanc)

-Le bouton "Supprimer" est fonctionnel (une ligne, en cas d'une erreur dans les catégories)
étant donné sélectionner la ligne entière.

Mes problèmes dans mon codage sont:

-le bouton "Modifier" fonctionne partiellement
Le double-clic fonctionne seulement sur les textboxs mais me remplit pas la combobox "Type"
Quand je veux modifier par exemple la troisième entrée
Quand j'appuies sur modifier,
Ca modifie la première ligne, pas la ligne concernée.
la mémorisation de la listbox2 "Validation"


La création du fichier en le renommant avec la textbox "N° de tournée".
Ce qui permet d'avoir toujours un fichier vierge pour les tournées suivantes et de créer des sauvegardes

Dans mon ancien fichier, le code était par rapport à un onglet,
Voici l'ancien code:

nomF = Sheets("Tableau de Bord").Range("Q2") '<- adapter éventuellement le nom de la feuille
If nomF <> "" Then
fichier = Dir(CHEMIN_TR & nomF & ".xls*")
If Left(fichier, Len(nomF)) = nomF Then
VREP = MsgBox("Le Fichier" & " " & [Q2] & " " & "existe, l'ouvrir?", vbYesNo)
If VREP = 6 Then
Set wb = Workbooks.Open(CHEMIN_TR & fichier)
End If
Else
VREP = MsgBox(fichier & "La tournée" & " " & [Q2] & " " & "n'existe pas, création d'un nouveau fichier ?", vbYesNo)
If VREP = 6 Then
Set wb = Workbooks.Open(CHEMIN_FICHIER_TR_BASE)
wb.SaveAs (CHEMIN_TR & nomF & ".xlsb")
End If
End If
End If

Et le chemin du dossier: "C:\Notes 2025\ESV 702 2025\Notes.xlsb"

J'espère que mes explications sont plus clair pour le fonctionnement de ce fichier

J ai très peu de notion de vba,
Je lis beaucoup j essaie de comprends des fichiers en regardant les codes qui sont dessus,
J'essaies de les adapter et je demande de l'aide sur le forum
cordialement
A+ JL
 

Pièces jointes

  • Notes.xlsb
    330.7 KB · Affichages: 4

pelerin65

XLDnaute Occasionnel
re Bonjour Jean luc

je travaille sur ton fichier (qui change souvent , des bouton apparaissent Lol)
je me pose la question tu as , lorsque tu selectionnes une Ligne dans ta ListView2 , les lignes qui passent au Blanc ( de plus tu as la posibilité de Séléctionner plusieurs Lignes ) ne serait il pas plus adapter de ne laisser apprentent que les Lignes a supprimer , plutôt que de les mettre en Blanc ?
je ne sais pas si je suis clair ! Lol
jean marie
re
lors de la création du rapport, en fin de journée, mettre en blanc les lignes qu'on a vérifié à éviter de faire des erreurs ou des doublons
 

Discussions similaires

Statistiques des forums

Discussions
314 713
Messages
2 112 133
Membres
111 434
dernier inscrit
dellidjk