Microsoft 365 Modification dans base

  • Initiateur de la discussion Initiateur de la discussion eric72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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...
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
 
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
70
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
497
Réponses
3
Affichages
508
Réponses
3
Affichages
859
Réponses
8
Affichages
905
Retour