VBA - probleme retrait dans liste de choix

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 !

mikepers

XLDnaute Occasionnel
Bonsoirle forum, mikepers.

mon problème:
j'ai un combobox relié à une plage nommée ( liste )
cette liste comprend des dates ( format jj/mmm/aa )
le combo est lui-même formaté ( format, "dd/mmm/yy")
ce combo est dans un userform. Le but recherché: appeler la liste
et pouvoir retirer des dates de celle ci - via un bouton.

Le code bouton:


If MsgBox("Retirer cette date de la liste ?", _
vbYesNo + vbQuestion, "Confirmation") = vbYes Then
End If
Application.ScreenUpdating = False
Sheets("JEUX2").Select
Dim config As Integer
Dim réponse As Integer
Dim L, i As Integer
L = Sheets("JEUX2").Range("A32767").End(xlUp).Row
For i = 2 To L
If Sheets("JEUX2").Range("B" & i) = UserForm1.ComboBox4.Value Then
Sheets("JEUX2").Range("B" & i).Select
ActiveCell.ClearContents



End If
Next

lors du déclenchement, aucun déboguage, la date est retirée du combo mais pas
de la liste !!! pourqUOi ???
Mon code fonctionne sur un autre module ( mais sur du texte, sans format date ).Les
données se retirent sans problème de la liste..
Quelqu'un voit il un "loup" sur le principe-ou dans le code ???

Merci mille fois
 
Re : VBA - probleme retrait dans liste de choix

bonjour 🙂


pourrais tu nous fournir un fichier exemple, comment alimentes-tu ta combobox lors de l'initialize du usf ?

tu nous dis :
lors du déclenchement, aucun déboguage, la date est retirée du combo mais pas de la liste !!! pourqUOi ???

je ne vois rien dans le code fournit permettant de retirer un item de la combobox

de plus, que doit faire le code si on repond non à la msgbox ? pour le moment quelque soit la réponse le code se déroule.

tu cherches la derniere cellule non vide de la colonne A, mais boucle sur la colonne B, dangereux, non ?

en attendant de te lire, je te souhaite un bon dimanche.

salut

 
Re : VBA - probleme retrait dans liste de choix

salut RV, merci pour ton post.
effectivement mon explication est peut être confuse ( celà est probablement du à mon niveau encore incertain ).Je ne peux pas mettre en ligne le fichier car il il est assez lourd et complexe,mais:

"tu nous dis :
lors du déclenchement, aucun déboguage, la date est retirée du combo mais pas de la liste !!! pourqUOi ???"

1/ oui, en effet c'est le résultat du code, même si effectivement il n'y a rien du style " UserForm1.ComboBox4.Value= """.J'imagine que c'est juste un résultat visuel qui correspond à un bug ( sans déclenchement du débogueur)
2/effectivement, il faut que je re-travaille la condition ( si on clique non au début ) j'imagine que c'est "exit sub", mais c'est un oubli de ma part sur ma 1ere version.

3/ Tu dis :" tu cherches la derniere cellule non vide de la colonne A, mais boucle sur la colonne B, dangereux, non ?" là par contre je ne saisis pas, ormis peut être sur :"Range("A32767")" - dans ce cas il s'agirait de Range("B32767") alors ???

Bien à toi.
 
Re : VBA - probleme retrait dans liste de choix

Salut mikepers
bonsoir Mon Ami Hervé
voila ce que j'ai fait et qui fonctionne (pas de fichier joint lol)

Sub testEfface()
madate = "05/07/2006"
If MsgBox("Retirer cette " & madate & "date de la liste ?", _
vbYesNo + vbQuestion, "Confirmation") = vbYes Then
Else
Exit Sub
End If
Application.ScreenUpdating = False
Sheets("Feuil1").Select
Dim config As Integer
Dim réponse As Integer
Dim L, i As Integer
L = Sheets("Feuil1").Range("A32767").End(xlUp).Row
For i = 4 To L

If Sheets("Feuil1").Range("B" & i) = CDate(madate) Then
Sheets("Feuil1").Range("B" & i).ClearContents
End If
Next
End Sub
bonne fin de Soirée
 
Dernière édition:
Re : VBA - probleme retrait dans liste de choix

re mikepers
voila comment j'ai modifié la procèdure
arff petite modification la ligne est supprimée au lieu d'être effacée
Private Sub CommandButton1_Click()
'
Retrait de la date
Dim config As Integer
Dim réponse As Integer
Dim L, i As Integer
If UserForm1.ComboBox1.Text = "" Then Exit Sub
If MsgBox("Sortir la date " & UserForm1.ComboBox1 & " de la liste?", _
vbYesNo + vbQuestion, "Confirmation") = vbYes Then

Application.ScreenUpdating = False
Range("A1").Select
Sheets("JEUX2").Select

L = Sheets("JEUX2").Range("A32767").End(xlUp).Row
For i = 1 To L
If Sheets("JEUX2").Range("A" & i) = CDate(UserForm1.ComboBox1) Then
Sheets("JEUX2").Range("A" & i).EntireRow.Delete shift:=xlUp 'au lieu de .ClearContents
UserForm1.ComboBox1.Text = "" 'supprimer cette ligne si plusieurs valeurs à effacer
Exit For 'supprimer cette ligne si plusieurs valeurs à effacer
End If
Next
End If
UserForm1.ComboBox1.Text = ""
UserForm_Initialize
Application.ScreenUpdating = True
End Sub

de plus j'ai modifié l'endroit ou tu as mis ceci
ComboBox1 = Format(ComboBox1.Value, "dd/mmm/yy")
je l'ai mis dans
Private Sub ComboBox1_Click()
ComboBox1 = Format(ComboBox1.Value, "dd/mmm/yy")
End Sub
j'ai aussi modifié la façon de charger le combobox

Private Sub UserForm_Initialize()
Dim tablo As Variant
With Worksheets("JEUX2")
tablo = .Range("A1:A" & .Range("A65536").End(xlUp).Row).Value
End With
Me.ComboBox1.List() = tablo
End Sub
bonne fin de Soirée
 
Dernière édition:
Re : VBA - probleme retrait dans liste de choix

bonsoir ChTi160.
Un grand merci pour ton aide et tes idées.
Ton fichier fonctionne en effet, et je te remercie pour ton code que je vais certainement adapter sur d'autres idées, mais:
malgré toutes tes astuces,je pense que ce n'est pas adapté à mon fichier original, parce que :

1/ en fait dans ton cas la liste doit être sur une feuille unique dédiée à cette liste ( vue que l'on retire une ligne complète à chaque fois).
ma liste, sur le fichier origine, fait partie d'une feuille ou se trouvent plusieurs listes de choix et plages nommées - pour d'autres utilisations au niveau du fichier global. A la limite je pourrai le faire, si finalement ta solution s'avére la seule possibilité

2/ le 2e soucis c'est que cette liste doit pouvoir être nommée, pour que je puisse la rappeller dans d'autres endroits du fichier ( cellules dans excel, via "validation".
Vu qu'avec une forte utilisation de ta fonction ( en cours d'année, de nombreuses manipulations de dates ( retrait, rajout, modif ) font que la suppression de lignes à chaque fois peut à la longue créer ( me semble t'il ) pas mal de soucis - je ne sais même pas comment excel réagit avec une plage nommée "fixe" çà laquelle l'on retire des lignes - mais j'ai récupéré ton code et tester pour voir.
Encore merci pour ta participation, idée et conseils.
A+
 
Re : VBA - probleme retrait dans liste de choix

Salut mikepers
Bonjour le Fil
Bonjour le Forum
mikepers ce fichier n'est qu'un exemple qui peut sûrement être adapté
le fait que les lignes soient supprimées, peut être remplacé(voir annotation dans la macro )par l'effacement de la seule Cellule(ClearContents) pour ce qui est de la plage nommée ,je pense que l'on peut aussi à chaque opération sur cette liste, la renommée en fonction de sont changement de dimmension.
Enfin tu vois et tu n'hésite pas à revenir nous voir si problème
Bonne journée 😛
 
Re : VBA - probleme retrait dans liste de choix

Salut mikepers
Bonjour le Fil
Bonjour le Forum

En pièce jointe un fichier où la plage liste est renommée en fonction des modifications faites
Ensuite j'ai mis une liste de Validation pour voir (à améliorer sûrement)

Regarde la pièce jointe TESTV2.zip
Bonne journée
 

Pièces jointes

- 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
4
Affichages
692
Réponses
4
Affichages
732
Réponses
10
Affichages
759
Réponses
3
Affichages
851
Retour