Microsoft 365 Insertion donnée dans une ligne en fonction d'une valeur de Cellule

olivier91620

XLDnaute Nouveau
Bonsoir,

Ayant commencer récemment avec le langage VBA, je suis a la rechercher d'une solution pour mon problème.

Dans mon suivi d'outillage, j'aimerai enregistrer les valeurs saisie dans le tableau 2 a la ligne ou la valeur "Me.List_order_retour.List(ligne, 1)" est égal a la valeur de la colonne F.

J'ai essayer plein de code mais je ne parviens pas a trouver la solution. Voici un extrait de mon code:

Private Sub Btn_enregistrement_retour_Click()
Dim list_nombre As Integer
Dim ligne As Integer
Dim N As Integer
Dim L As Integer
Dim i As Integer

list_nombre = Me.List_order_retour.ListCount

If Me.List_order_retour.ListCount > 0 Then 'contrôle si la liste n'est pas vide

If MsgBox("voulez-vous enregistrer cette transaction?", vbYesNo) = vbYes Then

For ligne = 0 To list_nombre

N = Me.List_order_retour.List(ligne, 1).Text

For i = 6 To Range("b9999").End(xlUp).Row

If Sheets(1).Cells(i, 6).Value = N Then

L = i

'ajouter une nouvelle ligne dans notre tableau
Sheets(1).ListObjects(2).ListRows.add

'ajouter les informations dans notre base de donnée
Sheets(1).Range("h" & L) = Me.Txt_nom_retour
Sheets(1).Range("i" & L) = Me.Txt_date_retour
Sheets(1).Range("j" & L) = Me.Txt_do_retour


'ajouter les données de la zone de liste
Sheets(1).Range("k" & L) = Me.List_order_retour.List(ligne, 0)
Sheets(1).Range("l" & L) = Me.List_order_retour.List(ligne, 1)
Sheets(1).Range("m" & L) = CInt(Me.List_order_retour.List(ligne, 2))


MsgBox "Booking est fait"
Unload Me
ThisWorkbook.Save

End If

Next i

Next ligne

End If


End If

End Sub

Je vous parvenir mon fichier Excel afin d'y voir plus clair.
 

Pièces jointes

  • suivi outillage V6.1.xlsm
    50.2 KB · Affichages: 20

fanch55

XLDnaute Barbatruc
Bonjour,
Pour vous faire avancer , à mettre dans votre Userform
VB:
Private Sub Cbo_park_retour_Change()
Dim R As Range
        
    Set R = [Tableau_Demande[N° park]].Cells.Find(Cbo_park_retour, LookAt:=xlWhole)
    If Not R Is Nothing Then
        R.Select
        Txt_nom_retour = [Tableau_Demande[@[Nom Employés ]]]
        Cbo_type_retour = [Tableau_Demande[@[Type]]]
        Txt_do_retour = [Tableau_Demande[@[N° DO ]]]
        Txt_nombre_retour = [Tableau_Demande[@[Nombre]]]
        Set R = Nothing
    End If

End Sub
Private Sub Btn_enregistrement_retour_Click()
Dim R       As Range
Dim Ligne   As Integer
Dim I       As Integer

Select Case True
    Case Me.List_order_retour.ListCount = 0: 'liste vide : on ne fait rien
    Case MsgBox("voulez-vous enregistrer cette transaction?", vbYesNo) = vbNo: 'on ne fait rien
    Case Else
       For Ligne = 0 To Me.List_order_retour.ListCount - 1
            Set R = [Tableau_Demande[N° park]].Cells.Find(List_order_retour.List(Ligne, 1), LookAt:=xlWhole)
            If Not R Is Nothing Then
                I = R.Row - [Tableau_Retour[#Headers]].Row
                [Tableau_Retour[Nom Employés ]].Rows(I) = [Tableau_Demande[Nom Employés ]].Rows(I)
                [Tableau_Retour[N° DO ]].Rows(I) = [Tableau_Demande[N° DO ]].Rows(I).Text
                [Tableau_Retour[Type]].Rows(I) = [Tableau_Demande[Type]].Rows(I).Text
                [Tableau_Retour[Nombre]].Rows(I) = [Tableau_Demande[Nombre]].Rows(I)
                [Tableau_Retour[N° park]].Rows(I) = [Tableau_Demande[N° park]].Rows(I).Text
                [Tableau_Retour[Date]].Rows(I) = CDate(Txt_date_retour)
            End If
        Next
        MsgBox "Booking est fait"
        Unload Me
        ThisWorkbook.Save
End Select

End Sub

Mais repensez bien à ce que vous voulez vraiment faire, au risque de rencontrer des doublons .
Les informations sont redondantes dans les 2 tables , y-a-t-il vraiment besoin de plusieurs ?
 

Discussions similaires

Réponses
4
Affichages
165

Statistiques des forums

Discussions
311 720
Messages
2 081 892
Membres
101 831
dernier inscrit
gillec