Microsoft 365 Combobox ajouter si n'existe pas dans Liste

  • Initiateur de la discussion Initiateur de la discussion eric72
  • 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 !

eric72

XLDnaute Accro
Bonjour à tous,
Je me retrouve face à un problème avec une combobox(exemple CbFournisseur1), je souhaiterai lors de l'entrée d'une valeur non présente dans le TB TbFournisseur, l'ajouter à ce tableau, j'ai donc mis ce code

VB:
'**************************************************************************************
'TEST SI LA SOCIETE EXISTE DEJA
'**************************************************************************************
    'nom de la feuille
    Set ws = ThisWorkbook.Sheets("Données")
    ' nom du tableau structuré
    Set TbFourn = ws.ListObjects("TbFournisseur")
    ' Récupérez les valeurs des TextBox du UserForm
    valeurA = UsfAchats.CbFournisseur1.Value
    ' Réinitialiser les indicateurs
    trouveA = False
    ' Recherche de la valeur A dans la colonne du tableau structuré correspondant à "cbfournisseur1"
If ws.ListObjects("TbFournisseur").ListRows.Count <> 0 Then
    For Each cell In TbFourn.ListColumns(1).DataBodyRange
        If cell.Value = valeurA Then
            trouveA = True
            Exit For
        End If
    Next cell
End If

    ' Vérifier si la valeur ont été trouvée
    If trouveA Then
    
    Else
    
        With ws.ListObjects("TbFournisseur")
                Dim W
                ' On constitue la liste de données à Ajouter à la liste
                W = Array(CbFournisseur1)
                .ListRows.Add.Range.Cells(1).Resize(, 1) = W ' On ajoute la ligne à la base
        End With
        
  End If

End Sub

dans l'évènement Afterupdate de ma combobox (code déjà utilisé à maintes reprises sans problème), mais cette fois il plante au moment d'ajouter la ligne et me sors carrément du fichier, il doit y avoir une incohérence, mais je ne la vois pas.
Auriez-vous une petite idée du pourquoi?
Merci beaucoup de votre aide!
Eric
 

Pièces jointes

Solution
Salut,
L'erreur se produit car les comboboxs 1 à 5 sont liés par des rowsource à la table des fournisseurs, ce qui interdit la mise à jour de la table
Il faut donc rompre ce lien, mettre à jour la table et rétablir les liens .
VB:
Private Sub CbFournisseur1_Enter()
    CbFournisseur1.DropDown
End Sub
Private Sub CbFournisseur1_AfterUpdate()
    If CbFournisseur1 = "" Then Exit Sub
    
    With ThisWorkbook.Sheets("Données").[TbFournisseur[Fournisseur]] 'nom de la feuille
        Set f = .Find(Me.CbFournisseur1.Value, , , xlWhole)
        If f Is Nothing Then ' Le fournisseur n'existe pas, on doit l'ajouter
            ' Rupture des liens avec la table des fournisseurs qu'on doit mettre à jour
            For i = 1 To 5...
Désolé, mon message était adressé à @eric72.
Rien n'empêche que l'utilisateur saisisse un nouveau fournisseur avec les combos autres que la 1ère.

@Valtrase : dans ton fichier, le code plante lorsqu'on clique dans la listbox. @eric72, utilise le nom d'un autre formulaire dans son code original.
Je n'ai pas regarder de ce coté l'exemple fourni n'est qu'un exemple pour la méthode AfterUpdate de la liste déroulante, et doit-être finalisé...
 
Je n'ai pas tout compris. Avec le fichier ci-joint, on peut ajouter un fournisseur avec n'importe quelle combo.
Ah, c'est génial aussi , super!!!
Vous êtes géniaux, maintenant je ne me ferais plus avoir avec ce problème.
Merci beaucoup et bonne soirée.
Je n'ai pas tout compris. Avec le fichier ci-joint, on peut ajouter un fournisseur avec n'importe quelle combo.
 
