XL 2013 Compléter un tableau avec plusieurs formulaires

Tubule

XLDnaute Nouveau
Bonjour,

Après de nombreuses recherches sur ce forum , je me retrouve bloquée sur différents éléments concernant un fichier, que je vais détailler en plusieurs questions (dont une principale). Ce document sert à recenser des dossiers, et une macro "Ajout d'un dossier" sert, comme son nom l'indique, à ajouter un dossier. Néanmoins, à la fin de ce formulaire(module Ajout_Dossier), selon l'option qui est choisie (option1, option2 ou option3), un formulaire différent s'affiche à chaque fois.

1 - Après que le 1er formulaire ait été rempli, une ligne est ajoutée à la fin du tableau. Et une fois que le second formulaire a été rempli, la dernière ligne du tablaeu est sensée être complétée. Néanmoins, je n'y parviens pas.
Pour le moment, j'ai juste codé pour l'option 1 , donc lors de tests, il faut lciquer uniquement sur ce bouton (cf fichier joint).
En effet , j'ai codé (en m’inspirant de ce forum :) ):

*Dans le module "Ajout_Dossier" (1er formulaire) :

VB:
With LO.ListRows.Add(AlwaysInsert:=True) 'Ajout d'une ligne pour le nouveau dossier
        For Each CTRL In Me.Controls 'Ajout du nom du dossier, du numéro, et des noms associés
            If Len(CTRL.Tag) Then
            .Range(1, CLng(CTRL.Tag)) = CTRL.Value
            End If
        Next

*Dans le module OPTION1 (pour le moment c'est le seul complet) :

Code:
With LO.Range("B" & Rows.Count).End(xlUp) 'On ajoute à la dernière ligne du tableau ajoutée précédemment dans le module "Ajout_Dossier"
    
        For Each CTRL In Me.Controls 'Ajout des dates des différentes échéances
            If Len(CTRL.Tag) Then
            .Range(1, CLng(CTRL.Tag)) = CTRL.Value
            End If
        Next

J'obtiens le message d'erreur suivant: "Argument ou appel de procédure incorrect", avec la ligne suivante surlignée: With LO.Range("B" & Rows.Count).End(xlUp) 'On ajoute à la dernière ligne du tableau ajoutée précédemment dans le module "Ajout_dossier"
Je ne vois pas où est le problème car je modifie juste la dernière ligne, qui a été complétée dans un premier formulaire.
NOTA: Selon l'option choisie, toutes les dates ne doivent pas être remplies (notamment pour l'option 1), donc je les ai grisées.

2-Petit truc bête: je souhaiterais que lorsque l'on coche la case "Tous" dans le premier formulaire (Module Ajout_Dossier), tous les numéros soient cochés. Sinon, plusieurs choix devraient être possibles (c'est le cas). Si la personne coche plusieurs réponses, j'aimerais qu'elles apparaissent dans le tableau séparées par des slash (ex si je coche 1 et 3, j'obtiens: 1/3). J'ai tenté énormément de codes, notamment avec des .enable, mais rien n'y fait, je n'y arrive pas !! Si vous avez une idée, je suis preneuse.

3-Autre petit truc bête: dans le second formulaire, lorsque l'on coche un numéro, un message en bleu apparaît. Néanmoins, lorsque l'on sélectionne un autre bouton, il disparaît, et je ne sais pas pourquoi. Auriez-vous une idée ? Je ne sais pas du tout comment avancer sur ce point.

Je vous remercie :)
Très bonne journée !
 

Pièces jointes

  • test.xlsm
    116.8 KB · Affichages: 8

MFoxy

XLDnaute Nouveau
Hello,

Je suis sur mon smartphone donc pas ouvert ton fichier.

Je suppose que lo est une abréviation pour listObject.

Dans ce cas là façon de récupérer la dernière ligne n'est pas la bonne.

Il voudrait mieux utiliser un code tel celui-ci

Sub CountNumberOfRows()

Msgbox ActiveSheet.ListObjects("myTable").ListRows.Count

End Sub

Ou encore mieux, en se passant du nom de la feuille ( je priveligie cette notation, ça permet de déplacer la table dans le classeur sans souci)

Sub CountNumberOfRows()

Msgbox Range("mytable").ListObject.ListRows.Count

End Sub
 

Tubule

XLDnaute Nouveau
Bonjour MFoxy,
Merci beaucoup pour votre réponse ! J'ai donc indiqué la dernière ligne comme étant :

VB:
 DerLig = Range("Tab_Planning").ListObject.ListRows.Count 

With LO.Range(DerLig, 0) 'On ajoute à la dernière ligne du tableau ajoutée précédemment dans le module "Ajout_Dossier"
    
        For Each CTRL In Me.Controls 'Ajout des dates des différentes échéances
            If Len(CTRL.Tag) Then
            .Range(1, CLng(CTRL.Tag)) = CTRL.Value
            End If
        Next

Mais maintenant, une autre erreur apparaît à la ligne du dessous : "Erreur définie par l'application ou par l'objet"
Code:
.Range(1, CLng(CTRL.Tag)) = CTRL.Value

En effet, lorsque j'entre les dates (issues du second formulaire donc), elles n'apparaissent pas dans le tableau et je ne comprends pas pourquoi. J'ai pourtant bien vérifié les tags des textBox et tout concorde parfaitement.
Auriez-vous une idée ?

Merci
 

Pièces jointes

  • test.xlsm
    119.9 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 190
Membres
112 679
dernier inscrit
Yupanki