Suppression ou modif de tableau avec VBA sans Userform

Bonjour tout le monde.

Je n'arrive pas a résoudre un problème d'ajout et de modification d'un tableau base de données de produits transformé en tableau (onglet BDDPrix).

A l'époque je ne suis pas passé par un userform pour ajouter des données mais par une simple feuille qui ajoute les données via un bouton.

Je comptais pratiquer de la même façon pour la modification et la suppression mais rien ne se passe comme je le veux.

L'onglet servant pour la modif et la suppr est l'onglet ModifierArticles du classeur.

L'onglet ou modifier/supprimer les données est l'onglet BDDPrix.

Lorsque l'on clique sur la croix rouge l'article sélectionné a l'aide d'une combobox devrait être supprimé.

Lorsque l'on clique sur le bouton en bas a droite 'Modifier l'article' la modification de l'article sélectionné devrait être faite.

J'ai trouvé sur le forum un code qui ne marche pas chez moi, mais il y avait pas mal de choses a modifier et je m'y suis probablement pas bien exécuté !!

Je vous mets au-dessous les codes que j'ai fait.

Pour le code suppression, je l'ai tellement bidouillé que ça ne ressemble à rien lol

Si vous pouviez m'aider a rendre cela plus propre et faire que cela fonctionne, je vous en serait très reconnaissant

D'avance merci

LE code (ne vous moquez pas :) )

Sub supprimerArticle()

    Sheets("ModifierArticles").Unprotect
    Sheets("BDDPrix").Unprotect

    If Range("b5") = "" Then
        MsgBox ("Veuillez sélectionner un numéro de prix!")
        Range("b5").Select
        Else

        If MsgBox("Voulez-vous vraiment supprimer l'article # " & Range("b5") & "?", vbYesNo) = vbYes Then
            'On Error Resume Next

            Else
        End If
     End If

    'Sheets("ModifierArticles").Protect
End Sub

'**************************
Sub ModifierUnArticle()

Sheets("ModifierArticles").Unprotect

    Dim no_ligne As Integer
    Sheets("BDDPrix").Select
    Sheets("BDDPrix").Unprotect
    no_ligne = ComboBox1.ListIndex + 2
    If ComboBox1.Value = "" Then
    MsgBox ("Veuillez sélectionner un numéro de prix!")
        Else
        Cells(no_ligne, 1) = Range("p11")
        Cells(no_ligne, 2) = Range("q11")
        Cells(no_ligne, 3) = Range("r11")
        Cells(no_ligne, 4) = Range("s11")
        Cells(no_ligne, 5) = Range("t11")
        Cells(no_ligne, 6) = Range("u11")
        Cells(no_ligne, 7) = Range("ww11")
        Cells(no_ligne, 8) = Range("x11")
        Cells(no_ligne, 9) = Range("y11")
        Cells(no_ligne, 10) = Range("z11")
        Cells(no_ligne, 11) = Range("aa11")
        Cells(no_ligne, 12) = Range("ab11")
        Cells(no_ligne, 13) = Range("ac11")
        Cells(no_ligne, 14) = Range("ad11")

        MsgBox ("L'article a bien été modifié.")

        Sheets("BDDPrix").Protect

    End If

    'Sheets("ModifierArticles").Protect

End Sub

Bonjour,

A tester :

Sub SupprimerArticle()

Dim I As Integer
Dim AireArticles As Range

    On Error GoTo Fin

    Sheets("BDDPrix").Unprotect

    Set AireArticles = Range("BDDPrix[N_art]")

    With Sheets("ModifierArticles")
        .Unprotect

        If .Range("b5") = "" Then
            MsgBox "Veuillez sélectionner un numéro de prix!", vbCritical
            .Range("b5").Activate
        Else

            If MsgBox("Voulez-vous vraiment supprimer l'article # " & Range("b5") & "?", vbYesNo) = vbYes Then

                For I = 1 To AireArticles.Count
                    If AireArticles(I) = .Range("B5") Then
                       AireArticles(I).EntireRow.Delete
                    End If
                Next I

                Else

            End If

        End If
    End With

    GoTo Fin

Fin:

    Set AireArticles = Nothing
    Sheets("BDDPrix").Protect: Sheets("ModifierArticles").Protect

End Sub
Sub ModifierUnArticle()

Dim Continuer As Boolean
Dim Combo As ComboBox
Dim I As Integer
Dim AireArticles As Range, CelluleArticle As Range
Dim ShMod As Worksheet

    On Error GoTo Fin

    Sheets("BDDPrix").Unprotect
    Set AireArticles = Range("BDDPrix[N_art]")

    Set ShMod = Sheets("ModifierArticles")
    With ShMod
         .Unprotect
          Set Combo = .OLEObjects("ComboBox1").Object
         If Combo.Value = "" Then
            MsgBox "Veuillez sélectionner un numéro d'article !", vbCritical
            GoTo Fin
         End If
    End With

    Continuer = False
    For I = 1 To AireArticles.Count
        If AireArticles(I) = ShMod.Range("B5") Then
           Set CelluleArticle = AireArticles(I)
           Continuer = True
           Exit For
         End If
    Next I

    If Continuer = False Then
       MsgBox "Article non trouvé !", vbCritical
       GoTo Fin
    End If

    With CelluleArticle
        'Cells(no_ligne, 1) = Range("p11") ' La modification du numéro d'article n'a pas de sens
        .Offset(0, 1) = ShMod.Range("q11")
        .Offset(0, 2) = ShMod.Range("r11")
        .Offset(0, 3) = ShMod.Range("s11")
        .Offset(0, 4) = ShMod.Range("t11")
        .Offset(0, 5) = ShMod.Range("u11")
        .Offset(0, 6) = ShMod.Range("ww11")
        .Offset(0, 7) = ShMod.Range("x11")
        .Offset(0, 8) = ShMod.Range("y11")
        .Offset(0, 9) = ShMod.Range("z11")
        .Offset(0, 10) = ShMod.Range("aa11")
        .Offset(0, 11) = ShMod.Range("ab11")
        .Offset(0, 12) = ShMod.Range("ac11")
       .Offset(0, 13) = ShMod.Range("ad11")
    End With

    MsgBox "L'article a bien été modifié !", vbInformation

    GoTo Fin

Fin:

    Set Combo = Nothing
    Set AireArticles = Nothing: Set CelluleArticle = Nothing
    Set ShMod = Nothing
    Sheets("BDDPrix").Protect: Sheets("ModifierArticles").Protect

End Sub

Merci Eric, je vais tester ca :)
Comme je vis au Canada, c'est le début de la nuit pour nous, je testerais ca demain apres une bonne nuit.

Mais un gros merci pour ta rapidité.

MErci a Eric pour la resolution a mon probleme :)

Tout marche bien.

Je modifie les propriétés de ma combobox pour qu'elle se mette a jour lorsqu'il y a suppression d'article et c'est tout bon :)

Un gros merci et bonne journée a tous

Rechercher des sujets similaires à "suppression modif tableau vba userform"