[déplacé VB.NET -> VBA] Erreur 1004 macro excel suite à un tri dans le code d'un
Ellandan
Messages postés9Date d'inscriptionlundi 1 mars 2010StatutMembreDernière intervention 3 mars 2010
-
1 mars 2010 à 19:53
Ellandan
Messages postés9Date d'inscriptionlundi 1 mars 2010StatutMembreDernière intervention 3 mars 2010
-
2 mars 2010 à 14:21
Bonjour,
J'ai un bouton de commande sur un feuille d'un classeur X, et lorsque je clique dessus je souhaite (entre autrre) qu'il me trie des données sur une feuille d'un classeur Y. J'ai obtenue le code en faisant enregistrer une macro, mais lorsque je copie le code et que je le colle dans le code du bouton de commande la fonction tri ne marche plus!! Je sais que ça marcherais avec une bouton de formulaire mais je ne veux pas utiliser de bouton de formulaire pour la raison suivante: mon classeur X contient une 50aine de feuille, et dans chaque feuille j'aurais ce même bouton de commande avec seul changement le nom de la feuille... Et si je crée un bouton de formulaire je devrais avoir autant de macro que de feuille et je risque donc d'etre un peu perdue! Donc voila mon bout de code
Pour information, lorsque j'en arrive à ce niveau de la macro, je suis bien dans le classeur qui m'intéresse et dans la feuille qui m'intéresse. Il me sélectionne bien mes colonnes, mais ensuite me sort une erreur 1004 avec la ligne "selection.sort etc" surlignée en jaune. Le code marche lorsqu'il est pris en dehors de mon bouton de commande...
Je crois que je travaille sous excel 2002 (c'est au boulot, je sais pas trop comment vérifier)
Merci d'avance!!!
A voir également:
[déplacé VB.NET -> VBA] Erreur 1004 macro excel suite à un tri dans le code d'un
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 1 mars 2010 à 21:37
Bonjour,
le code montré ne pouvant normalement que fonctionner, il te faut rechercher l'erreur ailleurs que dans la fonction de tri à proprement parler.
Probablement dxans ta sélection elle-même !
1) Je te suggère donc ceci :
ajouter un :
Lance et dis-nous ce qui s'affiche ...
2) confirme-nous que la feuille en cause n'est pas protégée.
Car bien évidemment : si elle est protégée ===>> Erreur 1004 puisque étant protégée, pas de tri possible ____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Ellandan
Messages postés9Date d'inscriptionlundi 1 mars 2010StatutMembreDernière intervention 3 mars 2010 2 mars 2010 à 10:59
J'obtiens le message suivant: $A:$C (je vois pas trop ce que ça peut vouloir dire) puis mon erreur 1004... Comment je peux vérifier que ma feuille n'est pas protégée?
Ellandan
Messages postés9Date d'inscriptionlundi 1 mars 2010StatutMembreDernière intervention 3 mars 2010 2 mars 2010 à 11:31
Je viens de vérifier, ma feuille n'est pas protégée...
Pour information voici ma macro complète, si ça peut aider.
Alors voila la macro toute seule qui marche bien:
Sub MAJtop10ref()
'
' MAJtop10ref Macro
' Macro enregistrée le 26/02/2010 par cdescham
'
'
Windows("Données.xls").Activate
Sheets("Données").Select
Columns("B:B").Select
Range("B:B,K:K,AS:AS").Select
Range("AS1").Activate
Selection.Copy
Sheets("Données filtrées").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Données").Select
Application.CutCopyMode = False
Range("B:B,K:K,AT:AT").Select
Selection.Copy
Sheets("Données filtrées").Select
Range("D1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("H2").Select
ActiveCell.FormulaR1C1 = "=[indicateur.xls]Honda!R4C2"
Columns("A:C").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("C2") _
, Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers, _
DataOption2:=xlSortNormal
Columns("D:F").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Key2:=Range("F2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers, _
DataOption2:=xlSortNormal
Windows("indicateur.xls").Activate
Windows("Données.xls").Activate
Range("A1").Select
Range("A1:F46864").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Range("I1:I2"), Unique:=False
Range("B4984:C4993").Select
Selection.Copy
Windows("indicateur.xls").Activate
Range("C23").Select
ActiveSheet.Paste
Windows("Données.xls").Activate
Range("E4984:F4993").Select
Application.CutCopyMode = False
Selection.Copy
Windows("indicateur.xls").Activate
Range("E23").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=9
Range("C23:D32").Select
Application.CutCopyMode = False
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Range("E23:F32").Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThick
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Windows("Données.xls").Activate
Sheets("Données filtrées").Select
ActiveSheet.ShowAllData
Et la macro bidouillée pour mon bouton de commande, qui bug au niveau du tri (je copie que le début)
Private Sub CommandButton2_Click()
Windows("Données.xls").Activate
Sheets("Données").Select
Sheets("Données").Range("B:B,K:K,AS:AS").Select
Selection.Copy
Sheets("Données filtrées").Select
Sheets("Données filtrées").Range("A1").Select
ActiveSheet.Paste
Sheets("Données").Select
Application.CutCopyMode = False
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 2 mars 2010 à 11:52
1) Comment as-tu vérifié cette absence de protection ? Par quelle méthode exactement ? Et sur quelle feuille ?
voici ce que tu dois écrire pour le vérifier :
If Worksheets("Données filtrées").ProtectContents = True Then
MsgBox "protection présente"
Else
MsgBox " aucune protection"
End If
Il te faut par ailleurs vérifier que le tri est permis sur les plages non verrouillées !
Ainsi :
If Worksheets("Données filtrées").Protection.Allowsorting = True Then
MsgBox "tri permis"
Else
MsgBox "tri non permis"
End If
Essaye paer ailleurs de te débarrasser de cette mauvaise habitude de tout faire par des successions de Select, Copy, Paste ... ===>> pointe directement (et travaille avec) sur tes feuilles, cellules, plages !
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Vous n’avez pas trouvé la réponse que vous recherchez ?
Ellandan
Messages postés9Date d'inscriptionlundi 1 mars 2010StatutMembreDernière intervention 3 mars 2010 2 mars 2010 à 12:08
Je viens d'inclure tes deux bouts de code, alors ma feuille n'est pas protégée et le tri est permis (d'ailleurs je m'en doutais, parce que la macro initiale fonctionne, c'est lorsque je clique sur mon bouton de commande que ça bug au niveau du tri)
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 2 mars 2010 à 13:29
Comme chez moi çà ne bogue pas, que ce soit au niveau d'une macro ou à celui d'un bouton sur une feuille ou même depuis un bouton sur un Userform, je ne sais quoi te dire !
Quand je dis que ça ne bogue pas : je ne parle bien évidemment que de la ligne incriminée, en faisant totale abstraction du reste (puisque je n'ai pas le "reste"...).
Je n'ai donc aucune autre conclusion !
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est