Supprimer une ligne avec VBA

Bonjour,

J'aimerais depuis un formulaire rechercher un nom dans une liste déroulante puis une fois trouvé supprimer la ligne.

Pour ne pas avoir de ligne vide.

Merci de votre aide

Bonjour

Pour ne pas travailler inutilement, il faudrait le fichier pour savoir quoi et où chercher

Cordialement

Bonjour,

Merci pour ta réponse. Voici le fichier.

Le bouton suppression est dans la feuille "LIVRES" La suppression ligne concernée la feuille Adhérents.

Je n'arrive pas à voir comment faire la liaison des d’adhérents avec le menu déroulant qui ce trouve dans le formulaire "suppression Adhérents". Le form correspondant est le UserForm4

J'ai une question qui vient en plus comment décaler les formulaires quand ils s’ouvrent plus dans le centre de l'écran.

Merci pour tout

Bonjour

Code du bouton Supprimer

Private Sub cmdsupprimer_Click()
Dim i, j
j = UserForm4.ComboBox1.Value
i = Application.WorksheetFunction.Match(j, Sheets("Adherents").Range("A:A"), 0)
Sheets("adherents").Activate
Rows(i).EntireRow.Delete
End Sub

Pour centrer l'Userform

https://forum.excel-pratique.com/excel/centrer-un-userform-t40537.html

Cordialement

Bonsoir

Dans l'USF 4, tu supprimes tous les codes et tu les remplaces par celui ci-après

Private Sub UserForm_Initialize()
Dim i As Integer
With Sheets("Adherents")
    For i = 1 To .Range("A" & .Rows.Count).End(xlUp).Row
        ComboBox1.AddItem .Range("A" & i)
    Next
End With
End Sub

Reste à savoir où tu veux supprimer nom lorsque tu fais ton choix dans la liste. Dans la feuille ADHERENT ou la feuille LIVRES ?

Si la feuille Livres, il peut apparaitre plusieurs fois non ?

Crdlt

Merci pour vos réponses. Je testerais tout ça demain.

Pour répondre à da, c'est la feuille adhérents. Ce que j'aimerais faire c'est je sélectionne mon adhérent dans le menu deroulant, je clic sur le bouton supprimer et cela me supprime la ligne pour ne pas avoir de ligne vide.

Bonjour à tous,

J'ai pris celui de Amadéus, mais je remercie Dan.

Pour ton code Amadéus comment puis-je faire que lorsque j'arrive sur ma liste déroulante qu'elle soit vide et que lorsque je supprime elle redevienne vide aussi.

Merci.

Re

Oups déso Amadeus je viens de voir à l'instant que tu avais répondu juste avant que je ne poste...

Meegolo, pour que ta liste déroulante soit vide, il te faut les deux codes. Dans ton fichier posté, prends mon code en supplément de celui d'Amadeus.

A te relire

Crdlt

Edit Amadéus: Dan, bonjour. Aucun problème...

Bonjour,

J'ai rajouter les deux code l'un dessous de l'autre et j'ai un problème d'erreur d’accès refusé.

Une petite aide svp voir le fichier posté par Amadéus un peut plus haut.

Merci

Bonjour

Sur le fichier dont tu parles, la propriété RowSource du Combobox1 de l'Userform4 indiquait la plage de cellules concernée pour alimenter le Combo.

Il se trouve que tu ajoutes le Code de Dan qui remplit automatiquement le Combo.

Solution appliquée sur ce nouveau fichier joint: Effacer la plage indiquée dans RowSource

cordialement

re

...Dans ton fichier posté, prends mon code en supplément de celui d'Amadeus.

Meegolo, je t'avais dit de mettre ce code dans ton fichier et pas dans celui d'Amadeus... Là tu n'auras pas de bug !

Voir les explications d'Amadeus dans son dernier post au sujet de Rowsource qui comme je l'ai déjà dit provoque souvent des soucis de gestion dans les codes et ne fonctionne pas sous excel MAC par exemple.

Crdlt

Bien ça fonctionne. Mais pour terminé comment faire pour que lorsque je supprime la liste déroulante redevienne vide, pour ne pas supprimer par erreur une personne et que la ligne 1 ne face pas partie de la liste.

Merci de votre aide

re

Dans le code d'Amadeus, -->Private Sub cmdsupprimer_Click(), juste avant le END SUB mets ces lignes

With ComboBox1
    .RemoveItem ComboBox1.ListIndex
    .Value = ""
End With

Merci de cloturer le fil en cliquant sur le V vert à coté du bouton editer lors de ta réponse

Crdlt

Merci pour le menu déroulant ca devient vide apprait la suppression. Mais il me reste toujours la ligne une qui est un titre Nom Prénom qui apparait dans la liste.

Comment l'éviter ?

Et après je mettrait résolu.

Merci

Bonjour

D'où l'intérêt de mettre un fichier conforme à l'original

Dans le Code fourni par Dan, remplace

For i = 1 To .Range("A" & .Rows.Count).End(xlUp).Row

par

For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row

Cordialement

Merci pour les infos. Je ferme le post je vous remercie tous les deux (Dan, Amadéus) pour votre aide précieuse.

Rechercher des sujets similaires à "supprimer ligne vba"