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...
Je ne comprends pas pourquoi tu le prends mal, j'ai bien dit que je m'intéressais aux autres propositions qui permet aussi de progresser, donc il n'y aucun souci. D'ailleurs je t'ai remercié de l'intérêt que tu as porté à mon problème.
Je te remercie une nouvelle et prends bien en compte ta proposition
Bonne journée à toi
Bien que j'ai dit que le fichier aller finir à la corbeille, j'ai revu la procédure de recherche.
Tu nous a bien dit que la solution de Fanch55 te convenait bien.

Je trouve que tu as manqué de franchise. Tu aurai dû nous dire, partant d'un fichier de Jacques Boisgontier, je trouve des difficultés à adapter le code à mon besoin. Et, expliquer ce besoin.

Ce n'est pas une tare, je me suis moi même inspiré d'exemples de JB. Mais en demandant de l'aide, je le disais.

Comment voudrais-tu que je le prenne. Je t'ai consacré une bonne partie de cette journée.
Je ne sais pas quoi te dire, tout en sachant que le code de Fanch55 me satisfait.
tant mieux, je suis ravi pour toi. Ce qui veut dire que pour le reste, tu vas t'en sortir tout seul. Et j'en serai doublement content pour toi.
je n'ai fini les tests du fichier.
Bonne continuation.
 

Pièces jointes

Bien que j'ai dit que le fichier aller finir à la corbeille, j'ai revu la procédure de recherche.
Tu nous a bien dit que la solution de Fanch55 te convenait bien.

Je trouve que tu as manqué de franchise. Tu aurai dû nous dire, partant d'un fichier de Jacques Boisgontier, je trouve des difficultés à adapter le code à mon besoin. Et, expliquer ce besoin.

Ce n'est pas une tare, je me suis moi même inspiré d'exemples de JB. Mais en demandant de l'aide, je le disais.

Comment voudrais-tu que je le prenne. Je t'ai consacré une bonne partie de cette journée.

tant mieux, je suis ravi pour toi. Ce qui veut dire que pour le reste, tu vas t'en sortir tout seul. Et j'en serai doublement content pour toi.
je n'ai fini les tests du fichier.
Bonne continuation.
Aucun problème de franchise, étant 100% Autodidacte en Vba, il est bien évident qu'il faut, pour démarrer, utiliser des codes qui fonctionnent et qui ont été pensés par des personnes, notamment, présentes sur ce site, je pensais même que le site avait aussi cette raison d'exister.
Si ça n'est pas le cas, veuillez m'en excuser!!!
Je pense sincèrement qu'il y a des choses bien plus importantes dans la vie que cela.
Je suis désolé d'avoir monopolisé une partie de ta journée avec ce sujet...
Je ne comprends pas bien ce que tu cherches avec ces reproches mais cela me parait bien petit.
1000 Excuses pour la gêne occasionnée et bonne continuation.
 
- 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