XL 2021 Erreur d'exécution '-2147417848 (80010108). La méthode '-Default' de l'objet 'Range' a échoué après quelques saisies d'enregistrement

Rv_38

XLDnaute Nouveau
Bonjour à tous,

Nouveau venu sur le forum, je fais appel à vos compétences. J'ai créé une base de gestion stock pour enregistrer au travers de userforms des articles, des achats et des ventes de produits. Mon problème est qu'après une dizaine de saisies, l'erreur d'exécution '-2147417848 (80010108). La méthode '-Default' de l'objet 'Range' a échoué se produit.
La 1° cellule de la nouvelle ligne du tableau structuré reçoit bien la valeur du textbox concerné mais mon code bug et je n'ai pas d'autre choix que de fermer Excel et perdre les données saisies avant mon "plantage". Japprends depuis peu et grace au forum à utiliser VBA. je suis loin d'avoir toutes vos connaissances. J'ai recréée mon fichier pensant qu'il était corrompu mais rien n'y fait
Malgré de nombreuses recherches sur internet, je ne trouve pas de solution pour corriger ce bug.
Je joint mon fichier et le code. Si l'un de vous peut me venir en aide.
Merci par avance et bonne journée
Rv38
 

Pièces jointes

  • V9 Gestion Stock.xlsm
    90.9 KB · Affichages: 12

laurent950

XLDnaute Accro
Bonjour,

Je pense que c'est cette ligne qui coince : Set DataSheet = FeuilDonneesVente
FeuilDonneesVente c'est déjà une variable objet de type Worksheet
donc
Dim DataSheet As Worksheet
Set DataSheet = FeuilDonneesVente
VB:
        FeuilDonneesVente.Cells(I, 1).Value = Me.TxCodeArticle.Value
        FeuilDonneesVente.Cells(I, 2).Value = Me.TxLibelleArticle.Value
        FeuilDonneesVente.Cells(I, 3).Value = CDbl(Me.TxPrix.Value)
        FeuilDonneesVente.Cells(I, 4).Value = CDbl(Me.TxQuantite.Value)
        FeuilDonneesVente.Cells(I, 5).Value = CDbl(Me.TxMontant.Value)
        FeuilDonneesVente.Cells(I, 6).Value = DateS
        FeuilDonneesVente.Cells(I, 7).Value = Me.TxCodeFamille.Value
        FeuilDonneesVente.Cells(I, 8).Value = Me.TxLibelleFamille
        FeuilDonneesVente.Cells(I, 9).Value = Me.TxUniteVente
 

Oneida

XLDnaute Impliqué
Bonjour a tous,

laurent950

Chez moi j'ai fait cette modif pour qu'il n'y ait plus d'erreur cote vente
VB:
Set DataSheet = Worksheets(FeuilDonneesVente.Name)

Ce qui est un peu deroutant, c'est que vous utilisez soit des tables (tableau) soit des cellules ou plages de cellule pour ecrire vos infos
ex:
Actualiser Stock:
Raz de la table TblStock
Code:
        With DataSheetStock.ListObjects("TblStock")
            If Not .DataBodyRange Is Nothing Then
                .DataBodyRange.Rows(1 & ":" & .DataBodyRange.Rows.Count).EntireRow.Delete
            End If
        End With

Ecriture ligne de la table Stock
Code:
            Set Plage = Range(DataSheetArticle.Cells(I, 1), DataSheetArticle.Cells(I, 5))
            Set Cell = DataSheetArticle.Cells(I, 9)
            Set MyRange = Union(Plage, Cell)
    
            'Identifier si la Qté en stock de la feuilDonneesArticles est supérieure à zéro
            If DataSheetArticle.Cells(I, 9) > 0 Then
            'Si Qté >0 alors selection des cellules feuilDonneesArticle, copie et coller dans la feuilDonneesStock
                A = DerLigneStock(FeuilDonneesStock.Name)
                MyRange.Copy DataSheetStock.Cells(A, 1)
            End If
 

Rv_38

XLDnaute Nouveau
Bonjour laurent950,

Merci pour ta réponse. Je viens de tester ton code, mais le bug se produit toujours après quelques enregistrement au niveau de FeuilDonneesVente.Cells(I, 1).Value = Me.TxCodeArticle.Value qui est bien enregistré dans la FeuilDonnéesVente mais pas pour les autres cells.

Idem pour FeuilDonneesAchat. J'essaie de trouver une astuce avec go to error qui pourrait me permettre le delete de la ligne en erreur avec un msgbox mais je galère
Merci à toi je te tiens au courant
Herve
 

Rv_38

XLDnaute Nouveau
Oneida,

Merci à toi Concernant la feuilDonneesStock, j'ai mis en standby le code suite à mon pb de bug, mais tu as raison il n'est pas judicieux. Je verrai par la suite et te demanderai conseil. Je teste ta proposition
Set DataSheet = Worksheets(FeuilDonneesVente.Name) pour la vente et la même chose sur achat puisque le pb existe aussi
A+ Hervé
 

laurent950

XLDnaute Accro
Bonsoir

ici
Dim DataSheet As Worksheet
Set DataSheet = Worksheets("Donnees_Vente") ' = le nom de la feuille "Donnees_Vente"

Changer cette partie de code :

