Microsoft 365 Modification dans base

eric72

XLDnaute Accro
Bonjour à tous,
Je rencontre un problème de modification dans une base de données nommée TbProduit
Je m'explique quand je lance mon Userform par le menu et que je veux modifier cet article:
E COMMERCE PART - D17 TERRE
Lorsque je clique sur le bouton modifier , cela modifie bien ma base nommée BDProduit (onglet Produit), mais il ajoute une ligne dan s la base TbProduit (onglet Données)plutôt que modifier la ligne existante et cela ne le fait pas avec tous les produits, je ne comprends pas pourquoi, voilà le code du bouton modifier :

Private Sub BtModifBaseProd_Click()
Call Unprotect
Call afficher
Application.ScreenUpdating = False
Dim R, X, V, I&, reponse
If PrixVente = "" Then MsgBox "Renseignez le prix de vente avant !!!": Exit Sub
If CDbl(PrixVente) < CDbl(CoutRevient) Then MsgBox "prix de vente incohérent avec le cout de revient " & vbCrLf & "veuillez corriger SVP": Exit Sub
reponse = MsgBox(" Confirmer la Modification de ce Produit", vbYesNo + vbCritical)
If reponse = vbYes Then
V = Array(NomPlante, CodeArticle, CdtPlante, PrixAchatPlante, CoeffPlante, "", "", DiamPot, CoeffPot, "", "", RefPlaque, CoeffPlaque, _
"", "", "", TxtCoutHrMO, TxtTempsMO, "", RefChromo, "", "", RefEntourage, "", "", RefEtiquette, "", "", RefCdt, "", QteSoie, "", QteCordelette, _
"", QteEtiCar, "", CoeffCdt, "", RefEmballage, Qte1, "", RefEmballage2, Qte2, "", RefEmballage3, Qte3, "", "", TxtRefAccessoire, _
TxtDetPrixAccess, TxtPrixAccessoire, TxtCoeffAccess, "", PoidsPlante, "", NomTransVente, "", CbTransporteur, PrixVente, "", _
Abs(ObNonRempotee), Abs(ObRempotee), Abs(ChbCoeffPot), Abs(ChbCoeffPlaque), Abs(ChbCoeffCdt), Abs(ChbCoeffAccess), Abs(ChbCoeffPlante))
For I = 0 To UBound(V)
If IsNumeric(V(I)) Then V(I) = CDbl(V(I))
Next
With [BDProduit].ListObject
.ListRows(CbRechercheProduit.ListIndex + 1).Range.Value = V
End With

With Range("TbProduit").ListObject
.ListRows(CbRechercheProduit.ListIndex + 1).Range.Resize(, 4) = Array(NomPlante, CodeArticle, CDbl(PrixVente), Val(CdtPlante))
End With
triorder
TriOrder2
rempliLesLISTE
ModifS = ModifS + 1
Else
With CbRechercheProduit: I = .ListIndex: .ListIndex = -1: .ListIndex = I: End With 'on remet le produit a l'initial
End If

auriez-vous une idée géniale.
Merci beaucoup pour votre aide
Eric
 

Pièces jointes

  • Test.xlsm
    357.9 KB · Affichages: 5
Solution
Bonjour à tous,

J'ai trouvé une solution provisoire pas très conventionnelle en remplaçant

- With Range("TbProduit").ListObject
.ListRows(CbRechercheProduit.ListIndex + 1).Range.Resize(, 4) = Array(NomPlante, CodeArticle, CDbl(PrixVente), Val(CdtPlante))
End With
par
- With Sheets("Données")
Set Cel = .Columns("AE").Find(what:=Me.CbRechercheProduit, LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("AE" & Ligne) = Me.NomPlante
.Range("AF" & Ligne) = CodeArticle
.Range("AG" & Ligne) = PrixVente
.Range("AH" & Ligne) = CdtPlante
End If
End With
même si ça ne me plait pas beaucoup
Je suis persuadé qu'il y a une autre solution mais ne la trouve pas...

eric72

XLDnaute Accro
Bonjour à tous,

J'ai trouvé une solution provisoire pas très conventionnelle en remplaçant

- With Range("TbProduit").ListObject
.ListRows(CbRechercheProduit.ListIndex + 1).Range.Resize(, 4) = Array(NomPlante, CodeArticle, CDbl(PrixVente), Val(CdtPlante))
End With
par
- With Sheets("Données")
Set Cel = .Columns("AE").Find(what:=Me.CbRechercheProduit, LookIn:=xlValues, lookat:=xlWhole)
If Not Cel Is Nothing Then
Ligne = Cel.Row
.Range("AE" & Ligne) = Me.NomPlante
.Range("AF" & Ligne) = CodeArticle
.Range("AG" & Ligne) = PrixVente
.Range("AH" & Ligne) = CdtPlante
End If
End With
même si ça ne me plait pas beaucoup
Je suis persuadé qu'il y a une autre solution mais ne la trouve pas.

Merci encore et bonne journée à tout les passionnés.
Eric
 

ChTi160

XLDnaute Barbatruc
Bonjour Eric
je vois que tu as trouvé une solution, c'est bien !
j'ai remarqué que tu utilises :
VB:
.ListRows(CbRechercheProduit.ListIndex + 1).Range.Value
Pour modifier les deux BDD alors qu'elles n'ont pas la même Structure d'où le problème, je pense.
En base "BDProduit" tu as la référence à "E COMMERCE PART - D17 TERRE" qui se trouve en ligne 99
Et en Ligne 23 dans ta BDD "TbProduit".
Bonne Journée
Jean marie
 

eric72

XLDnaute Accro
Bonjour Chti160,
Merci beaucoup pour ta réponse, la ligne n'est pas la même parce que j'ai bricolé le fichier pour l'envoyer sans données senibles mais normalement ce sont les mêmes lignes, c'est plus facile avec les mêmes lignes?
Merci
Eric
 

Discussions similaires

Statistiques des forums

Discussions
312 083
Messages
2 085 187
Membres
102 809
dernier inscrit
Sandrine83