Private Sub btnajout_Click()
With Range("Tableau1").ListObject.ListRows.Add.Range
.Value = Array(textcommercial.Value, textdepartement, DateValue(TextDate), cbodepartement, cboventes, textcommentaires)
End With
End Sub
Tu pourrais m'en dire + stp sur la manière de faire cela , j'ai pas tout compris làre
il te faudra quand meme ajouter
la verif de la conformité de la date
peut être exiger que tout tout dûment rempli avant d'envoyer
etc..etc...etc...
Private Sub btnajout_Click()
Dim critereplein
If Not IsDate(TextDate) Then MsgBox "date invalideou non renseignée": Exit Sub 'on arrête si y a pas de date ou si elle est pas valide
'ou on teste tout
critereplein = textcommercial.Value <> "" And textdepartement.Value <> "" And TextDate <> "" And _
cbodepartement <> "" And cboventes <> "" And textcommentaires <> ""
'on sort si une des données n'est pas remplie
If Not critereplein Then MsgBox "vous avez oublié de renseigner des input!!!tete à claque!!": Exit Sub
With Range("Tableau1").ListObject.ListRows.Add.Range
.Value = Array(textcommercial.Value, textdepartement, DateValue(TextDate), cbodepartement, cboventes, textcommentaires)
End With
End Sub
Private Sub UserForm_Initialize()
Dim ligne As Integer
ligne = ActiveCell.Row
txtcommercial.Value = Cells(ligne, 2)
txtdepartement = Cells(ligne, 3)
txtdate = Cells(ligne, 4)
cbodeplacement = Cells(ligne, 5)
cbovente = Cells(ligne, 6)
txtcommentaires = Cells(ligne, 7)
End Sub
Private Sub btnmodifier_Click()
Dim rg As Range, ligne&
With ActiveSheet.ListObjects("Tableau1")
If .Active Then ligne = ActiveCell.Row - .Range.Row
End With
Set rg = ActiveSheet.ListObjects("Tableau1").DataBodyRange
If ligne > 0 Then
rg(ligne, 1).Value = txtcommercial.Value
rg(ligne, 2).Value = txtdepartement
rg(ligne, 3) = DateValue(txtdate)
rg(ligne, 4) = cbodeplacement
rg(ligne, 5) = cbovente
rg(ligne, 6) = txtcommentaires
End If
Unload Me
End Sub
Sub ajouteuneligne()
With Range("tableau1").ListObject
Set ligne = .ListRows.Add.Range'on ajoute une ligne au TS
txt = " Index de ligne dans le tableau : " & .ListRows.Count & vbCrLf
txt = txt & "index de la new ligne correspondant dans la feuille : " & ligne.Row & vbCrLf
txt = txt & "address(range) de la new ligne correspondant dans la feuille : " & ligne.Address & vbCrLf
txt = txt & " le range du tableau avec son entete : " & .Range.Address & vbCrLf
txt = txt & " le datablody du tableau : " & .DataBodyRange.Address
End With
MsgBox txt
End Sub
With Range("Tableau1").ListObject.DataBodyRange
Set ligne = .Rows(listbox1.ListIndex + 1)
MsgBox ligne.Address
'parti de là tu remplie tes donnée comme tu veux dans cette range
End With
Vous m'avez perdu la... déjà que j'ai du mal avec les codesre
Bonjour @GALOUGALOU
beep!!!!!!!!!
là je non ne suis pas d'accords c'est pas pour moi la bonne méthode
part du principe que quand tu travaille sur une BDD(tableau structuré), la BDD à 95% des cas n'est pas la feuille active (sinon ca servirait a quoi d'avoir un interface(form))
With ActiveSheet.ListObjects("Tableau1")
If .Active Then ligne = ActiveCell.Row - .Range.Row
End With
Set rg = ActiveSheet.ListObjects("Tableau1").DataBodyRange
1°
avec (with range("Tableau1").listobject)
' le tableau sera toujours bien ciblé ou que tu sois dans le classeur
'parce que des names("Tableau1") il ne peut y en avoir qu'un!!
2°
et pas toute les configs incluent la ligne quand on écrit en dessous le TS !!!!
tiens pour un aide memo
VB:Sub ajouteuneligne() With Range("tableau1").ListObject Set ligne = .ListRows.Add.Range'on ajoute une ligne au TS txt = " Index de ligne dans le tableau : " & .ListRows.Count & vbCrLf txt = txt & "index de la new ligne correspondant dans la feuille : " & ligne.Row & vbCrLf txt = txt & "address(range) de la new ligne correspondant dans la feuille : " & ligne.Address & vbCrLf txt = txt & " le range du tableau avec son entete : " & .Range.Address & vbCrLf txt = txt & " le datablody du tableau : " & .DataBodyRange.Address End With MsgBox txt End Sub
Regarde la pièce jointe 1132021
là tu es sur de ce que fait et tu peux être n'importe ou dans le classeur
pour l'index de ligne eventuellement en modification avec listbox ou combobox dans l'interface(form)
et bien c'est simple
Code:With Range("Tableau1").ListObject.DataBodyRange Set ligne = .Rows(listbox1.ListIndex + 1) MsgBox ligne.Address 'parti de là tu remplie tes donnée comme tu veux dans cette range End With
Private Sub btnajout_Click()
Dim critereplein
'ou on teste tout
critereplein = txtcommercial.Value <> "" And txtdepartement.Value <> "" And txtdate <> "" And _
cbodeplacement <> "" And cbovente <> "" And txtcommentaires <> ""
'on sort si une des données n'est pas remplie
If Not critereplein Then MsgBox "vous avez oublié de renseigner des input!!! tete à claque!!": Exit Sub
If Not IsDate(txtdate) Then MsgBox "date invalide ou non renseignée": Exit Sub 'on arrête si y a pas de date ou si elle est pas valide
With Range("Tableau1").ListObject.ListRows.Add.Range
.Value = Array(txtcommercial.Value, txtdepartement, DateValue(txtdate), cbodeplacement, cbovente, txtcommentaires)
End With
End Sub
BonjourBonjour @samissou
peut être devrais tu commencer par les bases alors
car je soupçonne que cette interface va évoluer
et là nous en somme qu'au balbutiement
mes précédent message s'adressaient a @GALOUGALOU qui sait de quoi je parle
bien que tu peux en prendre note toi aussi
pour ton bouton ajouter c'est simple tu ajoute cela et ca fonctionne
VB:Private Sub btnajout_Click() Dim critereplein 'ou on teste tout critereplein = txtcommercial.Value <> "" And txtdepartement.Value <> "" And txtdate <> "" And _ cbodeplacement <> "" And cbovente <> "" And txtcommentaires <> "" 'on sort si une des données n'est pas remplie If Not critereplein Then MsgBox "vous avez oublié de renseigner des input!!! tete à claque!!": Exit Sub If Not IsDate(txtdate) Then MsgBox "date invalide ou non renseignée": Exit Sub 'on arrête si y a pas de date ou si elle est pas valide With Range("Tableau1").ListObject.ListRows.Add.Range .Value = Array(txtcommercial.Value, txtdepartement, DateValue(txtdate), cbodeplacement, cbovente, txtcommentaires) End With End Sub
et avant que je t'aide pour la recherche (qui soit dit en passant n'est pas très claire dans l'intention et le contexte)puisque tu nous en a rien dit
il faudra que tu soit capable de m'expliquer tant bien que mal ce que le code du bouton ajout fait
sinon ca voudrait dire faire le travail a ta place et il y a rien de plus qui me Grrrrrr!!!
ca tombe bien c'est le weekend
un peu de lecture