Ajout automatique d'une localité dans la liste BD si non exi

Bonjour

j'ai déjà eu une réponse à un problème similaire sur ce forum mais envolé

Si une localité n'existe pas dans une liste de ComboBox, je souhaites l'ajouter

lors d'une nouvelle entrée Merci de bien vouloir m'aider

Amitiés

Pierrot

30guerdon-cp002.xlsm (110.99 Ko)

Bonjour,

MDP ?

Sinon dans mon QCM_USF j'utilise cette "technique"... au niveau des thèmes de nouvelles questions, et pas de MDP pour accéder au code

@ bientôt

LouReeD

Cp1360Pz

avec toutes mes excuses

Bonjour,

Si tu tapes dans une Combo un nom ne figurant pas dans la liste, d'une part la propriété ListIndex aura la valeur -1, d'autre par la propriété MatchFound aura la valeur False, éléments qui te permettent de le détecter.

Tu peux donc en testant d'une façon ou l'autre la valeur de la Combo détecter une valeur ne figurant pas dans la liste, lancer une procédure qui l'ajoute à la liste source, traite s'il y lieu cette liste et réinitialise la liste de la Combo.

Cordialement.

Bonjour, Fernand

c'est gentil ta réponse, mais j'ignore le mode d'emploi

Amitiés

Pierrot

Salut Pierre,

la réponse que je t'avais donnée est dans ce fil...

https://forum.excel-pratique.com/post442444.html?hilit=automatiser%20localit%C3%A9%20combobox#p442444

A+

Ouaf ! Ton classeur avait planté à ma première ouverture... j'avais donné une réponse de principe.

Comment fais-tu avec ce fouillis indescriptible, agrégats de code d'origine diverses... Tu m'excuseras de ne pas intervenir sur le code... Je me suis contenté de localiser ton problème et j'ai donc cru détecter :

1) qu'une proc. Change de CbbLocalités (source Curulis, que je salue !) semble avoir été conçue à cette fin, de façon que je trouve un peu contournée car on peut faire plus logique autrement...

2) tu as utilisée également cette proc. dans Initialize pensant, je pense, alimenter ainsi ta Combo, mais la proc. n'ayant pas cette vocation première, plus de liste dans la Combo et donc plus rien ne fonctionnait à cette égard.

Il faut d'abord rétablir l'alimentation normale de la Combo :

Dans Initialize sur cette partie de code Curulis ajoutée là, tu laisses subsister 3 lignes :

    Dim iRow As Integer
    iRow = Sheets("BD").Range("A" & Rows.Count).End(xlUp).Row '+ 1 celle-ci en éliminant le +1
    Me.CbbLocalités.List = Sheets("BD").Range("A1:A" & iRow).Value

C'est pas vraiment joli, mais vu la "gueule" de la proc. en dehors de cette partie, cela ne lui nuiera pas plus ! et il y aura une liste dans la Combo.

Maintenant, si tu as une nouvelle localité à saisir qui ne figure pas dans la liste, tu vas la taper manuellement. La proc. Change n'est donc pas vraiment adaptée car elle se déclenchera à chaque caractère tapé (de la même façon que dans une TextBox), on va donc utiliser un autre évènement qui ne se déclenche qu'à validation de l'entrée.

Private Sub CbbLocalités_AfterUpdate()
    Dim nvloc$, n%
    With CbbLocalités
        If .Value <> "" Then
            If Not .MatchFound Then
                nvloc = .Value
                If nvloc Like "#### *" Then
                    .Clear
                Else
                    .Value = "": Exit Sub
                End If
            Else
                Exit Sub
            End If
        Else
            Exit Sub
        End If
    End With
    With Worksheets("BD")
        n = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        .Range("A" & n) = nvloc
        With .Range("A1:A" & n)
            .Sort key1:=.Range("A1"), order1:=xlAscending, Header:=xlNo
            CbbLocalités.List = .Value
        End With
    End With
End Sub

La méthode est simple : à validation d'une entrée on teste si une valeur à été entrée (sinon on sort), si cette value n'est pas dans la liste (Not .MatchFound, sinon on sort), si l'entrée est conforme aux critères d'écriture des localités et dans ce cas on supprime la liste de la Combo (Clear) sans effacer l'entrée (sinon on efface l'entrée et on sort).

Si on n'est pas sorti, c'est qu'on a une nouvelle localité conforme et on a déjà supprimé la liste de la Combo.

On ajoute la localité en fin de liste (BD), on retrie la liste des localités et on réaffecte une liste triée à la Combo, contenant la nouvelle localité.

Bien évidemment tu supprimes la procédure Change de la Combo...

Cordialement.

Bonsoir,

Tout ce qui concernent les localités, fonctionnent bien

mais j'ai un UF qui ne s'ouvre plus placé dans Initialize

Private Sub CmbParticipants_Click() (Bouton de commande)

Userform2.Show

End Sub

avant les modifs pour les localités, tout fonctionnait pour ce bouton

merci de m'aider à clôturer ce problème

Amitiés

Pierrot

23guerdon-cp002.xlsm (110.27 Ko)

Bonsoir Pierrot,

fichier protégé par mot de passe!

A+

Bonsoir , Fernand, tout est en ordre et tout fonctionne grâce à toi et à Curilis

Un grand merci à vous deux et bonne soirée

Amitiés

Pierrot


Le mot de passe est "Cp1360Pz" mais cela n'a plus d'importance puisque tout marche à présent

Amitiés et merci

Pierrot

Rechercher des sujets similaires à "ajout automatique localite liste exi"