XL 2010 Saisir des données entre deux dates par un useform

thunder23

XLDnaute Occasionnel
Bonjour le forum,

J'ai un fichier où j'ai créer un planning pour saisir mes postes par l'intermédiaire d'un UserForm. Je saisie jour par jour en sélectionnant la date dans une combobox le poste que j'ai effectué sauf que je souhaiterais le faire mais sur plusieurs jours sauf que je ne sais pas comment le faire appliquer à la deuxième combobox.

J'ai mis en pièce-jointe un fichier pour exemple ;)
 

Pièces jointes

  • comboboxdate.xlsm
    67.7 KB · Affichages: 19

Dan

XLDnaute Barbatruc
Bonjour,

Si j'ai compris votre souci c'est de compléter votre feuille 2 en fonction des dates choisies dans les combobox date debut et date fin ?..
Si oui, dans l'USF - macro Private Sub CommandButton_modifier_Click(), modifiez à la fin la partie de code suivante :
VB:
Dim Li As Integer
Li = Me.ComboBox_date.ListIndex + 2
While Li <= CDate(ComboBox_Dfin) - CDate(ComboBox_Ddébut) + 1
    With Sheets("Feuil2")
        .Cells(Li, 2).Value = ComboBox_Poste.Value
        .Cells(Li, 5).Value = TextBox_Heures.Value
        .Cells(Li, 7).Value = TextBox_commentaire.Value
        If OptionButton_yes.Value = True Then
            .Cells(Li, 4).Value = "rs"
        ElseIf OptionButton_no.Value = True Then
            .Cells(Li, 4).Value = ""
        End If
    Li = Li + 1
    End With
Wend
Cordialement
 

thunder23

XLDnaute Occasionnel
Bonjour Dan, Bonjour le forum,

c'est à peux près ça sauf que je ne veux pas forcément passer par celle-ci. En fait j'ai 3 combobox, une qui va chercher la date sur la feuille 2 et les valeurs des autres colonne pour remplir l'UserForm et mettre la date dans la deuxième combobox. La troisième servirait si, par exemple j'ai besoin de mettre sur plusieurs jours un poste sinon elle ne servirait tout le temps.

Par ailleurs j'ai essayé de tester votre code mais ça ne fonctionne pas.

Cordialement :)
 

Dan

XLDnaute Barbatruc
Re

La troisième servirait si, par exemple j'ai besoin de mettre sur plusieurs jours un poste sinon elle ne servirait tout le temps.
Donc la combobox date fin n'est pas toujours complétée
Si tel est le cas, la combox date égale toujours la combo date début ou pas ??

Sans date dans la combobox date fin, je vois ceci :
- la combo date est plus grande que la combo date début (parce que vous voulez modifier)
- la combo date est inférieure à la combo date début
- la combo date est égale à la combo date début

Correct ?

Ce serait bien de donner quelques explications supplémentaires sur les possibilités ou donner un exemple que je puisse reproduire ce que vous faites.

Crdlt
 

thunder23

XLDnaute Occasionnel
Re,

Code:
Donc la combobox date fin n'est pas toujours complétée
Si tel est le cas, la combox date égale toujours la combo date début ou pas ??

oui la combobox date début est égale à la combobox date lorsque celle-ci est renseignée.

Sinon la date sera renseigné par la combobox date début par exemple si je veux mettre deux CP le 06 et 07/06 alors il faudrait que je mette dans la combobox début 06/06 et la combobox fin 07/06.

En fait la combobox date me sert de recherche de données dans le tableau et les deux autres pour modifier, ajouter sur une période.
 

Dan

XLDnaute Barbatruc
Re

Ok pour vos explications.
Par contre, si vous avez une donnée dans la date de la combo_Date et que vous modifiez la combo_datedébut, cela veut aussi dire que la donnée existante correspondant à la date de la combo_date devra être effacée et mise à la date reprise dans la combo_datedébut. Juste ?
 

thunder23

XLDnaute Occasionnel
Re,

Non pas forcément, en fait quand j'ouvre l'UserForm la date n'est pas renseigné dans la combobox date, c'est moi qui la sélectionne mais effectivement vu que la combobox date début est renseigné par la combo date ça serait peut-être mieux de faire ça.
 

Dan

XLDnaute Barbatruc
re

essayez comme ceci :
VB:
....
Dim Li As Integer
Dim i As Byte

Select Case ComboBox_date
    Case Is = ComboBox_Ddébut: Li = Me.ComboBox_date.ListIndex + 2
    Case Else: Li = Me.ComboBox_Ddébut.ListIndex + 2
End Select

If ComboBox_Dfin = "" Then
    i = 1
Else: i = CDate(ComboBox_Dfin) - CDate(ComboBox_Ddébut) + 1
End If
While i > 0
    With Sheets("Feuil2")
        .Range("B" & Li & ":E" & Li).ClearContents 'pour effacer les valeurs avant modification
        .Cells(Li, 2).Value = ComboBox_Poste.Value
        .Cells(Li, 5).Value = TextBox_Heures.Value
        .Cells(Li, 7).Value = TextBox_commentaire.Value
        If OptionButton_yes.Value = True Then
            .Cells(Li, 4).Value = "rs"
        ElseIf OptionButton_no.Value = True Then
            .Cells(Li, 4).Value = ""
        End If
    Li = Li + 1
    i = i - 1
    End With
Wend
 
End Sub
J'ai considéré que si dans la comboDdébut vous mettez une date supérieure à celle de la combodate, le code conserve les données reprises dans la ligne correspondant à la date de la ComboDate.

Crdlt
 

Discussions similaires

Réponses
9
Affichages
511
Réponses
6
Affichages
328

Statistiques des forums

Discussions
311 710
Messages
2 081 781
Membres
101 817
dernier inscrit
carvajal