voila je débute en vba.
et mon problème et le suivant
1 classeur avec 3 feuilles nommée comme suit feuil1, feuil2 et feuil3 jusque là tout est normal.
j'ai créer un useform qui comprend
- combobox1
-textboxt1
dans la feuil1 un tableau (a1 à a7) nommée semaine
a1 = aujourd’hui()
a2 = a1-1 , a3=a2-1 etc jusqu’à a7 , vous l'aurez compris ce sont des date ' format court'
et la feuil2 le tableau nommé tableau1
voici le code :
Private Sub CommandButton1_Click()
If ComboBox1 = "" Or TextBox1 = "" Then
MsgBox (" Champs vides")
Else
If Sheets("Feuil2").Range("b3") = "" Then
Sheets("Feuil2").Range("b3") = ComboBox1
Else
Sheets("Feuil2").ListObjects(1).ListRows.Add
End If
dlt = Sheets("Feuil2").Range("D1048576").End(xlUp).Row
Sheets("Feuil2").Range("b" & dlt) = ComboBox1
End If
End Sub
Private Sub UserForm_Initialize()
Me.ComboBox1.RowSource = "semaine"
End Sub
Private Sub textbox1_keypress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not ((KeyAscii > 46 And KeyAscii < 58)) Then
KeyAscii = 0
End If
End Sub
Private Sub Combobox1_Afterupdate()
ComboBox1 = Format(ComboBox1, "Short date")
End Sub
le problème c'est ça m'affiche en b1 de la feuil2
je pense que mon problème doit me crever les yeux , mais je sèche.
une bonne âme pour m'aider serait le bienvenue.
je joint mon fichier excel
cordialement
Il me semble comprendre que vous voulez ajoutez à votre tableau si date et textbox sont renseignés :
VB:
Private Sub CommandButton1_Click()
If ComboBox1 = "" Or TextBox1 = "" Then
MsgBox (" Champs vides")
Else
With Sheets("Feuil2").ListObjects(1).ListRows.Add().Range
.Cells(1, 1) = ComboBox1.Value
.Cells(1, 2) = TextBox1.Text
End With
End If
End Sub
Les lignes d'ajout pouvant être réduites à une seule :
Il me semble comprendre que vous voulez ajoutez à votre tableau si date et textbox sont renseignés :
VB:
Private Sub CommandButton1_Click()
If ComboBox1 = "" Or TextBox1 = "" Then
MsgBox (" Champs vides")
Else
With Sheets("Feuil2").ListObjects(1).ListRows.Add().Range
.Cells(1, 1) = ComboBox1.Value
.Cells(1, 2) = TextBox1.Text
End With
End If
End Sub
Les lignes d'ajout pouvant être réduites à une seule :
merci à tous pour vos réponse
et merci a roblochon, juste une petite dernière
comme préciser dans mon premier poste je débute
peut tu m'expliquer dans les grande ligne le code vba que tu m'as gentiment donné.
c'est, je pense essentiel pour ma compréhension( en plus je ne connais pas la langue de Shakespeare )
un grand merci a toute l’équipe.
Private Sub CommandButton1_Click()
' Si pas valeur choisie dans le combobox
' ou si le textBox est vide
If ComboBox1 = "" Or TextBox1 = "" Then
' Avertir l'utilisateur et ne rien faire
MsgBox (" Champs vides")
Else
' Sinon ajouter une ligne au tableau structuré
' et entrez la (les) valeur(s) saisie(s) dans les cellules
' de la nouvelle ligne
With Sheets("Feuil2").ListObjects(1).ListRows.Add().Range
.Cells(1, 1) = ComboBox1.Value
.Cells(1, 2) = TextBox1.Text
End With
End If
End Sub
Sheets("Feuil2").ListObjects(1).ListRows.Add()
Retourne un objet listRow (ligne de tableau structuré) dont on exploite immédiatement la propriété Range dans une structure With pour renseigner les valeurs de lignes