Problème de format dans une combobox

papenjoin Messages postés 17 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 4 juin 2007 - 3 mai 2007 à 11:49
papenjoin Messages postés 17 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 4 juin 2007 - 10 mai 2007 à 15:45
Bonjour

   Je travaille actuellement sur excel avec des combobox et j'ai quelques soucis au niveau de leur format. En effet, je leurs affecte une zone de cellule qui contient des dates ou des heures et celles-ci apparaissent bien dans le menu déroulant mais quand je sélectionne une des valeurs, le format repasse en standard et je me retrouve avec des 0.449885... d'affiché. J'aimerais donc savoir comment faire pour conserver le format heure ou date lors de la sélection.

Merci

14 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
3 mai 2007 à 11:52
Si tu mettais le bout de code au moment où tu inscris la valeur, ça aiderait un peu...

MPi
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
3 mai 2007 à 12:00
Salut, cela ne viendrait pas des propriétés de ton controle.
0
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
3 mai 2007 à 12:00
Bonjour,


C'est bien la date et ou l'heure que tu recoit. Les chiffres décimaux sont à traiter avec TimeSerial et les chiffre positif avec DateSerial. Va voir dans l'aide pour la syntaxe exacte et les explications.
A+
louis
0
papenjoin Messages postés 17 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 4 juin 2007
3 mai 2007 à 13:10
Alors pour le code voici un exemple pour une combobox qui contient des heures :

'Je récupère Heure dans la feuille Ref (Ref est un string variable)
Heure = CDate(Sheets(Ref).Cells(debut, 3).Value)

'debut et fin sont variable et ici je balaye les lignes de ma feuille pour récupérer toutes les 'heures. Je fais des copier/coller dans la feuille synthèse où se trouve mes combobox.
For i = debut To fin
    If Heure <> "" And Heure <> "00:00:00" Then
        Sheets(Ref).Cells(i, 3).Copy
        Sheets("synthèse").Cells(a, 22).Activate
        ActiveSheet.Paste
        Sheets("synthèse").Cells(a, 23).Activate
        ActiveSheet.Paste
        a = a + 1
    End If
    Heure = CDate(Sheets(Ref).Cells(i + 1, 3).Value)
Next
a = a - 1
rang1 = "v12:v" + Right$(Str$(a), Len(a))



'Je remplie ma combobox

Sheets("synthèse").Select
ActiveSheet.Shapes("ComboBox3").Select
    With Selection
        .ListFillRange = rang1
    End With

Voilà c'est pas super comme code mais je suis débutant et j'ai pas su faire mieux.

En ce qui concerne les propriété de mes combobox, j'ai regardé mais j'ai pas trouvé :/

Sinon j'ai certaine combobox qui récupère des dates et d'autres des heures et le problème est constant pour les heures et apparait de temps en temps avec les dates (pour les dates celà dépend des fichiers que je traitre. Pour l'instant y'en a qu'un qui marche pas et j'ai pas encore trouvé pourquoi !)
Je vais essayer Timeserial et Dateserial pour voir.

Merci
0

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 mai 2007 à 00:43
Pour comprendre un peu plus...
Est-ce que c'est dans tes combobox que les dates et heures ne sont pas bien écrites ou c'est quand tu transfères tes données dans des cellules que ces cellules ne sont pas bien écrites ?

MPi
0
papenjoin Messages postés 17 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 4 juin 2007
4 mai 2007 à 08:16
Lors du transfert de mes données, ya pas de problème mes cellules sont bien écrites. Les données sont également dans le menu déroulant mais lors que je choisis l'une d'entre elles il y a un changement de format  et ce n'est pas l'heure ou la date qui s'inscrit dans la sélection mais un décimal ou un entier pour la date.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 mai 2007 à 11:47
>> mais lorsque je choisis l'une d'entre elles il y a un changement de format

C'est cette partie que je ne comprends pas vraiment...
Tu sélectionnes une cellule pour la copier et le format change une fois collée ?

As-tu essayé avec Format() pour forcer le format de la valeur selon tes besoins ?
Ou si c'est dans une cellule que le format n'est pas bon, il y a
Cells(ligne, colonne).NumberFormat = "hh:mm:ss"

MPi
0
papenjoin Messages postés 17 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 4 juin 2007
4 mai 2007 à 15:54
Non le format dans mes cellules est bien "hh:mm:ss".

