IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Effacer lignes de la liste source d'un listbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Medecin
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Medecin
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Par défaut Effacer lignes de la liste source d'un listbox
    Bonjour à tous,
    Tout débutant en VBA, j'ai beau regarder dans tous les forums, je ne trouve pas la réponse à ma quesiton...
    Je vous explique... Je cherche à monter un dossier médical informatisé...
    entre autres, j'ai une feuille "dossier médical" et une feuille "Dossier IDE"
    Je souhaite pourvoir faire des prescriptions sur le dossier médical, via checkbo et menus déroulants.
    Le différentes prescriptions vont se mettre dans une feuille "Taches" qui sera masquée et qui sert de rowsource a une userform avec listbox
    Une fois certains ou tous les items de cette listbox selectionnes, je souhaite qu'ils aillent s'afficher dans la colonne "faits" du dossier IDE... jusque la c'est bon.
    C'est la que mon probleme intervient. Une fois que les prescriptions sont executées, j'aimerais pourvoir les effacer de la rowsource, pour qu'ils ne s'affichent pas de nouveau a l'ouverture suivante du userform "prescription"....
    et la ca coince....
    Je vous laisse le code que j'ai écrit...
    merci d'avance!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize() 
    Dim listetaches As String 
    Dim lig As Long 
     
    lig = Sheets("Taches").Range("A65535").End(xlUp).Row 
    listetaches = "Taches!A2:A" & lig 
    ListBox1.RowSource = listetaches 
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Private Sub CommandButton1_Click() 
     
    Dim i As Integer 
    Dim ligtache As Long 
    Dim ligne As String 
    ligne = ListBox1.ListIndex 
     
    On Error Resume Next 
     
     
    For i = 0 To ListBox1.ListCount - 1 
    If ListBox1.Selected(i) = True Then 
    If Range("J11") = "" Then 
    ligtache = Sheets("Dossier IDE").Range("J65535").End(xlUp).Row + 2 
    Else 
    ligtache = Sheets("Dossier IDE").Range("J65535").End(xlUp).Row + 1 
    End If 
     
     
    With Sheets("Dossier IDE") 
    Sheets("Dossier IDE").Range("J" & ligtache) = ListBox1.List(i) 
    End With 
     
     
     
    End If 
     
    Next i 
    Unload Me 
    End Sub 
     
    Private Sub CommandButton2_Click() 
    Unload Me 
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Il ne faut pas utiliser "RowSource", mais plus "AddItem", ce qui te permet d'utiliser "RemoveItem" pour les suppressions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub UserForm_Initialize()
    Dim listetaches As String
    Dim lig As Long, C As Range
     
    lig = Sheets("Taches").Range("A65535").End(xlUp).Row
    listetaches = "Taches!A2:A" & lig
     
    'ListBox1.RowSource = listetaches
    For Each C In Range(listetaches)
        Me.ListBox1.AddItem C.Value
    Next C
    End Sub
    Pour supprimer ce qui a été choisi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ListBox1.RemoveItem Me.ListBox1.ListIndex

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une autre solution est d'effacer la plage listetaches
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listetaches.ClearContents
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Candidat au Club
    Homme Profil pro
    Medecin
    Inscrit en
    Septembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Medecin
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2012
    Messages : 3
    Par défaut
    Re bonjour a tous!

    Merci messieurs pour vos réponses mais:
    - je ne veux pas supprimer toute la liste source mais uniquement supprimer de cette liste les items qui auront été sélectionnés dans la listbox
    - la solution de removeitem fonctionne sur la listbox mais pas sur la liste source!

    Auriez vous d'autres solutions?
    Merci d'avance!

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListBox1_Click()
        [Taches!A2].Offset(Me.ListBox1.ListIndex).Delete
        End Sub

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Si tu autorises des sélections multiples, tu as intérêt à réaliser les opérations en 3 temps :
    1) Tu mémorises l’emplacement des lignes de la ListBox sélectionnées (tableau intermédiaire),
    2) Tu renseignes la feuille "Dossier IDE" avec les prescriptions sélectionnées,
    3) tu supprimes les lignes correspondant aux prescriptions sélectionnées dans la liste source.

    Cordialement.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 13
    Par défaut cherche un nom sur listbox et supprimer en VBA
    Citation Envoyé par Daniel.C Voir le message
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListBox1_Click()
        [Taches!A2].Offset(Me.ListBox1.ListIndex).Delete
        End Sub
    bonjour,

    comment cherche un nom sur un listbox à l'aide d'un textbox et supprime sa ligne entière dans BD

    merci

Discussions similaires

  1. [WD8]effacer ligne d'une liste
    Par fanant dans le forum WinDev
    Réponses: 5
    Dernier message: 16/04/2007, 10h30
  2. Réponses: 7
    Dernier message: 28/02/2006, 16h46
  3. Réponses: 1
    Dernier message: 10/05/2005, 14h14
  4. Ajouter une ligne dans une liste via un POPUP
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/01/2005, 16h20
  5. Passer a la ligne ds une list box
    Par schnito dans le forum MFC
    Réponses: 11
    Dernier message: 19/02/2004, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo