Format de code postal dans combobox

david84

XLDnaute Barbatruc
Bonjour à tous,
Dans un Usf, je créé ou modifie des fiches de renseignement sur des associations.
J'ai donc différents combobox et textbox à renseigner (discipline, nom, adresse, commune, code postal,...).
Mon problème est le suivant : lorsque je renseigne la combo "code postal" et que je rentre par ex : 84000, lorsque je consulte à nouveau la fiche, la valeur placée dans la combo code postal est bien 84000.
Par contre lorsque je rentre par ex : 07000 et que je consulte à nouveau la fiche, la valeur qui apparaît dans la combo code postal est non pas 07000 mais 7000 (il manque donc le 0 devant).
J'ai tenté différentes possibilités mais sans succès.
Voici mon code :
Code:
Private Sub CodePostal_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Dim MyStr
If CodePostal.Text <> "" Then
    If Teste(CodePostal.Value, "(^-$)|(^[0-9]{5}$)", "Unique") = False And CodePostal <> "" Then
        MsgBox CodePostal.Value & " n'est pas une valeur valide.", vbExclamation, "Valeur non valide"
        CodePostal.Value = ""
        Cancel = True
        SendKeys "{ENTER}"
        SendKeys "+{TAB}"
        Exit Sub
    End If ' [B]jusque-là pas de problème,, c'est ensuite que j'ai cherché à modifier le code en tentant différentes possibilités (placées après un ' )[/B]
    
 [B]   If Teste(CodePostal.Value, "(^-$)|(^[0-9]{5}$)", "Unique") = True And CodePostal <> "" Then
    'CodePostal = CStr(CodePostal)
    'CodePostal.Text = CStr(CodePostal.Text)
    'MyStr = Format(CodePostal, "#####")
    End If[/B]
End If
End Sub
Merci de bien vouloir me corriger.
 

tototiti2008

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Bonjour david,

à tester, dans la 2ème partie du code

Code:
 [B]   If Teste(CodePostal.Value, "(^-$)|(^[0-9]{5}$)", "Unique") = True And CodePostal <> "" Then
    CodePostal.Text = Format(CLng(CodePostal.Text), "00000")
    
    End If[/B]
 

david84

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Re
Merci Tototiti te t'intéresser à mon problème.
J'ai testé ta proposition et elle ne donne pas le résultat escompté. Pourtant, lorsque je place
MsgBox CodePostal.Text
juste avant End Sub du Private Sub CodePostal_Exit, elle m'affiche bien 05000. Mais lorsque je fais réapparaître la fiche après enregistrement des modifications, c'est à nouveau 5000 qui apparaît dans la combo code postal.
J'en déduis donc (peut-être à tort:rolleyes:) que ta proposition fonctionne mais que probablement c'est après dans la macro Private Sub Modifier_Click() que se situe le problème...
Je vais y regarder de plus près. Si tu as une autre idée, merci de m'en faire part.
A+
 

tototiti2008

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Re,

Je pense que tu as raison,

Au chargement des champs de ton userform de modification dans tes Textbox et combobox, il faut que le champ code postal soit alimenté par la valeur de la cellule concernée, mais en utilisant la fonction Format, comme précédement

Idem pour les choix disponibles dans la combobox, si tu utilises AddItem...

Pas trop possible d'être plus précis sans voir le code d'alimentation des champs
 

