Erreur Add de ListRows

Bonjour à l'équipe,

J'aurais besoin d'aide concernant mon programme. Dans formulaire Clients Facturé ou Clients Intervention, lorsque je veux à l'aide du bouton "Ajouté" un Nom de Client à Facturé, j'ai l'erreur suivante

2020 06 08 15 56 52 saisie clients facture

qui s'affiche et m'oblige à fermer mon programme.

Je ne comprends pas car ça fonctionnait bien avant. J'ai juste apporté quelque modification, sur d'autres formulaires.

Ci-joint le programme

Merci dans l'attente d'un retour.

Bonne journée.

Riko

Bonjour

Dans votre code Ajouter faites ceci :

  • modifiez cette ligne --> j = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row + 1
  • Supprimez la ligne ListObj.ListRows.Add

Attention qu'il vous faut un numéro client à chaque ligne sans quoi cela ne fonctionnera pas

Si vous n'avez pas toujours un numéro client, remplacez le 1 par 2 dans la ligne ci-dessus

Cordialement

Edit : Vous pouvez aussi définir J comme ceci --> j = Sh.Range("TableauClientsFacturé").Rows.Count + 2

Bonjour Dan,

J'ai appliqué tes recommandations soit :

  • modifiez cette ligne --> j = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row + 2
  • Supprimez la ligne ListObj.ListRows.Add

le souci c'est que mon enregistrement se retrouve décalé par rapport au reste des lignes

2020 06 08 16 57 12 bon intervention 2020 v08062020 excel

, de plus je ne le retrouve pas dans mon menu déroulant

2020 06 08 16 57 33 saisie clients facture

J'ai également aussi testé :

j = Sh.Range("TableauClientsFacturé").Rows.Count + 2

Mais malheureusement j'ai la même boîte de dialogue soit

2020 06 08 15 56 52 saisie clients facture

Cordialement

Riko

Bonjour,

Vous avez un tableau structuré, c'est bien mais il faut l'utiliser correctement :

1- pas de ligne vide

2- utiliser méthodes et propriétés de classe ListObject et non celles de la classe Range

J'ai revu le code de votre CommandButton1 en conséquence et je n'ai pas d'erreur

ci-jointe version modifiée

Re

Si vous ne faites pas exactement ce que je dis, cela ne fonctionnera pas évidemment

J'ai appliqué tes recommandations soit :

  • modifiez cette ligne --> j = Sh.Cells(Sh.Rows.Count, 1).End(xlUp).Row + 2
  • Supprimez la ligne ListObj.ListRows.Add

C'est pas ce que je vous ai écrit cela...

Si vous avez encore l'erreur c'est que vous n'avez pas supprimé la ligne ListObj.ListRows.Add

Dan,

Je pense avoir effectué tes conseils, ci-joints le programme modifié.

Programme du bouton "Ajouté" formulaire "Saisie Client Facturé"

Riko

Bonjour thev,

J'ai testé le programme et toujours cette boîte de dialogue

2020 06 08 15 56 52 saisie clients facture

Tu m'indique que tu as revu le code CommandButton1 de quel formulaire.

Cordialement

Riko

Tu m'indique que tu as revu le code CommandButton1 de quel formulaire.

Le formulaire : FormSaisieBonIntervention

Ok, car mon défaut est sur le formulaire Clients Facturé et Clients Intervention

2020 06 08 17 58 29 bon intervention 2020 v08062020 excel

Re

Je n'avais pas de souci particulier avec Le formulaire : FormSaisieBonIntervention

Riko

car mon défaut est sur le formulaire Clients Facturé et Clients Intervention

Ok. Je regarde.

Re

Nul besoin d'être à deux sur votre souci. Je vous laisse avec Thev qui suit votre souci.

Cordialement

Aucun problème Dan , merci à toi pour ton approche.

Bonne fin de journée .

Cordialement.

Riko

