Microsoft 365 Userform Modifier une Ligne

eric72

XLDnaute Accro
Bonjour à tous,
Je me retrouve face à un problème qui me fait tourner en rond !!!
J'ai un userform avec un bouton Modifier mais quelle que soit la ligne sélectionnée il modifie toujours la dernière ligne...
Une âme charitable aurait-il une idée du pourquoi?
Merci beaucoup pour votre dévouement.
Eric
 

Pièces jointes

  • test.xlsm
    46.6 KB · Affichages: 7
Solution
Bonjour

s'il s'agit de modifier la ligne sélectionnée. il ne faut pas t'amuser à ajouter une ligne en cours de route (entre V=array... et W=Array

d'ailleurs.. pourquoi faire deux array??
tout comme tu as fait un W =array (X,Y,,ZZ) en laissant un vide entre Y et Z) tu peux faire un array unique
ensuite.. ton W contient 33 colonnes ==> resize (33) et pas resize (3)

VB:
Private Sub BtModifPlanning_Click()
TxtNbHrFinal = (TxtNbJrPose * 8)
If TxtDateDebut = "" Then MsgBox "Vous devez saisir une date de Début de Chantier": Exit Sub
If TxtHeure = "00:00" Then MsgBox "Vous devez saisir une Heure de Début de Chantier": Exit Sub
'*************************************************
'event bouton modifier PLANNING...

vgendron

XLDnaute Barbatruc
Bonjour

s'il s'agit de modifier la ligne sélectionnée. il ne faut pas t'amuser à ajouter une ligne en cours de route (entre V=array... et W=Array

d'ailleurs.. pourquoi faire deux array??
tout comme tu as fait un W =array (X,Y,,ZZ) en laissant un vide entre Y et Z) tu peux faire un array unique
ensuite.. ton W contient 33 colonnes ==> resize (33) et pas resize (3)

VB:
Private Sub BtModifPlanning_Click()
TxtNbHrFinal = (TxtNbJrPose * 8)
If TxtDateDebut = "" Then MsgBox "Vous devez saisir une date de Début de Chantier": Exit Sub
If TxtHeure = "00:00" Then MsgBox "Vous devez saisir une Heure de Début de Chantier": Exit Sub
'*************************************************
'event bouton modifier PLANNING
'*************************************************
Application.ScreenUpdating = False

Dim R, X, V, W, i&, reponse

prixdevis = IIf(TxtPxDevis.Value = "", 0, TxtPxDevis.Value)
With [T_Bdd].ListObject
    indx = Lst.ListIndex + 1 'numéro de la ligne sélectionne
    V = Array(CbPoseur, Format(TxtDateHeureDebut, "mm/dd/yyyy hh:mm"), CDbl(TxtNbHrFinal))
    .ListRows(indx).Range(2).Resize(, 3) = V
    W = Array(CDbl(TxtNbPoseur), TxtRefDevis, CbPoseur2, TxtVille, , TxtConfClient, TxtLivToury, CDbl(TxtNbJrPose), TxtCommentaire, CDbl(Qte1), TxtProd1, CDbl(Qte2), TxtProd2, _
    CDbl(Qte3), TxtProd3, CDbl(Qte4), TxtProd4, CDbl(Qte5), TxtProd5, CDbl(Qte6), TxtProd6, CDbl(Qte7), TxtProd7, CDbl(Qte8), TxtProd8, CDbl(Qte9), TxtProd9, _
    CDbl(prixdevis), TxtPoseAnnoncee, Abs(ChbRdvPris), CbPoseur3, CbPoseur4, TxtRefCommande)
    .ListRows(indx).Range(6).Resize(, 33) = W
    '                  LigSal = .ListRows.Count
    '        .ListRows(LigSal).Range.Cells(6).Resize(, 33) = W ' ajout ligne poseur1
End With
UserForm_Initialize     'on remet la listbox a jour automatiquement
Vidange
Application.ScreenUpdating = True

End Sub
 

Discussions similaires