david84

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Re Tototiti
ci-joint mon code placé dans le bouton Modifier. J'ai tenté de placer la partie en gras, mais cela ne donne rien :
Code:
Private Sub Modifier_Click()
Dim MonControle As Control, DerLigne As Long
For I = 13 To 24
If Controls(I).Text = "" Then
MsgBox "Tous les champs doivent être remplis !", vbCritical, "ATTENTION"
'Exit Sub
End If
Next I
MaRéponse = MsgBox("Voulez-vous vraiment modifier la fiche ?", vbCritical + vbOKCancel, "ATTENTION")
If MaRéponse = vbCancel Then Exit Sub
Set AChercher = Range("Tableau4[N° DE FICHES]").Find(Fiche, lookat:=xlWhole)
DerLigne = AChercher.Row
With BD
For I = 13 To 21
.Cells(DerLigne, I - 10) = Trim(UCase(Controls(I).Text))
Next I
For J = 23 To 24
.Cells(DerLigne, J - 10) = Trim(UCase(Controls(J).Text))
Next J
[B]'.Cells(DerLigne, 10) = Format(CLng(CodePostal.Text), "00000")[/B]
.Cells(DerLigne, 12) = LCase(Mail.Text)
.Cells(DerLigne, 15) = Now()
.Cells(DerLigne, 15).NumberFormat = "dd/mm/yyyy"
End With
Fiche.Text = ""
For I = 13 To 24
Controls(I).Text = ""
Next I
Call UserForm_Initialize
Discipline.SetFocus
End Sub
Merci pour ton aide.
A+;)
 

david84

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Re
les 0 apparaissent dans la feuille de calcul grâce à un format personnalisé "code postal".
Par contre, ils n'apparaissent pas dans le userform.
Si tu veux je veux bien te placer un fichier, mais les codes sont faits sur 2007 et je ne sais pas si tu arriveras à les exploiter...
A+
 

david84

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Re
ci-joint le fichier. Les explications permettant la sélection d'une fiche sont dessus. Si tu as besoin d'autres explications, n'hésite pas.
Merci;)
A+
Edit : je t'ai placé un fichier en .xlsm plutôt que de le zipper suite à ton message.
Kjin, merci, je regarde
 

Pièces jointes

  • BD_Mails_JtestCode Postal.xlsm
    187.6 KB · Affichages: 213
Dernière édition:

kjin

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Bonjour,
Je suis depuis le début et je suis perplexe...
Une Combo, une Textbox...renvoie toujours une donnée de type string (et non pas en string...), donc à priori, si tu as bien 07000 dans la combo CodePostal...
Code:
.Cells(DerLigne, 10) = Format(CodePostal, "00000")
.Cells(DerLigne, 12) = LCase(Mail.Text)
.Cells(DerLigne, 15) = Format(VBA.Now, "dd/mm/yyyy")
...comme Tototiti te l'avais déjà indiqué, si le format de la colonne est bien le bon
Maintenant, s'agissant de code postal, moi je me contente du format texte
A+
kjin
 

tototiti2008

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Re,
Bonjour kjin,

ou alors dans la Sub Charge du module1 :

Code:
  For Each c In MaRéf
    MonDico.Item(IIf(MonControle.Name = "CodePostal", Format(c.Value, "00000"), c.Value)) = IIf(MonControle.Name = "CodePostal", Format(c.Value, "00000"), c.Value)
  Next c
 

david84

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Re Tototiti
Test effectué suite à ton code : les combos chargent bien les codes postaux avec le bon format car ils sont présents dans le menu déroulant. Par contre, dès que l'association est sélectionnée (soit par double clic dans la listbox de droite, soit par sélection du menu déroulant, le code postal s'affiche sans le 0.
Je continue de regarder de mon côté.
Merci.
A+
 

david84

XLDnaute Barbatruc
Re : Format de code postal dans combobox

Re Tototiti
bon, il semble qu'avec ton code et le fait que dans la feuille BD je passe le format de la colonne code postal de spécial (code postal) ou personnalisé (00000) à texte, cela fonctionne. Je teste sur mon fichier original et te tiens au courant si je trouve une autre solution ou si j'ai un souci qui persiste.
Merci à toi et à kjin
...comme Tototiti te l'avais déjà indiqué, si le format de la colonne est bien le bon
.
Je ne pensais pas être obligé de passer par un format texte pour que cela fonctionne...
A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 504
Messages
2 089 078
Membres
104 022
dernier inscrit
lg06