Recherche Ajout et Suppr

Bonjour tout le monde;

Voilà je permets de vous recontacter pour mon fichier de Stock pour effectuer un recherche plus facilement . Cependant, lorsque j'ai supprimer un article - exemple l'article n° 32 . Cela décale toute ma recherche . Auriez-vous une idée Car cela fait une semaine que j'essaye mais rien

Bonjour Candide,

Il va être compliqué de vous répondre

image

A+

Bonsoir,

une question passée inaperçue...

Bon le soucis est simple : votre variable LI qui correspond au numéro de ligne de la feuille Excel, correspond au numéro de la pièce + les 12 lignes se trouvant au dessus du tableau.
Lors d'une suppression de données, ces numéros de pièce ne sont pas "recalculés" on a donc :

pièce 1 en ligne 13 de la feuille (LI = 1+12 = 13)
pièce 2 en ligne 14 de la feuille
pièce 3 en ligne 15 de la feuille [...] tout va bien, on efface la pièce 2 donc la ligne de la feuille correspondante :
Pièce 1 en ligne 13 de la feuille (LI = 1+12 = 13)
pièce 3 en ligne 14 de la feuille (LI = 3+12 = 15 !) voilà le décalage et plus on va vers le bas du tableau et plus il y a eu de suppression et plus le décalage est grand !

Donc pour moi trois solutions :
- Après une suppression ou ajout de pièce => ré numérotation des pièces mais du coup si cela correspond à un numéro associé à une pièce ce n'est pas bon.
- Une fois le numéro de la pièce trouvée, faire un "FIND" sur la colonne B pour trouver la cellule où se trouve ce numéro et ainsi connaitre le numéro de ligne de la feuille : Set Cel = ActiveSheet.Range("B:B").FIND(LI) : LI= Cel.Row
- Simplifier le tout en utilisant un tableau structuré pour votre BDD

@ bientôt

LouReeD

Merci LouReed, pour votre réponse

Petit miracle de cette journée, j'ai a peut prêt tout compris mais je ne sais pas comment structuré ma base de donnée. En fait, ce tableau appartient à mon fichier de Gestion de Stock . Et l'onglet représente le reste des chutes Mais je peut en avoir 300 ou 500 a la fois . Ce qui m'importe c'est d'effectuer une recherche sur la pièce ex : 500 - 400/2 - 4+2 et le nombre de mètres qui reste

Je ne sais pas si j'ai été explicite

Candide

P.S : J'admire votre travail LouReed

24gest-s.zip (316.48 Ko)

Bonsoir,

code modifié avec la recherche "Find" dans la colonne B en fonction du numéro de la pièce sélectionnée dans le UserForm3 :

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'au double-Clic dans la ListBox1
    ' modification LouReeD
    '**********************
    Dim Cel As Range
    ' on récupère la valeur du numéro de la pièce choisie
    valeur = Me.ListBox1.Column(0, Me.ListBox1.ListIndex)
    Set Cel = ActiveSheet.Range("B:B").Find(valeur)
    ' s'il y a bien une valeur trouvée
    If Not Cel Is Nothing Then
        LI = Cel.Row
        'With Me.ListBox1 'prend en compte la ListBox1
        '    LI = CInt(.Column(0, .ListIndex)) + 12 'récupère le numéro de ligne de l'élément double-cliqué
        'End With 'fin de la prise en copmpte de la ListBox1
        If Action = "Supprimer un article" Then 'condition  : si la variable Action est égale à "Supprimer un article"
            'si "Oui" au message, supprime la ligne
            If MsgBox("Êtes-vous sûr(e) de vouloir supprimer définitivement" & Chr(13) _
               & "la ligne sélectionnée ?", vbYesNo, "ATTENTION") = vbYes Then _
               O.Rows(LI).Delete
            Unload Me 'vide et ferme l'Userform3
            Exit Sub 'sort de la procédure
        End If 'fin de la condition
        With UserForm2 'prend en compte l'UserForm2
            .Caption = Action 'définit le titre de l'UserForm2
            .Label2.Caption = O.Cells(LI, 2).Value 'récupère le numéro dans la Label2
            For I = 1 To 5 'boucle sur les 5 textboxes de l'UserForm2
                'récupère dans la TextBox(I) la valeur correspondante ligne LI, colonne I + 2 l'onglet O
                .Controls("TextBox" & I).Value = O.Cells(LI, I + 2).Value
            Next I 'prochaine tetxbox de la boucle
            Unload Me 'vide et ferme l'UserForm3
            With .TextBox1 'prend en compte la TextBox1
                'sélectionne le texte de la TextBox1
                .SelStart = 0 'début de la sélection
                .SelLength = .TextLength 'longueur de la séléction
                .SetFocus 'place le curseur dans la TextBox1
            End With 'fin de la prise en compte de la TextBox1
            .Show 'affiche l'UserForm1
        End With 'fin de la prise en compte de l'UserForm2
    Else
        MsgBox ("Il n'y a pas de numéro correspondant à la pièce recherchée !")
    End If
End Sub

Pour ne pas à avoir à gérer les différents "LI" dans les différents codes, je lui attribue la valeur de Cel.Row, la modification en est simplifiée.

@ bientôt

LouReeD

Merci LouReed,

Cela marche parfaitement Trop forte - Merci cela va m'être très précieux au quotidien

Merci

Bonsoir,

vous me voyez ravi que cela vous convienne ! Merci @ vous pour vos remerciements !

@ bientôt

LouReeD

Rechercher des sujets similaires à "recherche ajout suppr"