Ecrire dans une feuille à partir d'un UserForm
Bonjour !
Alors mon problème est le suivant.
Je rempli en partie le Userform suivant grâce à la feuille "StagesTRN" et en partie à la main.
Je souhaiterais que l'ensemble des données insérées dans le UserForm (automatiques et manuelles) viennent grossir une base de données dans la feuille "BaseDeDonnees".
Vous trouverez dans la suite le code que j'ai écrit.
Malheureusement cela ne fonctionne pas. Au niveau de la Sub "insererStageBdd", j'obtiens une "Erreur définie par l'application ou par l'objet".
Pourriez vous m'aidez à rectifier le tir ?
Vrancky
NB: j'utilise Excel 2003
Private Sub ComboBox1_Change() 'va chercher dans les cases avions et hdv de la feuille StagesTRN les valeurs
With Sheets("StagesTRN")
TextBox5 = .Cells(ComboBox1.ListIndex + 2, 2)
TextBox6 = .Cells(ComboBox1.ListIndex + 2, 3)
TextBox7 = .Cells(ComboBox1.ListIndex + 2, 4)
End With
End Sub
Private Sub UserForm_Initialize() 'Permet d'initialiser les valeurs dans les zones souhaitees
Me.Caption = "Ajouter un stage"
Dim H As Integer
With Sheets("StagesTRN")
For H = 2 To .Range("a65536").End(xlUp).Row
ComboBox1.AddItem .Range("a" & H).Value
Next H
End With
End Sub
Private Sub CommandButton2_Click()
'Bouton Annuler
Unload Me
End Sub
Private Sub CommandButton1_Click() ' declaration des variables utilisées plus tard pour les calculs et des chaines de renseignements
' Gestion Base de données
' Application PDC
Dim nomstage, remarque, avion, promotion As String
Dim nbSemaines, nbStagiaires, hdvd, hdvs As Integer
nomstage = ComboBox1.Value
nbSemaines = CLng(TextBox1.Value)
nbStagiaires = CLng(TextBox2.Value)
promotion = TextBox3.Value
remarque = TextBox4.Value
avion = TextBox5.Value
hdvd = TextBox6.Value
hdvs = TextBox7.Value
Unload Me
Dim ligne As Integer
ligne = Selection.Cells(1).Row
'chercher la colonne a laquelle le stage doit etre inserer
Dim colonne As Integer
colonne = Selection.Cells(1).Column
Call insererStage(ligne, colonne, nomstage, nbSemaines, nbStagiaires, promotion, remarque, avion, hdvs, hdvd)
Call insererStageBdd(ligne, colonne, nomstage, nbSemaines, nbStagiaires, promotion, remarque, avion, hdvs, hdvd)
End Sub
Sub insererStageBdd(ByVal ligne, ByVal colonne, ByVal nomstage, ByVal nbSemaines, ByVal nbStagiaires, ByVal promotion, ByVal remarque, ByVal avion, ByVal hdvs, ByVal hdvd)
Dim lignebdd As Variant
With Sheets("BaseDeDonnees")
lignebdd = Range("A65536").End(xlUp).Offset(1, 0).Select
.Cells(lignebdd, 2) = nomstage
.Cells(lignebdd, 3) = nbSemaines
.Cells(lignebdd, 4) = promotion
.Cells(lignebdd, 5) = remarque
.Cells(lignebdd, 6) = avion
.Cells(lignebdd, 7) = hdvd
.Cells(lignebdd, 8) = hdvs
End With
End Sub
Bonjour,
Tu peux commencer par tenter
lignebdd = .Range("A65536").End(xlUp).Offset(1, 0).Row
A+
Excellent, merci !
Lors de la première utilisation du UserForm, la ligne est bien créé. En revanche à la seconde utilisation, la première ligne "écrite" est remplacée par la seconde.
Vois tu une solution ?
Auto correction réussie