Erreur d'exécution '1004

Bonjour à toutes, tous,

Je me sers du fichier ci-joint depuis quelques temps sans problème. Aujourd'hui je l'ai modifié et j'ai une "Erreur d'exécution '1004'" qui apparait lorsque je clique sur le bouton "Valider".

En cliquant sur "débogage" il me surligne bien une ligne, le problème c'est qu'à chaque fois que je modifie la ligne en erreur et recommence le test, il me surligne une nouvelle ligne ....

Ce que je ne comprends pas c'est que les lignes qu'il m'indique n'ont rien à voir avec les modifications que j'ai apporté aujourd'hui ..... 😐

C'est probablement pas grand chose, mais à force d'avoir les yeux rivés sur Visual Basic, je vois double ... 😖

Si une âme charitable voulais bien ce pencher sur mon problème, merci d'avance ;)

Bonjour,

Qu'est-ce qu'il faut faire pour reproduire le problème ?

Daniel

Bonjour Dan,

Dans la feuille "ACHAT", cliquer sur le bouton "Informations;

Remplir la Textbox "Quantité" et "Prix Unitaire"; (vous pouvez remplir toutes les infos mais ce n'est pas indispensable)

Valider et confirmer;

L'erreur '1004' apparait.

En cliquant sur débogage, l'erreur est à la ligne 431 :

   ActiveSheet.ListObjects("Tb_Config").ShowTotals = True

J'ai essayé de mettre cette ligne en commentaire, recommencé la manip :

l'erreur est du coup sur la ligne 478 :

Columns("A:O").Columns.AutoFit

Et à chaque fois que je mets la ligne fausse en commentaire, il m'en sort une nouvelle ...

Remplir la Textbox "Quantité" et "Prix Unitaire"; (vous pouvez remplir toutes les infos mais ce n'est pas indispensable)

Valider et confirmer;

J'ai mis 10 dans les deux. Il m'a demandé de confirmer et a affiché de nouveau le userform ?

Daniel

Re,

ça c'est la démarche normal, sans erreur ....

J'ai fait pareil et voici ce qu'il m'affiche ....

Peut-être que si j'éteins mon pc et le rallume .... 😖

capture d ecran 9

Salut,

C'est programmé à la cuillère tout ceci.

  • Déprotèges la feuille avant d'y faire quoi que ce soit.
  • Tu as un tableau structuré donc utilises le
    • Ajoutes une ligne avec la propriété Add Set NewLine = Range("Tb_Config").ListObject.ListRows.Add
    • Ensuite utilises la propriété Range pour y écrire les données.
  • Attention aux données des zones de texte quand tu fait des multiplications.
  • Evites de passer ligne en Public c'est bon pour te créer des problèmes.
  • Pourquoi fermer et rouvrir UserForm1 il y a des moyens plus adaptés pour mettre à jour les données.

Voilà pour un début.

Bonsoir Jean-Paul,

Et bien on fait ce ce qu'on peut avec ce que l'on a ...

J'ai bien rentré votre code

Add Set NewLine = Range("Tb_Config").ListObject.ListRows.Add

Mais il doit me manquer un petit bout car cela ne fonctionne pas.

________

Que voulez-vous dire par :

Attention aux données des zones de texte quand tu fait des multiplications.

________

Evites de passer ligne en Public c'est bon pour te créer des problèmes.

Pourquoi donc ? c'est justement d'après les conseils d'une autre personne que depuis je mets ce genre de variable en public ?...

________

Pourquoi fermer et rouvrir UserForm1 il y a des moyens plus adaptés pour mettre à jour les données.

Lequel ?

A + ;)

Bonjour,

En dehors de ce que Jean Paul vous écrit qui concerne la manière dont vous ajoutez des données (supprimez le ADD devant le set), votre erreur est logique.

La procédure Worksheet_change dans votre feuille Achat est lancée à chaque fois que vous modifiez ou ajoutez des données entre les colonnes A et P (donc 16 fois !)
Là vous déprotegez et reprotégez à chaque fois que vous entrez une donnée dans la feuille Achat.

Il est donc normal que vous ayez un bug lorsque vous voulez enlever la ligne total du tableau structuré puisque votre feuille est protégée à ce moment là.

Cordialement

Bonsoir DAN,

(supprimez le ADD devant le set)

J'ai essayé sans mais rien à faire, NewLine ne serait il pas une variable à définir ? et si oui :"Integer" ?

Je comprends ! Effectivement, la procédure Worksheet_change fait parti des modifications de ce jours et je n'ai pas pensé à regardé là. je me suis focalisé sur l'Userform ...

Merci pour le coup de main ;)

A plus

Re,

Voilà Dan à presque tout dis.

Si tu n'as pas de ligne dans le tableau Tb_Config tu te retrouve avec les valeurs des entêtes de colonnes dans les zones de textes du formulaires. Ce qui peux créer des bugs.

Faire une sub pour mettre à jour le formulaire, avec la mise à jour des contrôles...

J'ai essayé sans mais rien à faire, NewLine ne serait il pas une variable à définir ? et si oui :"Integer" ?

C'est une ligne de tableau structuré, donc : Dim NewLine as ListRow

En complément voici des liens sur le blog de Pierre Fauconnier et de Laurent Ott, qui te seront grandement utiles si tu veux travailler correctement sur les tableaux structurés.

Bonne prog.

Re,

Ok, merci pour la définition de la variable.

Au plaisir ;)

Bonjour,

En complément à jean Paul, suite à une conversation que j'ai eue avec Thev, il a fait un intéressant résumé qui est disponible ici --> Tableaux Structurés - VBA


Je comprends ! Effectivement, la procédure Worksheet_change fait parti des modifications de ce jours et je n'ai pas pensé à regardé là. je me suis focalisé sur l'Userform ..

Pensez à faire du débogage avec la touche F8.
Il faut revoir votre code Valider avec les instructions utilisables en tableaux structurés.
Le code Worksheet_change peut faire partie de votre code Valider puisque vous allez connaitre la ligne sur laquelle vous appliquez la couleur. Mais vous pouvez aussi faire un code séparé que vous appelez depuis la macro Valider
D'autre part, vous n'aurez plus besoin de mettre votre ligne Total à True puis à False

Cordialement

Re,

merci pour le lien.

Je prends bonne note de vos remarques et vais améliorer tout cela ;)

Bonne journée

Rechercher des sujets similaires à "erreur execution 1004"