Remplir colonne en fonction de 2 combox

Résolu
cs_DPH91
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 juin 2011
- 22 déc. 2009 à 08:51
cs_DPH91
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 juin 2011
- 22 déc. 2009 à 10:52
Bonjour à tous,

J'ai un formulaire dans lequel je sélectionne, une première date (via un Combobox) et une seconde date via un autre Combobox. Ces 2 combo remplissent dans un premier temps un formulaire en renseignant les 2 dates sélectionnées.

J'essaye de faire en sorte, que dans un deuxième temps, selon la plage de date sélectionnée depuis le premier et le second combo, ma feuille excel se remplisse automatiquement de "xx" à "yy" d'une valeur "CP".

Combo1
Range("CPRTT!B14").Value = Format(CP1.Value, "mm/dd/yyyy")


Combo2
Range("CPRTT!B16").Value = Format(CP2.Value, "mm/dd/yyyy")


Ma feuille excel contient les colonnes
Colonne C = Les dates
Colonne L = la valeur à remplir automatiquement




D'avance merci de votre aide ...

DPH91

10 réponses

Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
22 déc. 2009 à 10:01
ok, donc pour une plage de date donnée,
tu souhaites mettre "CP" dans la colonne "M" pour les lignes concernant cette plage de dates


un simple calcul peut suffire...

Il te faut pour une date donnée pouvoir identifier la ligne concernée.

si ton classeur présente toute l'année, tu dois pouvoir faire :
Public Function RowFromDate(ByVal vdInput As Date, Optional ByVal vnOffset As Integer = 2) As Integer
    RowFromDate = vnOffset + vdInput - DateSerial(Year(vdInput), 1, 1)
End Function

Public Function RangeFromDates(ByVal vdStart As Date, ByVal vdEnd As Date, ByVal vnColumn As Integer) As Range
    Set RangeFromDates = Range(Cells(RowFromDate(vdStart), vnColumn), Cells(RowFromDate(vdEnd), vnColumn))
End Function

Sub test()
    RangeFromDates(#1/19/2009#, #2/11/2009#, 5) = "CP"
End Sub





Renfield - Admin CodeS-SourceS - MVP Visual Basic
3
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
22 déc. 2009 à 10:41
Adapté pour ton code :
Public Function RowFromDate(ByVal vdInput As Date, Optional ByVal vnOffset As Integer = 4) As Integer
    RowFromDate = vnOffset + vdInput - Range("A2").Value
End Function

Private Sub CP1_Change()
    Range("CPRTT!B14").Value = Format(CP1.Value, "mm/dd/yyyy")
    If IsDate(CP2.Value) Then
        RangeFromDates(CP1.Value, CP2.Value, 12) = "CP"
        RangeFromDates(CP1.Value, CP2.Value, 13) = "CP"
    End If
End Sub
Private Sub CP2_Change()
    Range("CPRTT!B16").Value = Format(CP2.Value, "mm/dd/yyyy")
    On Local Error Resume Next
    Me.CP3.Value = Range("CPRTT!B18").Value
    RangeFromDates(CP1.Value, CP2.Value, 12) = "CP"
    RangeFromDates(CP1.Value, CP2.Value, 13) = "CP"
End Sub



après, je te laisse fignoler ^^


Renfield - Admin CodeS-SourceS - MVP Visual Basic
3
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
22 déc. 2009 à 09:23
j'aime pas

Format(CP1.Value, "mm/dd/yyyy")

pourquoi forcer le format de date ?

(en passant pas clair ta demande)

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
cs_DPH91
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 juin 2011

22 déc. 2009 à 09:33
Pour essayer d'être plus clair quant à ma demande.

CP1 = sélection d'une première date ( en fonction d'une feuille Excel contenant dans un colonne les dates du 1 au 31 du mois concernés )
CP2 = Sélection d'une seconde date (en fonction d'une feuille Excel contenant dans un colonne les dates du 1 au 31 du mois concernés)

Sur cette même feuille Excel, il y a une colonne [M] où je dois renseigner le motif d'absence. CP1 et CP2 remplissent 2 cellules d'un autre onglet Excel.

Ma demande est la suivante : En fonction de la première et de la seconde date, il faudrait que la colonne [M] soit renseignée de la valeur [CP] de la ligne "x" à la ligne "y" correspondant à la plage de dates définie lors de la sélection de "CP1" et de "CP2".

Pour ce qui est de forcer la date au format "dd/mm/yyyy", c'est afin que la date saisie dans la feuille Excel correspondante, soit imprimée sous ce même format.

Cordialement

DPH91
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DPH91
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 juin 2011

22 déc. 2009 à 09:40
Une image sera peut-être plus claire
0
cs_DPH91
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 juin 2011

22 déc. 2009 à 10:17
Mon classeur présente effectivement toute l'année, seulement, il y a un onglet par mois. Pour chaque mois de l'année, les dates sont rangées de la ligne "C4" à la ligne "C34".
En fonction de l'onglet "Mois" sélectionné, il me faudrait que la valeur "CP" soit rangée dans la colonne "M".

Merci pour ton code, mais je n'arrive pas à le mettre en place.
J'ai bien renseigné les fonctions dans mon formulaire, effectué un test, mais ça ne fonctionne pas.

DPH91
0
cs_DPH91
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 juin 2011

22 déc. 2009 à 10:21
Peut-être qu'avec le fichier, cela vous serait plus facile.
Vous le trouverez 2010.xls ici.

J'y est ôté les protections.

Le formulaire concerné, est "Conges"

D'avance merci de votre aide

DPH91
0
Renfield
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
22 déc. 2009 à 10:23
mais je n'arrive pas à le mettre en place


Je rouvre excel, je colle mon code dans l'editeur VBA, de Feuil1,
je place mon curseur de texte sur le sub Test
je presse F5, j'ai bien mes cellules E20 à E43 qui contiennent maintenant "CP"

c'est ce qu'on aurait si toute l'année était dans la meme feuille...

une feuille par mois, ok, pas de souci majeur

suffit de pouvoir trouver le bon onglet pour un numéro de mois donné.

comment sont nommés tes onglets ?

Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
cs_DPH91
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 juin 2011

22 déc. 2009 à 10:23
Oups !

Le lien est erroné, là ça devrait marché ICI

DPH91
0
cs_DPH91
Messages postés
10
Date d'inscription
jeudi 18 janvier 2007
Statut
Membre
Dernière intervention
1 juin 2011

22 déc. 2009 à 10:52
Merci beaucoup, j'ai la base de calcul !
Je fignole pour le reste ...


DPH91
0