Formulaire (userform) pour incrémenter un tableau

lucratif

XLDnaute Nouveau
Bonjour,

J'essaie depuis un bon bout de temps de créer un formulaire (userform) qui incrémentes les différentes cellules de mon tableau. J'ai suivi différents tuto avec lesquels j'ai pas mal compris comment réaliser ce genre de formulaire.
Cependant, le problème se situe toujours au niveaux du code VBA pour que ce soit la bonne ligne qui sont incrémenter.

J'en demande donc à vos connaissances,

Je joint un fichier exemple qui explique clairement ma demande. (Enfin je l'espère)

Merci beaucoup,
 

Pièces jointes

  • Fichier exemple pour forum.xlsm
    11.2 KB · Affichages: 51
  • Fichier exemple pour forum.xlsm
    11.2 KB · Affichages: 47
  • Fichier exemple pour forum.xlsm
    11.2 KB · Affichages: 47

lucratif

XLDnaute Nouveau
Re : Formulaire (userform) pour incrémenter un tableau

Mes demandes on dû se perdre dans la masse. C'est pas grave.

Je vous remercie encore une fois de m'aider.

Si j'ai bien compris, si je veux commencer l'incrémentation à une ligne précise le plus simple est de remplir la colonne A avec des caractères en blanc par exemple ? (Je pose cette question pour ensuite pouvoir adapter ce fichier au miens :) )
Mais dans ce cas, pourquoi l'incrémentation ne commence pas à la ligne 1 ?

On peux, en effet, imaginer, que toute la ligne entière serait supprimée. Il 'agissait d'une remarque de ma part pour ne pas avoir, à therme, des lignes vide au milieu du tableau.

J'ai bien essayer les deux boutons avec les deux formulaires, mais imaginons que j'ajoute un Projet 1 avec ces sous projets, puis que j'ajoute un projet 2. Si je souhaite, plus tard, ajouter un nouveau sous projet au Projet 1 il y aura un problème non ?
Car dans ce fichier exemple il s'ajoute à la suite, donc ici, sous le projet 2 (et non projet 1)

C'est pourquoi pour le formulaire des sous projets, j'imaginais une liste déroulante afin de choisir le projet auxquel appartient le sous projet.
Ainsi, ce que je souhaite, c'est un code qui permet d'ajouter les données du formulaire dans une nouvelle ligne. Cette nouvelle ligne s'ajouterai juste en dessous de la ligne du projet sélectionné dans la liste déroulante.

Voir fichier joint, avec exemple et explication claire (j'ai supprimer les calendrier)
 

Pièces jointes

  • Fichier exemple pour forum4 - Copy.xlsm
    34.3 KB · Affichages: 45
Dernière édition:

lucratif

XLDnaute Nouveau
Re : Formulaire (userform) pour incrémenter un tableau

Je suis arrivé à ma fin avec le code suivant :

Code:
Private Sub UserForm_Initialize()

'********************************************************************************************************
'propriétés de la ComboBox3 modifiées :
'ColumnCount = 2 ==> (2 colonnes  : Colonne 0 et Colonne 1)
'ColumnWidht = ;0 pt ==> (la largeur de la seconde colonne vaut 0 )
'cela signifie que l'on peut stocker deux données dans la ComboBox3 et que la seconde données est cachée
'********************************************************************************************************

Set O = Sheets("Suivi des projets") 'définit l'onglet O
ComboBox1.List = Array("Investigation", "En cours", "Clôturer")
'Boucle de 3 à la première cellule VIDE de la colonne C
For n = 3 To O.Cells(Application.Rows.Count, 4).End(xlUp).Row
    If O.Cells(n, 4).Value <> "" Then 'condition : si la celule n'est pas vide
        With Me.ComboBox3 'prend en compte la ComboBox3
            .AddItem O.Cells(n, 4).Value 'ajoute la valeur de la cellule dans la colonne 0 de la ComboBox3
            .Column(1, .ListCount - 1) = n 'récupère le numéro de ligne dans la colonne 1 de la ComboBox3
        End With 'fin de la prise en compte de la ComboBox3
    End If 'fin de la condition
Next n 'prochaine cellule de la boucle
End Sub

Private Sub ComboBox3_Change() 'au chagement dans la ComboBox3
With Me.ComboBox3 'prend en compte la ComboBox3
    LI = CInt(.Column(1, .ListIndex)) 'définit la ligne Li
End With 'fin de la prise en compte de la ComboBox3
LI = O.Cells(LI, 4).End(xlDown).Row 'redéfinit la ligne LI en le sous projet suivant
If LI = Application.Rows.Count Then 'condition : si LI est la dernière ligne de l'onglet
    LI = O.Cells(Application.Rows.Count, 2).End(xlUp).Row + 1 'redéfinit LI comme la ligne de la première cellule vide de la colonne B
    TEST = True 'définit la variable TEST
End If 'fin de la condition
End Sub
 
Private Sub CommandButton1_Click() 'bouton "Validation"
'si test est faux insère une ligne vide au niveau de LI, sinon redéfinit test à "FAUX"
If TEST = False Then Rows(LI).Insert Shift:=xlDown Else TEST = False
If TextBox5 = "" Or TextBox2 = "" Then
    MsgBox ("Vous devez remplir les champs")
    Exit Sub
End If
Cells(LI, 2) = ComboBox1
Cells(LI, 5) = TextBox1
Cells(LI, 5).Font.ColorIndex = 10
Cells(LI, 6) = TextBox6
Cells(LI, 7) = TextBox8
Cells(LI, 10) = TextBox7
Cells(LI, 23) = DTPicker4
Cells(LI, 23) = DTPicker3

Merci de votre aide ! =)
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 895
Membres
103 982
dernier inscrit
krakencolas