Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Format de code postal dans combobox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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]
 
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🙄) 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+
 
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
 
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+😉
 
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+
 
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

Dernière édition:
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
 
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
 
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+
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…