Pb réinitialisation avec combobox

Bonjour le forum,

Ci-dessous le code pour activer ma combo box ( merci le forum de ce code).

J'ai un petit souci avec car si je supprime dans la feuil ("Données") une ligne complète de mon tableau (dans le cas présent il s'agit d'une référence produi), et que je relance ma combobox la valeur supprimée reste en choix possible dans la liste.

Comment puis je faire pour la supprimer?

Merci de votre aide

Private Sub UserForm_Initialize()

Dim i As Integer

For i = 11 To Sheets("Données").Range("A65536").End(xlUp).Row

With ComboBox1

.AddItem Sheets("Données").Range("A" & i)

End With

Next

End Sub

Bonjour,

place ton code dans une procédure:

Public Sub MAJComboBox1()
Dim i As Integer 

ComboBox1.clear 'Important pour vider le combobox
For i = 11 To Sheets("Données").Range("A65536").End(xlUp).Row 
With ComboBox1 
.AddItem Sheets("Données").Range("A" & i) 
End With 
Next
End sub

ensuite appele ton code à l'événement UserForm_Initialize et quand tu veux mettre ton combobox à jour. Oublie pas de rajouter la ligne ComboBox1.clear

Bonsoir Math,

J'ai déjà tenté le combobox1.clear mais lorsque je lance le userform contenant la combo, il n'y a rien dans la sélection, c'est vide.

J'ai repris ton code et j'ai tapé ça.

Private Sub ComboBox1_Change()

MAJComboBox1

End Sub

Est ce correct?

est-ce que tu peux envoyer un bout de ton code svp???

901-2.xlsx (9.54 Ko)

Voilà l'enchainement du code.

Dans l'auto_open je sélectionne ma base de données et je la trie par ordre croissant car comme j'utilise la fonction RechercheV, cette dernière ne fonctionne que si la base a été préalablement triée par ordre croissant.

Ensuite je supprime tous les liens Hypertextes.

Puis se lance le USerform avec 2 drapeaux qui permettent de sélectionner la langue.

Et enfin se lance le Userform qui contient la combobox qui "Scanne" la colonne A en commençant à la ligne 11. Dans cette colonne se trouve donc les références de l'ERP de l'entreprise.

Dés qu'une référence est sélectionnée elle est injectée dans une feuille masque et ensuite à partir de ce code une quantité d'autres cellules sont remplies via la rechercheV.

Cependant, les références de l'erp peuvent être ajoutées mais également retirées (plus de vente sur le produit) et dans ce dernier cas lorsque je les retire elles apparaissent toujours en mémoire dans la combo box.

Voilà en espérant avoir été concis.

Merci de votre aide une nouvelle fois.

PS : J'ai retiré une bonne partie du code à certains endroits, car ce serait illisible sans avoir l'application sous les yeux...

Sub auto_open()

Application.ScreenUpdating = False

Sheets("Données").Select

Range("A11:DA10000").Select

Selection.Sort Key1:=Range("A11"), Order1:=xlAscending, Header:=xlGuess, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _

DataOption1:=xlSortTextAsNumbers

Range("A1").Select

Sheets("Masque").Select

Range("D7:H7,A109:AJ113").Select

Selection.ClearContents

Range("A2").Select

Dim H1 As Object

For Each H1 In Cells.Hyperlinks

Cells(H1.Range.Row, H1.Range.Column).Value = ""

Next

UserForm2.Show

End Sub

Private Sub Image1_Click()

'Version française

UserForm2.Hide

ActiveSheet.Shapes("Recherche").Select

Selection.Characters.Text = "Recherche"

ActiveSheet.Shapes("BoutonImprimer").Select

Selection.Characters.Text = "Imprimer"

ActiveSheet.Shapes("Info_Sortir").Select

Selection.Characters.Text = "Cliquer sur le logo pour quitter l'application!!!"

ActiveSheet.Shapes("Bouton_Calcul").Select

Selection.Characters.Text = "Calculs poids/volume"

Range("D3:V3").Select

ActiveCell.FormulaR1C1 = "=IF(R[-2]C[34]=0,"""",R[-2]C[34])"

UserForm1.Caption = "Selectionnez un code produit fini Movex!"

UserForm1.UserForm1_Annuler.Caption = "Annuler"

Application.OnTime Now + TimeValue("00:00:01"), "Depart"

End Sub

Sub Depart()

'

'

'

UserForm1.Show

Code ci-dessous affecté aux bouton Ok, Annuler, et de la fameuse combobox

Private Sub UserForm_Initialize()

Dim i As Integer

For i = 11 To Sheets("Données").Range("A65536").End(xlUp).Row

With ComboBox1

.AddItem Sheets("Données").Range("A" & i)

End With

Next

End Sub

Private Sub UserForm1_OK_Click()

Dim i As String

i = ComboBox1.Text

Sheets("Masque").Range("D7").Value = i

UserForm1.Hide

End Sub

Private Sub UserForm1_Annuler_Click()

UserForm1.Hide

End Sub

Bonjour,

le truc c'est de vider et de réemplir ton combobox à chaque fois que tu supprimes un enregistrement de la liste. Si j'ai bien compris tu veux pouvoir supprimer une ligne dans la feuille Données et que les changements se répercute sur le combobox...

ajoute la procédure que je t'ai écrite plus haut dans ton code et trouve l'évènement qui te convient le mieux pour l'appeler ex: WorkSheet_Change

le mieux serait de placer la procedure dans un module et de faire référence à la userform:

Public Sub MAJComboBox1() 
Dim i As Integer 

NomDeLaUserForm.ComboBox1.clear 'Important pour vider le combobox 
For i = 11 To Sheets("Données").Range("A65536").End(xlUp).Row 
With NomDeLaUserForm.ComboBox1 
.AddItem Sheets("Données").Range("A" & i) 
End With 
Next 
End sub 

Bonjour Math,

Ca fonctionne.

J'ai créé une procédure avec un bouton de suppression de ligne dans la base avec une msgbox "Etes vous sur de vouloir supprimer une ligne" si fausse manipulation, les lignes se suppriment et j'ai placé ton code.

Dés que je relance l'application pas de souci les lignes (codes) supprimées ont disparu.

Merci de ton aide

Rechercher des sujets similaires à "reinitialisation combobox"