Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 suppression d'un fournisseur

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

  • Suivi.xlsm
    64.6 KB · Affichages: 61
Dernière édition:

vgendron

XLDnaute Barbatruc
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
 

herve62

XLDnaute Barbatruc
Supporter XLD
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
 

Paf

XLDnaute Barbatruc
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+
 

vgendron

XLDnaute Barbatruc
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
 

an@s

XLDnaute Occasionnel
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
 

vgendron

XLDnaute Barbatruc
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
 

Discussions similaires

Réponses
8
Affichages
326
Réponses
16
Affichages
568
Réponses
9
Affichages
299
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…