XL 2010 suppression d'un fournisseur

  • Initiateur de la discussion Initiateur de la discussion an@s
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

an@s

XLDnaute Occasionnel
bonjour @ tous,
dans mon suivi ci-joint, sur l'onglet données en sélectionnant par exemple lafarge (cellule C8) et je clique sur le bouton supprimer fournisseur me revoit une erreur
est ce que quelqu'un peut m'aider pour savoir ou est le problème dans mon code

Cordialement
 

Pièces jointes

Dernière édition:
Bonjour
apparemment la macro bug sur cette ligne
Code:
ActiveWorkbook.Names(f).Delete

à priori, après avoir sélectionné Lafarge, la macro supprime bien la colonne F qui contenait lafarge, mais à la dite ligne de code, , elle essaie de supprimer un onglet qui n'existe pas.. donc. bug
tu peux peut etre ajouter avant
Code:
on error resume next
 
Bonsoir
Pour moi la méthode de départ utilisée n'est pas bonne > le ft avec sheets
mieux vaut ne pas faire le SET mais , puisque la feuille est CONNUE !!
faire un WITH THIS WORKSHEET
et mettre les instructions avec un "." comme .cells , .row etc , sinon moi roi FENEANT
je fais un select de la plage puis un CLear.contents
Excuse , je n'ai pas le temps cette semaine sinon je fais
 
Bonjour à tous,

Excel 2003 plante à l'ouverture de classeur (convertisseur). S'il y a moyen d'avoir un fichier compatible ?

vgendron signale un bug sur cette ligne de code :
ActiveWorkbook.Names(f).Delete

Avec cette ligne, on voudrait supprimer la plage nommée du nom du contenu de la variable f.
Cette variable contient-y-elle le nom d'une plage nommée ? Cette plage existe-t-elle ?

A+
 
Hello

voir code modifié.. avec un With. puisque comme le dit hervé, la feuille est définie
VB:
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")
           
            With ft
                '6 colonnes de détail du fournisseur
                col = .Rows("10:10").Find(f, LookAt:=xlWhole).Column
                col2 = col + 6
                .Range(Columns(col), Columns(col2)).Delete Shift:=xlToLeft
           
                '1 colonne "LIVRAISON"
                col = .Rows("10:10").Find("LIVRAISON " & f, LookAt:=xlWhole, LookIn:=xlValues).Column
                .Columns(col).Delete Shift:=xlToLeft
           
                'colonnes "Prix unitaires"
                col = .Rows("10:10").Find(f, LookAt:=xlWhole, LookIn:=xlValues).Column
                .Range(Columns(col), Columns(col + 6)).Delete Shift:=xlToLeft
           
                'colonne "MONTANT FOURNISSEUR"
                col = .Rows("10:10").Find("MONTANT " & f, LookAt:=xlWhole, LookIn:=xlValues).Column
                .Columns(col).Delete Shift:=xlToLeft
            End With
           
                'colonne du fournisseur dans la feuille "Données"
                Columns(Selection.Column).Delete Shift:=xlToLeft
'                On Error Resume Next
'                ActiveWorkbook.Names(f).Delete 'ici tu veux supprimer un nom (gestionnaire de nom) qui n'existe pas
' peut etre que dans ton fichier origine, le nom existait??
        End If
    Else
        MsgBox "Vous devez sélectionner le nom du fournisseur à supprimer.", 16
        End
    End If
   
End Sub
 
Bonsoir Vgendron, le forum
votre code bug sur la ligne : .Range(Columns(col), Columns(col2)).Delete Shift:=xlToLeft

VB:
'6 colonnes de détail du fournisseur
col = .Rows("10:10").Find(f, LookAt:=xlWhole).Column
col2 = col + 6
.Range(Columns(col), Columns(col2)).Delete Shift:=xlToLeft
 
Bonjour
Effectivement, ca ne marche pas.. ou plus.. je ne sais plus trop ce que j'ai fait sur le fichier pour arriver à ce que ca marche.. j'ai du modifier des choses sans m'en rendre compte..
donc. avec le fichier origine et ce code

VB:
Sub SupprimerUnFournisseur()
Application.ScreenUpdating = False
Dim f, dercol&, col&, col2&, col3&, col4&, col5&, ft

    If Selection.Count > 1 Then Exit Sub
    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
            Exit Sub
        Else
            rep = MsgBox("Vous voulez vraiment supprimer le fournisseur " & Selection.Value & " ?", 20)
            If rep = 7 Then Exit Sub
          
            f = Selection
            Set ft = Sheets("Total Général")
          
            With ft
                .Activate
                '6 colonnes de détail du fournisseur
                 col = .Rows("10:10").Find(f, LookAt:=xlWhole, LookIn:=xlValues).Column
                col2 = col + 6
                .Range(Columns(col), Columns(col2)).Delete Shift:=xlToLeft
          
                '1 colonne "LIVRAISON"
                col = .Rows("10:10").Find("LIVRAISON " & f, LookAt:=xlWhole, LookIn:=xlValues).Column
                .Columns(col).Delete Shift:=xlToLeft
          
                'colonnes "Prix unitaires"
               col = .Rows("10:10").Find(f, LookAt:=xlWhole, LookIn:=xlValues).Column
                .Range(Columns(col), Columns(col + 6)).Delete Shift:=xlToLeft
          
                'colonne "MONTANT FOURNISSEUR"
               col = .Rows("10:10").Find("MONTANT " & f, LookAt:=xlWhole, LookIn:=xlValues).Column
                .Columns(col).Delete Shift:=xlToLeft
            End With
                Sheets("Données").Activate
          
                'colonne du fournisseur dans la feuille "Données"
               Columns(Selection.Column).Delete Shift:=xlToLeft
'                On Error Resume Next
'                ActiveWorkbook.Names(f).Delete 'ici tu veux supprimer un nom (gestionnaire de nom) qui n'existe pas
' peut etre que dans ton fichier origine, le nom existait??
       End If
    Else
        MsgBox "Vous devez sélectionner le nom du fournisseur à supprimer.", 16
        End
    End If
Application.ScreenUpdating = True
  
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour