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 :

Supprimer et modifier des données dans une table sur excel à partir d'une sélection Listview [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut Supprimer et modifier des données dans une table sur excel à partir d'une sélection Listview
    Bonjour à tous,

    Cela fait un bon moment que je cherche une solution à mon problème.
    J'ai créé un formulaire avec des textbox, combobow etc qui alimentent une table dans une feuille excel.
    Sur ce formulaire, j'ai intégré une Listview pour faire des recherches. Je souhaiterais à partir d'une ligne sélectionnée dans la Listview et qui correspond à une ligne identique dans ma table dans excel, supprimer la ligne directement dans la table excel.

    J'ai testé ce code trouvé sur le site "ListView1.ListItems.Remove (ListView1.SelectedItem.Index)"
    Le souci, c'est qu'il ne supprime que la ligne dans la Listview, elle reste présente dans le fichier excel.
    Il supprime aussi les lignes non sélectionnées dans la ListView.

    J'ai aussi testé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim SuppLigne As Long
    SuppLigne = UserForm1.ListView1.SelectedItem.Index + 1
    With UserForm1.ListView1
    .ListItems.Remove .SelectedItem.Index
    Worksheets("Missions").Rows(SuppLigne).Delete Shift:=xlUp
    End With
    Alors lui supprime bien dans la ListView et table sur excel, mais supprime même quand aucune sélection n'est fait dans la Listview.

    Concernant la modification, à vrai dire j'étais tellement à fond sur la suppression que je n'ai pas cherché.

    En espérant que mes explication sont claires, et vous remerciant par avance.

    Guinam

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Il te faut tester si il y a bien une sélection de faite (surligné en bleu) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If ListView1.SelectedItem.Selected Then ListView1.ListItems.Remove (ListView1.SelectedItem.Index)

  3. #3
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut
    Bonjour,


    ça fonctionne pour la sélection, mais la ligne reste présente dans ma table Excel.
    Ci-joint mon projet pour plus de compréhension.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Avril 2017
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 122
    Par défaut
    vous avez un code qui fait la suppression que vous souhaitez (1e message)

    Theze vous a expliqué comment faire le test avant de le lancer.

    Que vous manque t-il ? Vous ne savez pas combiner les deux ?

  5. #5
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut
    Bonjour,

    Pour la suppression j'ai fait quelque chose comme ça :

    Code vba Excel : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim SuppLigne As Long
     
        If txtMNumeroLM.Value = "" Then
        MsgBox ("Merci de sélectionner un enregistrement"), vbInformation, ""
        Exit Sub
        End If
     
        SuppLigne = UserForm1.ListView1.SelectedItem.Index + 1
        With UserForm1.ListView1
        .ListItems.Remove .SelectedItem.Index
        Worksheets("Missions").Rows(SuppLigne).Delete Shift:=xlUp
        End With

    Il faut ensuite vider tous les textbox et autres et ça m'a l'air de fonctionner.

    Je continu de chercher pour la modification d'un enregistrement.

    Merci par avance.

    Guinam

  6. #6
    Membre averti
    Homme Profil pro
    Comptable
    Inscrit en
    Avril 2017
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Comptable
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 10
    Par défaut
    Bonjour à tous,

    Concernant mon problème j'ai bricolé le code suivant :

    Code vba excel : 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
    Private Sub cmdMModifier_Click()
     
        Dim sonat As Long
     
        If txtMNumeroLM.Value = "" Then
        MsgBox ("Merci de sélectionner l'enregistrement à modifier"), vbInformation, ""
        Exit Sub
        End If
     
     
        sonat = ActiveCell.Row
     
        Cells(sonat, 1) = txtMNumeroLM.Text
        Cells(sonat, 2) = txtMDateSignature.Text
        Cells(sonat, 3) = txtMNomSociete.Text
        Cells(sonat, 4) = txtMActivite.Text
     
     
        Call VideMissions
        Call Actualisation_ListView1 ' On appelle la procédure qui actualise la ListView
    End Sub


    Il fonctionne si on a bien positionné sur la ligne à modifier.
    Mon souci, c'est je n'ai pas encore trouvé comment faire, pour que la sélection dans ListView soit synchronisée à celle de mon fichier Excel en arrière plan.

    Est-que vous pourriez me confirmer que le code n'est pas déconnant et si vous avez une idée je suis preneur.

    Merci par avance.
    Guinam

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/05/2015, 14h29
  2. Réponses: 7
    Dernier message: 24/01/2012, 18h55
  3. Réponses: 2
    Dernier message: 31/03/2011, 11h22
  4. modifier des données dans une requête multi table
    Par Bluman dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/02/2008, 10h00
  5. Réponses: 4
    Dernier message: 02/05/2005, 20h25

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