Pour mon problème je vais essayer d'être plus clair : 

   Lorsque je clique sur mon menu déroulant, toutes les valeurs de ma plage sélectionnée apparaissent bien dans le format heure. Autrement dit dans mes choix possible j'ai bien 10:30:55
10:31:22
etc...

Maintenant, lorsque je choisis une de ces heures, le menu se referme et seule l'heure que j'ai sélectionné s'affiche mais ce n'est plus 10:30:55 !!! Le format change entre temps et c'est le décimal que je vois :s

Merci pour ta persévérance ;)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
4 mai 2007 à 23:41
Désolé de ne pouvoir t'aider plus rapidement... ou de ne pouvoir t'aider tout simplement...

Lorsque tu parles de combobox, est-ce qu'il s'agit de combobox provenant de la barre d'outils Formulaire, de la barre d'outils Visual Basic ou est-ce une liste de choix qu'on peut créer en cliquant droit sur une cellule et en validant les données dans le menu Données / Validation ?

MPi
0
papenjoin Messages postés 17 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 4 juin 2007
7 mai 2007 à 08:17
La combobox en question provient de la boîte à outils contrôles dans excel. Je comptais aussi essayer avec celles venant du formulaire pour voir mais y a-t-il une si grande différence ? 
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 mai 2007 à 12:19
Avec les contrôles de la boîte à outils Contrôles, il y a des événements avec lesquels tu peux travailler dans l'éditeur VBA. Les contrôles de la boîte Formulaire sont simplement liés à une macro, sans autre événement. Avec une liste de choix "sur cellule", les valeurs sont liées à une série de valeurs se trouvant ailleurs sur la feuille (ou sur une autre feuille si la plage possède un nom).

Donc, dans ton cas, quelque chose comme ceci devrait fonctionner en principe.
Sur Click du Combobox
Private sub Combobox1_Click()
Range("D5") = Format(Combobox1.Text, "hh:mm:ss")

ou peut-être
Range("D5") = Format(CDate(Combobox1.Text), "hh:mm:ss")

ou encore
Range("D5") = CDate(Combobox1.Text)

sinon...
Range("A5") = Combobox1.Text
Range("A5").NumberFormat = "hh:mm:ss"

à essayer, donc...

MPi
0
papenjoin Messages postés 17 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 4 juin 2007
7 mai 2007 à 13:14
Ta première formule affecte bien le format heure en D5. Les deux suivantes ne fonctionnent pas et la dernière récupère bien la valeur de la combobox mais en décimal pourtant, quand je regarde le format de la cellule je suis bien en "hh:mm:ss" et il faut que je valide la valeur pour que le décimal se convertisse en heure !

Ceci dit ce que je souhaite c'est que celà s'affiche bien au niveau de la combobox :


<colgroup>
<col style=\"WIDTH: 34pt; mso-width-source: userset; mso-width-alt: 1440\" width=\"45\" />
<col style=\"WIDTH: 48pt; mso-width-source: userset; mso-width-alt: 2048\" width=\"64\" />
<col style=\"WIDTH: 47pt; mso-width-source: userset; mso-width-alt: 1984\" width=\"62\" />
<col style=\"WIDTH: 76pt; mso-width-source: userset; mso-width-alt: 3232\" width=\"101\" />
</colgroup>

----

Sélection Heure de début :,
 ,

----

<object class="shape" id="ComboBox3" height="23" width="275" classid="CLSID:8BD21D30-EC42-11CE-9E0D-00AA006002F3" v="">

</object>
,
 ,
 ,
 




 
0
papenjoin Messages postés 17 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 4 juin 2007
7 mai 2007 à 13:18
Désolé pour le double post mais c'est pour signaler que mon image n'a pas été prise en compte lors du dernier message. Au passage existe-t-il un lien pour éditer ces posts ?
0
papenjoin Messages postés 17 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 4 juin 2007
10 mai 2007 à 15:45
J'ai finalement résolu mon problème avec la simple ligne suivante : 

Sheets("synthèse").ComboBox5.Value = CDate(Sheets("synthèse").ComboBox5.Value)

Et là ça marche, les heures que je sélectionne s'affichent bien avec le bon format dans ma combobox :)
0
Rejoignez-nous