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 Subj'attends vos recommandations
Merci d'avance
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 = FalseSi 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