Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
213
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…