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 ligne selon 2 critères


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 80
    Points
    80
    Par défaut Supprimer ligne selon 2 critères
    Bonjour à tous,

    je viens de passer beaucoup de temps sur le forum pour trouver la solution, mais là je craque et je fais appel à vous,
    j'ai suivi attentivement la discussion entre NEC14 et Aalex38, mais je n'ai pas trouvé ma solution
    voici mon souci
    dossier : STOCK
    j'ai un formulaire UsfDetailArticle qui comprend des listview
    chaque listview liste :
    • les sorties de stock de l'article = lvwSorties
    • les entrées en stock de l'article = lvwEntrees

    Lorsque je sélectionne une ligne de la liste, et que je clique sur le bouton SUPPRIMER SORTIE,
    je veux que la ligne disparaisse de la lvwSorties (là c'est bon, ça marche)
    mais aussi que cela SUPPRIME dans la feuille SORTIES
    la ligne en question
    Pour supprimer il faut que :
    la colonne A comprenne la ref article de la textbox (RefArt)
    ET
    la colonne D comprenne le n° de commande de la ligne sélectionnée de la lvwSorties
    ALORS
    on supprime la ligne
    malheureusement la ligne n'est pas supprimée !!!!
    Pourquoi ?
    Qu'ai je mal fait ???
    quelqu'un a t il une idée lumineuse sur mon problème ?
    ===================
    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
    Private Sub B_SUPPSORTIES_click()
    Dim Sortie As String
    Dim Article As String
     
    For i = ListViewSorties.ListItems.Count To 1 Step -1
    If ListViewSorties.ListItems(i).Selected = True Then ListViewSorties.ListItems.Remove i
        Next i
     
    Sortie = ListViewSorties.SelectedItem.ListSubItems(1)
    Article = RefArt
     
    With Sheets("SORTIES").range("A:A")
    Set A = .Find(Article, LookIn:=xlValues, lookat:=xlWhole)
    If Not A Is Nothing Then
    With Sheets("SORTIES").range("D:D")
    Set S = .Find(Sortie, LookIn:=xlValues, lookat:=xlWhole)
    If Not S Is Nothing Then
    Selection.EntireRow.Delete
     
    End If
    End With
    End If
    End With
    End Sub
    ====================
    d'avance merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    sans avoir tout examiné
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    With Sheets("SORTIES").range("A:A")
    Set A = .Find(Article, LookIn:=xlValues, lookat:=xlWhole)
    If Not A Is Nothing Then
    With Sheets("SORTIES").range("D:D")
    S = .Find(Sortie, LookIn:=xlValues, lookat:=xlWhole)
    If Not S Is Nothing Then
    Selection.EntireRow.Delete
    tu cherche une valeur colone A, puis quand tu la trouves, tu en cherche une autre colone D SANS relier les deux recherches.résultat, ton code trouve la valeur article colonne A, puis va chercher la valeur sortie en colonne D,mais pas forcement sur la meme ligne que Article
    dans ton code, tu devrais faire
    (je n'ai pas tester, je t'ecris sa a main levée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set A = .Find(Article, LookIn:=xlValues, lookat:=xlWhole)
    If Not A Is Nothing Then
    if A.offset(0,3)=sortie
    A.entiererow.delete

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut fidecourt et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set S = .Find(Sortie, LookIn:=xlValues, lookat:=xlWhole)
    If Not S Is Nothing Then
    Selection.EntireRow.Delete
    C'est presque bon, mais tu continue à utiliser les sélect : pourquoi
    Tu as fixé S comme étant la bonne cellule. qu'a-t-elle avoir avec la sélection ? Remplace Selection.EntireRow.Delete soit parsoit parmais c'est bien de ne plus avoir les select dans ton code
    EDIT
    j'avais pas lu tout le code, l'erreur me semblait flagrante
    Il faut parcourir toute la colonne A pour trouver toutes les occurences, dans une boucle.
    A+

  4. #4
    Membre régulier
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 80
    Points
    80
    Par défaut
    salut Gorfael et merci pour tes explications

    mais il n'y a rien a faire, la suppression ne se fait pas !

    J'ai apporté les modifs, qu'est ce qui cloche ?

    je joins le fichier exemple pour plus de clarté

    le formulaire en question est usfDetailArticle

    merci pour ton aide

  5. #5
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour le fil le forum code pour supprimer la ligne correpondande a adapter si tu veus supprimer que certaines cellules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub B_SUPPSORTIES_click()
    Sheets("SORTIES").Rows(ListViewSorties.SelectedItem.Index + 1).Delete
    End Sub
    SALUTATIONS

  6. #6
    Membre régulier
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 80
    Points
    80
    Par défaut
    bonsoir à tous

    bon, alors là je ne comprends pas du tout comment faire
    car pour supprimer la ligne il faut réunir les 2 conditions
    dans la col A il y a l'Article
    et
    dans la col D il y a le N° de Sortie
    si sur la ligne, j'ai Article et N°sortie correspondant à la ligne sélectionnée et à la valeur de RefArt, alors je supprime

    j'ai testé ce qui suit, mais qui ne marche pas mieux,
    il doit y avoir une petite faille quelque part, mais là je ne vois plus rien !

    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
    Private Sub B_SUPPSORTIES_click()
     
     
    Dim Sortie As String
    Dim Article As String
     
     
    Sortie = ListViewSorties.SelectedItem.ListSubItems(1)
    Article = RefArt
     
    With Sheets("SORTIES").range("A:A")
     
     
    Dim iRow As Long
    For iRow = Cells(Rows.Count, "A").End(xlUp).Row To 3 Step -1
    If Cells(iRow, "A").Value = Article And Cells(iRow, "D").Value = Sortie Then
    Rows(iRow).Delete
    End If
    Next iRow
     
    End With
    For i = ListViewSorties.ListItems.Count To 1 Step -1
    If ListViewSorties.ListItems(i).Selected = True Then ListViewSorties.ListItems.Remove i
        Next i
     
    End Sub

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 87
    Points : 93
    Points
    93
    Par défaut
    euh, tu n'aurais pas interverti "Article" et "Sortie" dans ta formule de test, par hasard ?

    j'ai testé ça sur ton fichier, ca marche pile poil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With Sheets("SORTIES")
        Dim iRow As Long
        For iRow = .Cells(Rows.Count, "A").End(xlUp).Row To 3 Step -1
        If .Cells(iRow, 1).Value = Sortie And .Cells(iRow, 4).Value = Article Then
            .Rows(iRow).Delete
            Exit For
        End If
        Next iRow
    End With

  8. #8
    Membre régulier
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 80
    Points
    80
    Par défaut
    merci Petit Nicolas !

    non, les paramètres n'étaient pas inversés, mais j'ai compris où cela coince
    en fait, rien à voir avec la macro
    c'est juste que si l'on sélectionne la première ligne de la listview, cela ne fonctionne plus car la ligne ne reste pas sélectionnée
    si on fait très vite, cela marche :
    sélection de la ligne - clic sur supprimer
    je pense qu'il faut que je trouve un autre moyen de la sélectionner, certainement dans les propriétés de la listview

    si quelqu'un a une idée ?

    Merci encore pour votre aide à tous

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    je ne pense pas que
    Citation Envoyé par fidecourt
    si on fait très vite, cela marche :
    soit une réponse informatique a quelque probleme que ce soit

  10. #10
    Membre régulier
    Femme Profil pro
    retraitée
    Inscrit en
    Juin 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraitée

    Informations forums :
    Inscription : Juin 2006
    Messages : 147
    Points : 80
    Points
    80
    Par défaut
    je suis d'accord avec toi Alsimbad !

    j'ai reposté une question sur ce sujet précis : ListView Sélection/Déselection 1er ligne

    car j'ai vraiment un souci avec la sélection dans la listview

    A+.......

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

Discussions similaires

  1. [Toutes versions] Macro pour sélectionner des lignes selon un critère
    Par logoyvelines dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/09/2011, 10h20
  2. supprimer ligne selon condition
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/06/2009, 16h39
  3. [ListView/GridView]Afficher une ligne selon un critère de l'item
    Par anthyme dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 28/06/2008, 11h28
  4. Sélection de lignes selon certains critères
    Par gangsterus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/10/2007, 00h01
  5. Supprimer ligne selon valeur du ComboBox1
    Par avyrex dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/06/2007, 10h27

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