Bonjour le fil.
Eric as tu vu le post qui parle de la propriété RowSource(il faut supprimer dans la propriété RowSource ce qui ci trouve . Pour pouvoir gérer le combobox et le ListObjet (depuis mon téléphone)
Bonne journée
Jean marie
 
Bonjour le fil.
Eric as tu vu le post qui parle de la propriété RowSource(il faut supprimer dans la propriété RowSource ce qui ci trouve . Pour pouvoir gérer le combobox et le ListObjet (depuis mon téléphone)
Bonne journée
Jean marie
Bonjour Jean-Marie,
Oui j'ai bien vu le post de Fanch55 et j'ai appliqué cette solution qui fonctionne bien, cependant j' ai aussi regardé les autres propositions et ai testé celle de cathodique, je répondais juste à sa solution pour lui indiquer que cela ne fonctionnait pas.
Merci Jean-Marie
 
Bonjour cathodique,
j'ai le même message "la méthode add...... a échoué" , et il ferme Excel
Bonjour,

Il me semble que @fanch55 t'as donné une solution et qu'elle répondait bien à ta demande.

Je t'ai répondu d'après ce que j'ai compris. Sur ma vieille machine, je n'ai pas rencontré de plantage.

Je n'ai pas traité le code du bouton validé (ne faisait pas partie de ta demande).

Test1.gif


Tu devrais expliquer les tenants et aboutissants de ton projet.

Bonne journée.

edit: ça ne fonctionne pas avec mon fichier joint en retour ou sur le tien (adaptation de mon code)?
 
Bonjour,

Il me semble que @fanch55 t'as donné une solution et qu'elle répondait bien à ta demande.

Je t'ai répondu d'après ce que j'ai compris. Sur ma vieille machine, je n'ai pas rencontré de plantage.

Je n'ai pas traité le code du bouton validé (ne faisait pas partie de ta demande).

Regarde la pièce jointe 1217098

Tu devrais expliquer les tenants et aboutissants de ton projet.

Bonne journée.

edit: ça ne fonctionne pas avec mon fichier joint en retour ou sur le tien (adaptation de mon code)?
En effet la solution de Fanch55 répond bien à mon besoin, d'ailleurs j'ai mis le post en résolu, ce qui n'empêche pas de tester les autres soultions.
Pour répondre à ta question, c'est bien le fichier que tu m'as renvoyé qui plante chez moi.
Je vois que cela fonctionne bien chez toi mais je ne peux pas en dire plus.
Dans tous les cas merci beaucoup de t'être penché sur mon problème, c'est top!!!
 
En effet la solution de Fanch55 répond bien à mon besoin, d'ailleurs j'ai mis le post en résolu, ce qui n'empêche pas de tester les autres soultions.
Pour répondre à ta question, c'est bien le fichier que tu m'as renvoyé qui plante chez moi.
Je vois que cela fonctionne bien chez toi mais je ne peux pas en dire plus.
Dans tous les cas merci beaucoup de t'être penché sur mon problème, c'est top!!!
Je suis ravi que la solution de @fanch55 te convienne.
Cependant, un avis personnel. Je trouve que l'ajout d'un fournisseur via AfterUpDate est une mauvaise idée.
Parce que tu ajoutes un fournisseur dans le tableau avant de choisir le compte et le montant.
Or, si l'utilisateur fait une erreur sur le fournisseur plus possible de faire machine arrière (déjà ajouté au tableau).
L'envoi des données ne doit se faire qu'en utilisant le bouton de validation et si un fournisseur n'existe pas l'ajouter à TbFournisseur .

Bonne continuation.
 
Bonjour
n'y a t'il pas une erreur dans cette partie de la Procédure(fichier du post"16)
VB:
Call AjoutValeurComboBox(UsfAchats.CbFournisseur1, "TbFournisseur", "TbFournisseur")
il y a deux Fois le Nom du Tableau (TbFournisseur) , au lieu (si j'ai bien Compris) le Nom de la Colonne "columnName"
Code:
AjoutValeurComboBox(comboBox As MSForms.comboBox, tableName As String, columnName As String)
Bonne journée
Jean marie
 
Je suis ravi que la solution de @fanch55 te convienne.
Cependant, un avis personnel. Je trouve que l'ajout d'un fournisseur via AfterUpDate est une mauvaise idée.
Parce que tu ajoutes un fournisseur dans le tableau avant de choisir le compte et le montant.
Or, si l'utilisateur fait une erreur sur le fournisseur plus possible de faire machine arrière (déjà ajouté au tableau).
L'envoi des données ne doit se faire qu'en utilisant le bouton de validation et si un fournisseur n'existe pas l'ajouter à TbFournisseur .

Bonne continuation.
Bien sur tu as raison, d'ailleurs j'ai bien mis le code lors de la validation, si tu relis le post14 j'ai expliqué pourquoi je l'avais mis dans afterupdate!
 
- 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
5
Affichages
182
Retour