IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Userform ne prends pas en compte le premier 0 d'un code postal [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut Userform ne prends pas en compte le premier 0 d'un code postal
    Bonjour à tous !

    Je reviens vers vous car j'ai besoin d'aide sur un problème qui je pense est tout bête...

    Lorsqu'on rempli le champ du CP dans mon Userform (textbox6) à la saisie de la 6ième valeur, la combobox1 se rempli des villes qui correspondent au CP saisi. Le problème c'est que quand le CP commence par un 0 (exemple 09320), le additem ne fonctionne pas car ne prend visiblement pas en compte le premier 0.

    Dans mon code j'ai essayé de remplacer TextBox6.Text par TextBox6.Value mais le problème persiste.

    En sachant que mes cellules sont en format CP dans la base_communes donc au format "00000" comme dans mon VBA d'où mon incompréhension

    Est-ce que l'un d'entre vous a une idée ?

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub TextBox6_Change()
        If Not IsNumeric(TextBox6) Then
        MsgBox "Merci de noter le Code Postal au format 00000.", vbOKOnly + vbCritical, "Erreur de format"
        Exit Sub
        End If
        Application.ScreenUpdating = False
        If TextBox6.Text = Format(TextBox6.Text, "00000") Then
        ComboBox1.Clear
        Dim I As Long
        With Sheets("base_communes")
        For I = 1 To .Range("C" & Rows.Count).End(xlUp).Row
            If .Range("C" & I) = TextBox6.Text Then
                UserForm1.ComboBox1.AddItem .Range("F" & I).Value
            End If
            Next I
        End With
        Application.ScreenUpdating = True
        End If
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste mais sans message demandant la saisie du code postal sous la forme "00000", tout le monde sait qu'un CP en France métropolitaine comporte 5 chiffres. Sitôt qu'une valeur est trouvée et entrée dans le ComboBox, sa liste se déroule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    Private Sub TextBox6_Change()
     
        Dim PlgCP As Range
        Dim Cel As Range
        Dim Adr As String
     
        ComboBox1.Clear
     
        'commence la recherche seulement à partir de 5 chiffres
        If Len(TextBox6.Text) < 5 Then Exit Sub
     
        'plage de recherche sur la colonne C
        With Worksheets("base_communes"): Set PlgCP = .Range(.Cells(2, 3), .Cells(.Rows.Count, 3).End(xlUp)): End With
     
        'recherche
        Set Cel = PlgCP.Find(TextBox6.Text, , xlValues, xlWhole)
     
        'si trouvé, boucle...
        If Not Cel Is Nothing Then
     
            Adr = Cel.Address
     
            Do
     
                'popule en récupérant les agglomérations en colonne F
                ComboBox1.AddItem Cel.Offset(, 3).Value
                Set Cel = PlgCP.FindNext(Cel)
     
            Loop While Cel.Address <> Adr
     
            'ouvre la liste
            ComboBox1.DropDown
     
        End If
     
    End Sub
     
    'seulement numérique
    Private Sub TextBox6_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
        Select Case KeyCode
     
            Case 96 To 105
            Case Else: KeyCode = 0
     
        End Select
     
    End Sub

  3. #3
    Membre du Club
    Homme Profil pro
    Autre
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    Le code fonctionne parfaitement c'est top !

    Juste à mettre un clear si aucune valeur n'est sélectionnée, j'ai essayé de mettre par exemple 860000 et impossible d'effacer un caractère...

    Mais merci vraiment ça marche au poil !

    J'ai quand même gardé mon code, car j'ai été un peu plus loin pour voir la valeur cherchée par mon formulaire, je cherchais "09320" mais dans ma base, la valeur était 9320 au format CP donc ça risquait malheureusement pas de fonctionner... J'ai alors mis un = 0 & "Cellule" pour ajouter le 0 à toutes les valeurs entre 01000 et 09999 et miracle !

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Re,

    Tu autorises les touches Suppr et <-- :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub TextBox6_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
     
        Select Case KeyCode
     
            Case 96 To 105, 8, 46
            Case Else: KeyCode = 0
     
        End Select
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/02/2007, 16h53
  2. [Info]Eclipse ne prend pas en compte mes modifs...
    Par Baptiste Wicht dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/01/2006, 17h50
  3. Visual Basic ne prend pas en compte mon chgt de variable
    Par Crazy_Gun dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 09/12/2005, 14h40
  4. ne prend pas en compte le "0" ? comprend pas !!!
    Par pierre987321 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/10/2005, 19h39
  5. [JAR] Archive qui ne prend pas en compte librairie externe
    Par Shiryu44 dans le forum Général Java
    Réponses: 3
    Dernier message: 22/04/2005, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo