Suppression éléments d'un tableau

Bonjour à tous. Bonne fête de Aïd el-Fitr aux musulmans du Forum.

Je voudrais de l'aide. Quand je supprime un élément de mon tableau, la liste n'est pas actualisée dans le combobox et les éléments supprimés s'affichent toujours dans le combobox.

Aussi , je voudrais éviter les doublons dans la validation.

Merci par avance.

Ci-joint le fichier

Bonjour

Est-ce qu'il se peut que dans cette liste vous ayez des doublons ou pas ?

Crdlt

Bonjour. Merci

J'ai essayé avec des la lettre <a> et j'ai des doublons.

Peut être si le contenu est plus long il y aura pas de doublons

Bonjour. Merci

J'ai essayé avec des la lettre <a> et j'ai des doublons.

Peut être si le contenu est plus long il y aura pas de doublons

Merci de mettre votre version excel dans votre profil de compte sans quoi on risque de passer à coté d'une solution à votre problème

Si vous êtes avec excel MAC, pensez à ajoutez MAC dans la version --> (Excel MAC2011, .....)


J'ai essayé avec des la lettre a et j'ai des doublons.

Ok mais là on a besoin de plus d'info. Votre liste mentionne Ecole A...., donc pour supprimer vous allez choisir dans la combo Ecole A par exemple
en foncitonde ce que vous écrivez on aurait plusieurs fois "Ecole A "?
Si oui, devez-vous supprimer toutes les ecoles A
Essayez d'être précis sans quoi avec VBA cela ne va pas faire quelque chose de correct

Ok. Je vais essayer de modifier mon profil en ajoutant Excel 2013

Le problème est que si je supprime par exemple École "C" la ligne est effectivement supprimer mais le nom École "C" reste toujours au niveau de la liste du combobox.

Quand aux doublons qui concernent le bouton valider , la liste qui est dans le fichier joint est une liste créé fictivement. Si je change le nom de l'école et je met Paris par exemple les doublons sont possibles. Ce que je ne voudrais pas.

Ok. Je vais essayer de modifier mon profil en ajoutant Excel 2013

Le problème est que si je supprime par exemple École "C" la ligne est effectivement supprimer mais le nom École "C" reste toujours au niveau de la liste du combobox.

Quand aux doublons qui concernent le bouton valider , la liste qui est dans le fichier joint est une liste créé fictivement. Si je change le nom de l'école et je met Paris par exemple les doublons sont possibles. Ce que je ne voudrais pas.

Pourquoi vous postez chaque fois deux fois le même message ?

Quand aux doublons qui concernent le bouton valider , la liste qui est dans le fichier joint est une liste créé fictivement. Si je change le nom de l'école et je met Paris par exemple les doublons sont possibles. Ce que je ne voudrais pas.

Quand vous dites "je ne voudrais pas" que voulez vous dire ?

Si vous avez des doublons possibles, cela veut aussi dire qu'il faut en tenir compte lors du chargement de la combo et que l'on puisse supprimer tout selon le choix de la combo.
Exemple : si vous avez 3x paris et que vous choisissez Paris dans la combo, il faudra supprimer tous les paris dans votre tableau. Je me trompe ?

Ce serait bien d'avoir une photo du fichier réel sans quoi avec les doublons on risque de recommencer le code

Déjà une chose à modifier c'est ce code dans votre fichier, c'est le code "Fermer"

remplacer

Me.hide

par

Unload me

Hide correspond à masquer et non à décharger

Ok. Compris

Il ya plusieurs réponse car mon réseau de connexion est très médiocre. Quand je clique pour poster , rien ne se passe ce qui fait que je clique de nouveau et cela cause souvent deux réponses. Je m'excuse pour cela.

Je voulais dire par "Je ne voudrais pas " que je voulais qu'il ne soit pas possible d'insérer le même nom d'école dans le tableau plus d'une fois.

Avez-vous supprimer une école et revérifier la liste pour voir ? Chez moi e nom ne s'efface ça automatiquement.

Il ya plusieurs réponse car mon réseau de connexion est très médiocre. Quand je clique pour poster , rien ne se passe ce qui fait que je clique de nouveau et cela cause souvent deux réponses. Je m'excuse pour cela.

Ok. Mystère donc...

Je voulais dire par "Je ne voudrais pas " que je voulais qu'il ne soit pas possible d'insérer le même nom d'école dans le tableau plus d'une fois.

Ok alors cela fera l'objet d'une autre code


Pour votre demande voici ce que vous devez modifier dans votre USF

1. Code initialize : Remplacez votre code par celui ci-dessous

Private Sub UserForm_Initialize()
Call remplir
Call ComboBox1_Change
End Sub

2. Code remplir : ajoutez ce code dans l'USF.

Sub remplir()
ComboBox1.List = Range("Tableau4").Value
End Sub

3. Code Supprimer : remplacer le Commandbutton2_click par celui ci-après

Private Sub CommandButton2_Click() 'supprimer
Dim n As Byte

If MsgBox("Confirmez-vous la suppression de " & ComboBox1.Value & "?", vbExclamation + vbYesNo + vbDefaultButton2, "Attention, Action irreversible") = vbYes Then

    n = ComboBox1.ListIndex + 1
    Range("Tableau4").Item(n).Delete
    ComboBox1 = vbNullString

    Call remplir
End If
End Sub

Dites moi si ok.
Après on peut passer au code Valider si vous voulez

Bonjour,

Il est normal que la liste déroulante ait toujours l'item puisqu'elle n'a pas été mis à jour.

Donc il faut couper le code dans UserForm_Initialize et le coller dans une petite procédure que l'on nommera InitCombo par exemple

Private Sub InitCombo()
    Dim i As Long
    For i = 1 To [Tableau4].Rows.Count
        Me.ComboBox1.Value = [Tableau4].Item(i, 1)
        If Me.ComboBox1.ListIndex = -1 Then Me.ComboBox1.AddItem [Tableau4].Item(i, 1)
    Next
End Sub

Ensuite il ne reste plus qu'à l'appeler aux endroit ou il faut :

Private Sub UserForm_Initialize()
    InitCombo
End Sub

Et

Private Sub CommandButton2_Click()
    If MsgBox("Confirmez-vous la suppression de " & ComboBox1.Value & "?", vbExclamation + vbYesNo, "Attention, Action irreversible") = vbNo Then Exit Sub

    n = Me.ComboBox1.ListIndex + 1
    If [Tableau4].Item(n, 1) <> "" Then [Tableau4].Rows(n).Delete
    InitCombo
End Sub

Il y a d'autres choses à modifier c'est vraiment du minimaliste.

L'utilisation de Me.Hide doit être faite s'il y a un code appelant car sinon on ne sait plus si le formulaire est chargé ou pas exemple :

Sub Rectangleàcoinsarrondis3_Cliquer()
    Dim itemForm As UFecole
    Set itemForm = UFecole
    With itemForm
        .Caption = "Gestions des écoles"
        '...
        '...
        '...
    End With
    Unload itemForm
End Sub

Et dans le module du formulaire :

Private Sub CommandButton1_Click()
    UFecole.Hide ' // On donne la main au programme appelant
End Sub

Bien entendu pour que cela fonctionne il faut que le formulaire soit modal...

@Jean Paul

désolé mais je n'ai pas compris votre intervention sur le fil

Y aurait-il un problème sur mes propositions ?

Si vous y tenez continuez avec le demandeur

Merci bien.

J'ai essayé, effectivement le nom de l'école supprimée disparaît mais il ya un autre problème : quand il reste une (1) école , un message d'erreur s'affiche et on ne peut plus supprimer la dernière école.

J'ai essayé, effectivement le nom de l'école supprimée disparaît mais il ya un autre problème : quand il reste une (1) école , un message d'erreur s'affiche et on ne peut plus supprimer la dernière école.

Vous vous adressez à qui ? 0 jean paul ou à moi

Bonsoir @Jean-Paul

Je n'arrive pas à faire fonctionner.

Un message d'erreur s'affiche.

Ci-joint le fichier avec votre code

Merci par avance

Le message plus haut était à @Dan

J'ai des difficultés parce que je ne vois pas l'option répondre dans le fil

Bonjour,

désolé mais je n'ai pas compris votre intervention sur le fil

Y aurait-il un problème sur mes propositions ?

Absolument pas. J'écris tout simplement à la vitesse d'un retraité et votre post est arrivé avant le mien tout simplement.

J'ai des difficultés parce que je ne vois pas l'option répondre dans le fil

Le bouton Répondre est en dessous à gauche de chaque page ou en haut à gauche mais il faut passer votre souris à cet endroit pour le voir

Le message plus haut était à @Dan

OK.

Pour le bug, remplacez le code remplir par celui ci-dessous

Sub remplir()
ComboBox1.Clear
With Sheets("Feuil1").ListObjects(1)
    If .ListRows.Count > 1 Then
        ComboBox1.List = .DataBodyRange.Value
    Else: ComboBox1.AddItem .DataBodyRange.Value
    End If
End With
End Sub

Re,

j'ai aussi trouvé d'autres boulettes, et voici une autre manière d'accéder aux données.

Grandement merci à @Dan.

J'ai remplacé le code et ça marche

Quand a ma demande sur les doublons, après plusieurs essais je vois qu'ils peuvent être évités car en commençant à saisir le combobox propose déjà l'école dont le nom commence par les mêmes lettres.

Merci bien @Jean-Paul de m'avoir appris d'autres manières de faire.

Rechercher des sujets similaires à "suppression elements tableau"