Bug dans une macro

bonjour,

j'utilise cette macro pour classer des équipes à partir d'un nombre de points => le trie fonctionne mais il m'affiche ce classement 10 lignes en dessous de ce que je lui demande :

Sub Classementeq()
'
' Classement Macro
' Macro enregistrée le 7/06/2011 PAR DUFOSSEY
'

'
    Range("H3:I29").Select
    Selection.Copy
    Range("K3").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("L3"), Order1:=xlDescending, Header:=xlNo, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

End Sub

au lieu d'avoir ma première cellule en K3, il me la déplace en K9 ???

avez vous une idée de mon erreur ?

merci d'avance de vos conseils.

Salut le forum

Ta plage de cellules H3:I29 a-t-elle des formules du style

=SI(A2="";"";"3")

Ton problème vient surement de cela.

Mytå

oui tout à fait :

=SI(Réglages!B4<>"";Réglages!B4;"")

en H3

et

=SI(H3<>"";RECHERCHEV(H3;'calcul par équipe'!B2:H45;2;);"")

en I3

ces deux formules sont étirées sur la plage concernée.

comment corriger ce problème ?

EDIT 1 : je ne suis pas du tout expert en macro.

j'ai essayé de copier la valeur de cellule et de refaire le classement à partir de la plage copiée mais toujours le même problème !

dans J3 (=H3) et K3 (=I3) et j'execute la macro sur la plage H3:K29 pour supprimer les formules SI à la lecture de la la macro et je retourne le classement dans L3:M3 mais ma première cellule est toujours à la ligne 8 au lieu de la 3 ?

-- 13 Juin 2011, 21:12 --

UP ?

merci de votre aide car je ne comprend pas le problème.

en quoi une macro effectuée sur des cellules à condition se décale vers le bas ?

merci d'avance

Re le forum

A cause des cellules vides ("") qui pour Excel ne sont plus considérées comme des cellules vides.

Le tri les place donc en début de ta liste.

Le code suivant devrait résoudre ton problème

Sub Classement_Equipe()
  Dim Cellule As Range

Range("H3:I29").Copy
Range("K3").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
  For Each Cellule In Range("K3:L29")
    If Cellule Is Nothing Or Cellule.Value = "" Then
        Cellule.ClearContents
    End If
  Next Cellule
Range("K3:L29").Sort Key1:=Range("L3"), Order1:=xlDescending

End Sub

Mytå

Bonsoir,

Peut être que tu as une macro dans la feuille où se trouve tes données. Pour le vérifier, clique droite sur l'onglet de ta feuille puis choisis "visualiser le code".

Sinon ton code adapté

Sub Classementeq()
Range("H3:I29").Copy
Range("K3").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("K3:L29").Sort Key1:=Range("L3"), Order1:=xlDescending, Header:=xlNo, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Amicalement

edit dan : Ben vois ce que Myta vient de dire, je n'avais pas pensé à cela mais il y a fort à parier que c'est cela ton souci.

Merci Dan et Myta pour votre temps et votre aide.

la macro de Myta fonctionne parfaitement. Merci beaucoup.

bonne soirée.

Rechercher des sujets similaires à "bug macro"