Bonsoir,

ci-jointe version corrigée avec code revu pour le formulaire Clients Facturé

Vous ne pouvez pas utiliser la propriété RowSource à la compilation avec un tableau modifié à l'exécution! Plantage d'Excel garanti !

Vous devez charger vos Combobox à l'exécution comme je l'ai fait dans le code revu du formulaire Clients Facturé .

Re

Bien vu Thev !!! , j'étais à 100 lieues de penser qu'il avait utilisé le ROWSOURCE !!

Erreur de moi de ne pas avoir été vérifier. Et là évidemment que cela ne peut fonctionner. Je ne comprenais pas pourquoi j'avais chaque fois un plantage alors que la manière proposée fonctionnait sur d'autres fils.

Comme quoi cela confirme ce que je dis toujours, Rowsource = à éviter absolument avec VBA !

Enfin chacun fait ce qu'il veut mais bon

Cordialement

@Dan

Il faut être effectivement prudent avec le RowSource. On l'utilise en principe pour des tables qui sont générales pour le classeur et ne sont pas modifiées par macro comme par exemples des tables de pays, régions, directions, services .....

Bonjour à tous,

@thev : merci pour la correction du code ...

(j'avoue que c'est moi qui l'ai écrit, ) ,

j'étudiais justement ce post https://forum.excel-pratique.com/viewtopic.php?f=2&t=131244

Petite question:

 nom_formulaire = Me.Name
        Unload Me
        UserForms.Add(nom_formulaire).Show

Pourquoi renommer l'USF ?

Unload Me
        FormSaisieClientsFacturé.Show

Ne suffit-il pas ?

Peux-tu jeter un oeil sur le formulaire de recherche, j'ai pas mal galéré, il a sûrement besoin d'être remanié,

L'objectif est de filtrer les données avec la Textbox puis de transférer le résultat sur la feuille "Bon Intervention".

Amicalement,

Re thev,

J'ai essayé de retransmettre ton code sur "Client Intervention" mais ça ne fonctionne pas.

Ci-joint fichier

Riko

Re Thev, bonjour xorsankukai,

à quoi correspond lignes de code "tb_clients_facturé"

2020 06 08 19 10 06 microsoft visual basic pour applications copie de bon intervention 2020 v080

et nom Userform "nom_formulaire" ils n'apparaissent pas dans les propriétés

Riko

2020 06 08 19 10 26 microsoft visual basic pour applications copie de bon intervention 2020 v080

Bonjour Xorsankukai,

Pourquoi renommer l'USF ?

C'est toujours un souci de portabilité ou de maintenance. Ce code

        nom_formulaire = Me.Name
        Unload Me
        UserForms.Add(nom_formulaire).Show

peut être reporté tel que dans plusieurs procédures du formulaire ou dans un autre formulaire. De plus, si l'on change le nom du formulaire, le code est invariant. D'une manière générale, lorsqu'on développe de grosses applications VBA, on essaie d'avoir le code le plus invariant possible pour faciliter les maintenances à venir suite aux réactions de l'utilisateur.

Apprendre à maîtriser l'utilisation de la classe ListObject pour les tableaux structurés est important car cela permet très facilement d'y rajouter des colonnes où l'on veut sans perturber le code. De plus l'écriture du code en est grandement simplifié.

A mes débuts, je n'utilisais pas les tableaux structurés mais j'ai assez vite compris qu'ils étaient quasi indispensables dès lors qu'il fallait utiliser des BDD. D'ailleurs Powerquery ne fonctionne qu'avec eux.

Peux-tu jeter un oeil sur le formulaire de recherche, j'ai pas mal galéré, il a sûrement besoin d'être remanié,

Certainement, mais s'il fonctionne c'est déjà le principal. A priori, je ne touche un code que s'il pose problème ou que si une nouvelle demande se fait jour.

Rechercher des sujets similaires à "erreur add listrows"