VB:
    Dim I As Long
    Dim DateS As Date
    Dim DataSheet As Worksheet
    Set DataSheet = Worksheets("Donnees_Vente")
 
    If AjoutModification = True Then
        I = Derligne(DataSheet.Name)    'Appelle la fonction public Derligne du ModulePrincipal
    Else
        I = LigneAmodifier
    End If
 
    DateS = Me.TxDate.Value
    On Error Resume Next
        DataSheet.Cells(I, 1) = Me.TxCodeArticle.Value
        DataSheet.Cells(I, 2) = Me.TxLibelleArticle.Value
        DataSheet.Cells(I, 3) = CDbl(Me.TxPrix.Value)
        DataSheet.Cells(I, 4) = CDbl(Me.TxQuantite.Value)
        DataSheet.Cells(I, 5) = CDbl(Me.TxMontant.Value)
        DataSheet.Cells(I, 6) = DateS
        DataSheet.Cells(I, 7) = Me.TxCodeFamille.Value
        DataSheet.Cells(I, 8) = Me.TxLibelleFamille
        DataSheet.Cells(I, 9) = Me.TxUniteVente
   On Error GoTo 0
    
Unload Me
 
    End If

End Sub
 
Dernière édition:

Rv_38

XLDnaute Nouveau
Oneida,

Merci à toi Concernant la feuilDonneesStock, j'ai mis en standby le code suite à mon pb de bug, mais tu as raison il n'est pas judicieux. Je verrai par la suite et te demanderai conseil. Je teste ta proposition
Set DataSheet = Worksheets(FeuilDonneesVente.Name) pour la vente et la même chose sur achat puisque le pb existe aussi
A+ Hervé
Oneida,

J'ai testé mais ça bug à la 11éme saisie. je vais voir avec dernière solution de Laurent950
Merci
 

Rv_38

XLDnaute Nouveau
Bonsoir

ici
Dim DataSheet As Worksheet
Set DataSheet = Worksheets("Donnees_Vente") ' = le nom de la feuille "Donnees_Vente"

Changer cette partie de code :

VB:
    Dim I As Long
    Dim DateS As Date
    Dim DataSheet As Worksheet
    Set DataSheet = Worksheets("Donnees_Vente")
 
    If AjoutModification = True Then
        I = Derligne(DataSheet.Name)    'Appelle la fonction public Derligne du ModulePrincipal
    Else
        I = LigneAmodifier
    End If
 
    DateS = Me.TxDate.Value
 
        DataSheet.Cells(I, 1) = Me.TxCodeArticle.Value
        DataSheet.Cells(I, 2) = Me.TxLibelleArticle.Value
        DataSheet.Cells(I, 3) = CDbl(Me.TxPrix.Value)
        DataSheet.Cells(I, 4) = CDbl(Me.TxQuantite.Value)
        DataSheet.Cells(I, 5) = CDbl(Me.TxMontant.Value)
        DataSheet.Cells(I, 6) = DateS
        DataSheet.Cells(I, 7) = Me.TxCodeFamille.Value
        DataSheet.Cells(I, 8) = Me.TxLibelleFamille
        DataSheet.Cells(I, 9) = Me.TxUniteVente
Laurent950,

Je viens de tester ton idée, ça bug toujours. Je ne comprends pas. Je dois trouver un moyen d'intercepter l'erreur et de supprimer la ligne de mon tableau structuré et ressaisir les infos pour les enregistrer sur ma feuille.
J'espère que mon fichier n'est pas à nouveau corrompu/.
Merci à vous 2
 

Rv_38

XLDnaute Nouveau
Bonjour Oneida,

Pour voir, j'ai supprimé tous les Datasheet de mes procédures et j'ai remplacé par With nom de la feuil et End With. Rien n'y fait. Je regarde coté conso mémoire et gestion d'erreur.
Merci et bonne journée
 

Oneida

XLDnaute Impliqué
Vous pouvez mettre a dispo votre fichier modifie, ca gagnerait du temps

Suite:
Quand vous avez ecrit: "Mon problème est qu'après une dizaine de saisies"
Ceci sous-entendait peu importe la saisie vente, achat ou autre

Je viens de constater sur une erreur d'execution, click sur debug, attendre deux a trois secondes, click sur executer: le code de la ligne en erreur s'execute sans probleme et c'est reparti pour un tour

Suite1:
Quand je ferme votre fichier, excel se rouvre!!!
 
Dernière édition:

Rv_38

XLDnaute Nouveau
Vous pouvez mettre a dispo votre fichier modifie, ca gagnerait du temps

Suite:
Quand vous avez ecrit: "Mon problème est qu'après une dizaine de saisies"
Ceci sous-entendait peu importe la saisie vente, achat ou autre

Je viens de constater sur une erreur d'execution, click sur debug, attendre deux a trois secondes, click sur executer: le code de la ligne en erreur s'execute sans probleme et c'est reparti pour un tour

Suite1:
Quand je ferme votre fichier, excel se rouvre!!!
 

Rv_38

XLDnaute Nouveau
Oneida, internet hs suite gros orage, je réponds par téléphone. Oui bug peu importe saisie famille article etc. Je vais testé ton idée. Oui excel se reouvre à la fermeture ??? Même après avoir reconstruit tout mon fichier pensant qu'il était corrompu. Je te tiens informé, en montagne une réparation internet prend 2 à 3 jours. Merci à toi
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 252
Membres
103 166
dernier inscrit
ZAHRAA