Problème de gestion de code postal

  • Initiateur de la discussion Initiateur de la discussion michel78
  • Date de début Date de début

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 !

michel78

XLDnaute Nouveau
Bonjour,

Je fais une macro pour aider une association sportive à gérer ses adhérents.
Pour le moment, je fais un UserForm qui servira d'interface pour saisir les nouveaux adhérents.

En me basant sur un topic de ce forum, j'ai créé ajouté le code suivant pour afficher automatiquement la ville dans un ComboBox en fonction du code postal entré :

Code:
Private Sub UserForm_Initialize()
Dim Cel As Range
With Sheets("Codes")
    For Each Cel In Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
        ComboBox_Postal.AddItem Cel
    Next Cel
End With
End Sub
Code:
Private Sub ComboBox_Postal_Change()
Dim Cel As Range
    With Sheets("Codes")
        For Each Cel In Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
            If Cel = ComboBox_Postal.Value Then ComboBox_Ville.AddItem Cel.Offset(0, 1)
        Next Cel
    End With
End Sub

Le problème est que la liste des villes ne se remplit pas.
Apparement, c'est la vérification de l'égalité qui ne fonctionne pas.
Si je rajoute la ligne avant le Next Cel
Code:
MsgBox ("Cel : " & Cel & "; Value :" & Cel.Offset(0, 1))
Les valeurs affichées sont bonnes

Si je rajoute la ligne avant le Next Cel
Code:
MsgBox ("Cel : " & Cel & "; Value :" & ComboBox_Postal.Value)
Les valeurs sont bonnes

Par contre si je remplace
Code:
 If Cel = ComboBox_Postal.Value Then ComboBox_Ville.AddItem Cel.Offset(0, 1)
par
Code:
 If Cel = ComboBox_Postal.Value Then MsgBox ("Cel : " & Cel & "; Value :" & ComboBox_Postal.Value)
Aucun MsgBox ne s'affiche.

Une idée sur ce qui m'arrive ?

Merci d'avance.
 
Re : Problème de gestion de code postal

Bonjour michel78

a priori

Code:
Private Sub ComboBox_Postal_Change()
Dim Cel As Range
With Sheets("Codes")
For Each Cel In Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row)
If Cel.value = ComboBox_Postal.Value Then ComboBox_Ville.AddItem Cel.Offset(0, 1)
Next Cel
End With
End Sub
Edit salut efge
 
Dernière édition:
Re : Problème de gestion de code postal

Bonjour Pierrejean et Efgé,

J'ai essayé le Cel.Value, mais pas mieux.
Est-ce que cela pourrait être lié à un problème de format de variable entre les données lues dans la la colonne de ma feuille Excel et la valeur lue dans le ComboBox ?

Michel
 
Re : Problème de gestion de code postal

Bonjour le fil 🙂,
Vu que tu utilises l'événement Change, ça veux dire que tu va scanner ta liste de codes postaux à chaque changement, et ceci pour rien vu qu'il ne trouvera une égalité que lorsqu'il y aura 5 chiffres 🙄...
Donc soit tu sort du code si il n'y a pas 5 chiffres
Code:
If Len(ComboBox_Postal) < 5 Then Exit Sub
soit tu ne regardes pas une égalité mais une partie du code postal
Code:
If Cel.value Like ComboBox_Postal.Value & "*" Then ComboBox_Ville.AddItem Cel.Offset(0, 1)
De plus, comment gères-tu les départements à un seul chiffres (Ardennes 08 par exemple). Le 0 est présent dans ton combobox, mais l'est-il dans tes cellules 🙄 ?
Dans ton code, je ne vois pas de "vidage" du combobox...
Code:
ComboBox_Postal.Clear
car la méthode AddItem va ajouter les nouveaux codes, sans avoir ôté les anciens 😛...
Bon courage 😎
 
- 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

Réponses
3
Affichages
834
  • Question Question
Microsoft 365 modifier un code
Réponses
1
Affichages
492
Réponses
5
Affichages
704
Réponses
4
Affichages
580
Réponses
9
Affichages
256
Retour