XL 2016 combobox et date

pygark

XLDnaute Nouveau
bonjours à tous

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
 

Pièces jointes

  • calendrier test.xlsm
    44.3 KB · Affichages: 12

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

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 :
VB:
Sheets("Feuil2").ListObjects(1).ListRows.Add().Range.Value = Array(ComboBox1.Value, TextBox1.Value)

Dans votre code : Sheets("Feuil2").Range("D1048576").End(xlUp).Row

renvoie la dernière ligne occupée ou la première si aucune occupée de D et non pas B

Cordialement
 

Pièces jointes

  • calendrier test.xlsm
    49.8 KB · Affichages: 5
Dernière édition:

pygark

XLDnaute Nouveau
Bonsoir,

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 :
VB:
Sheets("Feuil2").ListObjects(1).ListRows.Add().Range.Value = Array(ComboBox1.Value, TextBox1.Value)
Dans votre code : Sheets("Feuil2").Range("D1048576").End(xlUp).Row

renvoie la dernière ligne occupée ou la première si aucune occupée de D et non pas B

Cordialement
grand merci, je me doutais bien que j'avais fais une boulette.
mais quand on n'ai pas
 

pygark

XLDnaute Nouveau
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.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Le code commenté :
VB:
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

Cordialement
 

Discussions similaires

Réponses
6
Affichages
202

Statistiques des forums

Discussions
311 733
Messages
2 082 010
Membres
101 866
dernier inscrit
XFPRO