Enregistrer, Modifier les données d'une feuille à partir d'un useform VBA
Bonjour à tous,
j'ai un petit soucis et j'espère bien trouver de l'aide. Merci d'avance!
Voila mon problème:
j'ai créé un formulaire dans lequel on insère les informations d'une affaire pour ensuite les enregistrer dans une feuille excel. Pour chaque nouvelle affaire on a un nom et un numéro d'affaire qui sont enregistré automatiquement à la duite de l'affaire précédente. Une affaire peut posséder plusieurs phase dont le nombre varie d'une affaire à l'autre et ses phase ont chacune des caractéristiques (comme l'avancement, le coût et autre). Les phases sont mises à jour chaque mois selon le situations et toutes ces valeurs doivent être stocker dans la même feuille (Base de donnée). Pour le moment j'arrive à enregistrer les informations de l'affaire et des phase, le problème est que j'aimerait qu'au moment ou j'ajoute une phase, q'elle apparaisse automatiquement dans un zone liste sachant que les lignes sont variables. A chaque fois que je clique sur ajouter une phase il n'y a que le dernière ligne qui s’affiche dans la liste, je sais que le problème est qu'a chaque clic ma derniere ligne est redefini, mais je ne sais pas comment le solutionner. Voici mon code, mais si quelqu'un à une meilleur méthode(optimisée), je suis preneur. Encore merci.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| Private Sub Btn_AjouterPhase_Click()
Dim DerniereLigne, NombrePhase As Integer
DerniereLigne = Feuil2.Range("D" & Rows.Count).End(xlUp).Row
If Feuil2.Range("E" & DerniereLigne + 1).Value = "" Then
Feuil2.Range("E" & DerniereLigne + 1).Value = 1
Else
NombrePhase = Feuil2.Range("E" & DerniereLigne + 1).Value + 1
End If
If IsNumeric(Feuil2.Range("D" & DerniereLigne)) Then
Feuil2.Range("D" & DerniereLigne + 1).Value = Feuil2.Range("D" & DerniereLigne).Value + 1
Feuil2.Range("E" & DerniereLigne + 1).Value = Txt_NomPhase.Value
With List_Nom_Phase
.ColumnCount = 2
.AddItem
.Column(0, NombrePhase - 1) = Feuil2.Range("D" & DerniereLigne + NombrePhase).Value
.Column(1, NombrePhase - 1) = Feuil2.Range("E" & DerniereLigne + NombrePhase).Value
End With
Txt_NomPhase.Value = ""
Else
Feuil2.Range("D" & DerniereLigne + 2).Value = 1
Feuil2.Range("E" & DerniereLigne + 2).Value = Txt_NomPhase.Value
With List_Nom_Phase
.ColumnCount = 2
.AddItem
.Column(0, NombrePhase - 1) = Feuil2.Range("D" & DerniereLigne + 1 + NombrePhase).Value
.Column(1, NombrePhase - 1) = Feuil2.Range("E" & DerniereLigne + 1 + NombrePhase).Value
End With
Txt_NomPhase.Value = ""
End If
End Sub |