Suppression fournisseur (Modification VBA)

Bonjour à tous,

dans l'exemple que j'ai joint j'ai un code avec le quel je supprime les fournisseurs ajoutés,

dans l'onglet Données n'importe quelle cellule de la ligne 8 contenant le nom du fournisseur qu'on veut supprimé en cliquant par la suite sur l'onglet supprimer fournisseur, le code efface toutes les colonnes de l'onglet Total général qui concernent le fournisseur choisi.

mon problème c'est que pour supprimer un fournisseur je dois remplir le type et le prix unitaire et faire un passage dans l'onglet total général pour actualisation avant de cliquer sur supprimer fournisseur, car si par exemple dans l'exemple ci-joint je choisi la cellule F8 et je clique sur supprimer fournisseur le code bug parce que les informations de la colonne F ne sont pas remplis,

Sub SupprimerUnFournisseur()

    If Selection.Count > 1 Then End
    If Not Intersect(Selection, Range(Cells(8, 5), Cells(8, Cells(8, Columns.Count).End(xlToLeft).Column))) Is Nothing Then
        If Selection.Column = 5 Then
            MsgBox "Vous ne pouvez pas supprimer le premier fournisseur.", 16
            End
        Else
            rep = MsgBox("Vous voulez vraiment supprimer le fournisseur " & Selection.Value & " ?", 20)
            If rep = 7 Then End

            f = Selection
            Set ft = Sheets("Total Général")

            'colonnes de détail du fournisseur
           col = ft.Rows("10:10").Find("*LIVRAISON*", LookAt:=xlWhole).Column
            col2 = ft.Range(ft.Cells(10, 9), ft.Cells(10, col - 1)).Find(f, LookAt:=xlWhole, LookIn:=xlValues).Column
            ft.Range(ft.Columns(col2), ft.Columns(col2 + 6)).Delete Shift:=xlToLeft

            'colonne "LIVRAISON"
           col = ft.Rows("10:10").Find("LIVRAISON " & f, LookAt:=xlWhole, LookIn:=xlValues).Column
            ft.Range(ft.Columns(col), ft.Columns(col)).Delete Shift:=xlToLeft

            'colonnes "Prix unitaires"
           col = ft.Rows("10:10").Find(f, LookAt:=xlWhole, LookIn:=xlValues).Column
            ft.Range(ft.Columns(col), ft.Columns(col + 6)).Delete Shift:=xlToLeft

            'colonne "MONTANT FOURNISSEUR"
           col = ft.Rows("10:10").Find("MONTANT " & f, LookAt:=xlWhole, LookIn:=xlValues).Column
            ft.Range(ft.Columns(col), ft.Columns(col)).Delete Shift:=xlToLeft

            'colonne du fournisseur dans la feuille "Données"
           Range(Columns(Selection.Column), Columns(Selection.Column)).Delete Shift:=xlToLeft

            ActiveWorkbook.Names(f).Delete

        End If
    Else
        MsgBox "Vous devez sélectionner le nom du fournisseur à supprimer.", 16
        End
    End If

End Sub

j'attends vos recommandations

Merci d'avance

21suivi-frs.xlsm (51.77 Ko)

Bonjour

dans votre fichier, si l'on supprime Nicola, le code doit supprimer

  • Les colonnes L à R ?
  • La colonne T ?
  • la colonne AK ?

Cordialement

Bonjour dan,

Oui effectivement et en plus il doit supprimer aussi les colonnes

De AC à AI

Bonjour,

Le code buggue parce que vous cherchez à définir une variable sur des colonnes masquées en utilisant la fonction FIND

On pourrait remplacer la fonction FIND partout dans le code mais une manière simple est d'afficher toutes les colonnes avant la suppression des données relatives au fournisseur

Modifiez le code en ajoutant la ligne ci-dessous juste après cette ligne Set ft = Sheets("Total Général")

ft.Cells.EntireColumn.Hidden = False

Si ok et terminé, merci de cliquer sur la case à cocher verte lors de votre réponse afin de clôturer le fil

Cordialement

Bonjour dan,

Merci beaucoup pour votre réponse, c'est exactement ce que je cherchais

Cordialement

Rechercher des sujets similaires à "suppression fournisseur modification vba"