Microsoft 365 La méthode 'Add' de l'objet 'ListRows' a échoué

SCorbeil

XLDnaute Nouveau
Bonjour à tous,

Je travaille actuellement sur un outil de gestion des dossiers de projets. J'ai créé une Worksheet intitulée "CONFIG" qui me permet de stocker plusieurs petits tableaux qui servent entre autres pour les différentes listes déroulantes des UserForms. Chaque tableau est conformément nommé ainsi que les plages pour les listes déroulantes.

Je rencontre une problématique de code qui fait planter EXCEL lorsque je tente d'enregistrer de nouvelles données dans un tableau de la Worksheet "CONFIG". Voici le code actuellement déficient :
VB:
Private Sub CmdAjoutTypeClient_Click()  'Ne fonctionne pas vraiment...

Dim L As Long
Dim LO As ListObject, LR As ListRow

If Me.TxtIntituleTypeClient <> "" And Me.TxtAbrevTypeClient <> "" Then

    'Demander une confirmation de l'enregistrement des informations client
    If MsgBox("Voulez-vous enregistrer les nouvelles informations et quitter ce formulaire ?", vbYesNo) = vbYes Then
   
    Set LO = ThisWorkbook.Sheets("CONFIG").Range("TabTypeClient").ListObject
    With LO
        Set LR = .ListRows.Add
        L = LR.Index
       
        .ListColumns(0).DataBodyRange.Rows(L) = Me.TxtIntituleTypeClient
        .ListColumns(1).DataBodyRange.Rows(L) = Me.TxtAbrevTypeClient
       
    End With
   
    End If
   
    'Réappliquer le filtre de la table
    ThisWorkbook.Sheets("CONFIG").ListObjects("TabTypeClient").AutoFilter.ApplyFilter
   
    With Sheets("CONFIG").ListObjects("TabTypeClient"). _
            Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
    End With
   
    Set LO = Nothing
    Set LR = Nothing
   
    'Nettoyer les TextBox
    Me.TxtIntituleTypeClient = ""
    Me.TxtAbrevTypeClient = ""
   
    ActiveWorkbook.RefreshAll
    ThisWorkbook.Save

End If

End Sub

Il vous est possible de vous référer à l'environnement du UserForm via l'image JPG ci-jointe.

J'anticipe que je rencontrerai possiblement d'autres problématiques avec le CommandButton de mise à jour de l'information ainsi que celui qui permettra de supprimer une information.

Bref, je suis possiblement si près de l'arbre que j'ai de la difficulté à voir la forêt...

Merci de votre collaboration.
 

Pièces jointes

  • Formulaire de gestion des paramètres - Module GESTION.jpg
    Formulaire de gestion des paramètres - Module GESTION.jpg
    94.1 KB · Affichages: 28
  • Worksheet CONFIG - Tableau correspondant.jpg
    Worksheet CONFIG - Tableau correspondant.jpg
    35.5 KB · Affichages: 43
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
je ne vois que 2 colonnes dans sa capture moi ;) donc ton "Empty" nasshav Wallouh!! il est perdu dans les meandres de la memoire :D :D :D ;)
1584546344919.png
 

patricktoulon

XLDnaute Barbatruc
re
ben moi
j'ai pri la peine de reproduire a l’identique (au plus possible vu les éléments) du demandeur soit 2 colonnes
et donc ce que je propose nécessite seulement un copier coller ;)(meme nom de feuille , TS , etc....
 

Pièces jointes

  • Scorbeil.xlsm
    19.1 KB · Affichages: 4

Staple1600

XLDnaute Barbatruc
Re

•>patricktoulon
Prends le temps alors de lire l'intégralité du fil...(qui explique le pourquoi du comment)
Message#4 et #7 (où l'on voit que je teste avec seulement 2 colonnes)

Si le demandeur lui prend le temps de lire toutes les réponses, il comprendra alors que si il ajoute des colonnes dans son tableau
ListRows.Add.Range lui posera des problèmes
(comme le montre mes messages #11 et #13)

PS: je joue pas à celui qui p.sse le plus loin :rolleyes:
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
je l'ai lu post par post avant de répondre
je sais que normalement un fichier anonymisé représentant la demande est le mieux
mais la c’était facile j'ai vu l'erreur tout de suite au post 1
voir la doc sur base(0/1);)
après ton Empty mange pas de pain si tu veux
mais faut il encore avertir le demandeur qu'il est la uniquement pour palier a l’absence de donnée pour une éventuelle colonne SUP et que ce empty doit toujours être décalé de 1 en fonction de ".range.columns.count" de la listrow ajoutée mais entre nous les tableaux structuré simplifie tellement la vie que je trouve ca superflu soit tu code proprement en fonction de la cohérences des donnes soit tu reste en range et tu pédale :D;)

je parle même pas du fait q'il a 2 textboxs et qu'il pourrait avoir 100 colonnes au quel cas et la c'a n'engage que moi on se passe de raccourci que nous l'avons démontrés sinon c'est 98 empty :D:D:D
dans un contexte de clarté de code
un resize du range a ubound(array(....))+1 suffirait a ce passer du empty
encore une fois ça n'engage que moi (aime bien faire joujou avec le TS le toulonnais)

exo:
VB:
With ThisWorkbook.Sheets("CONFIG").Range("TabTypeClient").ListObject.ListRows.Add
    .Range.Resize(, 2).Value = Array(Me.TxtIntituleTypeClient, Me.TxtAbrevTypeClient)
End With
 

Staple1600

XLDnaute Barbatruc
Re

•>patricktoulon
Je ne parle simplement de ceci
L'emulation/synergie entre répondeurs*
Si tu relis tout le fil, tu peux t'apercevoir que je prends en compte le message de JB pour adapter ma réponse suivante (émulation)
Puis ensuite je prends en compte tes messages (émulation bis)
Bref ceci n'a rien de personnel.
Plus ca va sur XLD, plus chacun réponds dans son coin sans prendre en compte les réponses précédentes.

cf: *:message#10
 

SCorbeil

XLDnaute Nouveau
Bonjour,

Je crois avoir isolé les différentes sources du problème. Pour la première fois, j'ai rencontré un message d'erreur de type /xl/CalcChain.xml (voir le fichier PDF). Mes recherches Google m'ont mené vers les sources suivantes :
  • Insertion d'images, nombreux graphiques (J'avais effectivement plusieurs images...)
  • Le nombre de feuilles (Je dois scinder des blocs d'informations sur plusieurs feuilles...)
  • Des formules complexes faisant référence à des cellules d'autres feuilles et peut-être que celles-ci contiennent également des formules (J'ai beaucoup trop de formules de type INDEX-EQUIV et PETITE.VALEUR qui me permettent de produire des recherches et des rapports...)
  • Plusieurs fioritures de type mise en forme conditionnelle, des listes déroulantes, des quadrillages pour les tableaux (des bouffeurs de mémoire "au-delà du raisonnable"...)
J'amorce une cure d'amincissement afin de libérer de la mémoire. Si vous avez des suggestions concernant les différentes formules, n'hésitez pas. Mon intention est de diriger celles-ci dans un module en créant des FUNCTION spécifiques.

Grand merci à Staple1600 ainsi qu'à patricktoulon. Vous êtes toujours au rendez-vous et vos conseils sont très appropriés et intéressants. Vous avez tout mon respect!

Allez bonne journée.
 

Pièces jointes

  • Mess ERROR calcChain.bin.pdf
    70.5 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 134
Membres
103 129
dernier inscrit
Atruc81500