correction de macro

wmichelange

XLDnaute Occasionnel
Bonjour à tous

je ne comprends pas le problème d'Excel (exl 2000 et Exl 2007)
ci-joint la macro:

Sub Lignes1()
'
' Lignes1 Macro
' Macro enregistrée le 20/10/2007 adaptée par Moi
'
For i = 3 To 20
Range("IR" & i & ":" & "KO" & i).Select
Selection.Copy
Range("IR" & i + 1 & ":" & "KO" & i + 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
' elle ne convertit pas pas les lignes (IR à KO) avant de les classer
' De ce fait Excel considère que ce sont des chiffres en texte et il n'y a pas d'ordre croissant ou décroissant. Exemple :8-20-40-2 etc ce qui n’est guère un classement

Selection.Sort Key1:=Range("IR" & i + 1), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
i = i + 1
Next i
'
End Sub

Elle écrit les résultats en alphanumérique; Pourquoi ?

Merci de me donner des conseils pour convertir les résultats en chiffres (numérique)
Et merci de votre temps

a+
wmichelange
 

Bigfish

XLDnaute Occasionnel
Re : correction de macro

Salut,

2 solutions:

1/ si tu peux accepter de garder tes valeur sous forme de texte tu peux ajouter l'option xlSortTextAsNumbers:

Code:
Sub Lignes1()
'
' Lignes1 Macro
' Macro enregistrée le 20/10/2007 adaptée par Moi
'
For i = 3 To 20
Range("IR" & i & ":" & "KO" & i).Copy
Range("IR" & i + 1 & ":" & "KO" & i + 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Selection.Sort Key1:=Range("IR" & i + 1), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight[COLOR="Blue"], _
        DataOption1:=xlSortTextAsNumbers[/COLOR]
i = i + 1
Next i
'
End Sub

2/ si tu as besoin de nombres tu peux dans ce cas convertir comme suit:


Code:
Sub Lignes1()
'
' Lignes1 Macro
' Macro enregistrée le 20/10/2007 adaptée par Moi
'
[COLOR="Blue"]Dim Macellule As Range[/COLOR]
For i = 3 To 20
Range("IR" & i & ":" & "KO" & i).Copy
Range("IR" & i + 1 & ":" & "KO" & i + 1).Select
[COLOR="Blue"]For Each Macellule In Selection
     Macellule.Value = CDbl(Macellule.Value)
Next[/COLOR]
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Selection.Sort Key1:=Range("IR" & i + 1), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
i = i + 1
Next i
'
End Sub

A+:)
 

wmichelange

XLDnaute Occasionnel
Re : correction de macro

Bonjour le forum

Bonjour Bigfish et Staple1600

Merci de votre réponse

Bigfish le 1er code fonctionne très bien et classe normalement
Par contre il laisse les chiffres en forme de texte (pas de conversion)

le 2me code demande débogage
Sub Lignes1()
'
' Lignes1 Macro
' Macro enregistrée le 20/10/2007 adaptée par Moi
'
Dim Macellule As Range
For i = 3 To 20
Range("IR" & i & ":" & "KO" & i).Copy
Range("IR" & i + 1 & ":" & "KO" & i + 1).Select
For Each Macellule In Selection
Macellule.Value = CDbl(Macellule.Value) débogageNext
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Selection.Sort Key1:=Range("IR" & i + 1), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
i = i + 1
Next i
'
End Sub

Staple1600 Bien le bonjour et merci d'avoir répondu
mais la macro
Sub Lignes1bis()
Dim i As Long
For i = 3 To 20
With Range("IR3:C" & i)
.Value = .Value
End With
Next i
Range("IR3").CurrentRegion.Sort Key1:=Range("IR3"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlLeftToRight
End Sub
Impossible d’executer la macromême avec A3

Meric de votre temps
a+
wmichelange
 

wilfried_42

XLDnaute Barbatruc
Re : correction de macro

bonjour à tous

sur la macro de stapple, à tester, tu n'as pas mis de fichier exemples

Code:
For i = 3 To 20
     for j = Range("C1").column to range("IR1").column
          cells(i,j).value = evaluate(cells(i,j).value & "* 1")
     next j
Next i
 

wmichelange

XLDnaute Occasionnel
Re : correction de macro

Bonjour le forum
Merci de vos réponses
Bigfish cette ligne : Macellule.Value = CDbl(Macellule.Value)
déclenche le débogage ( en jaune)

Wilfried42 je n'arrive pas à placer ta modif Il n'y a rien qui fonctionne.

Staple 1600 Merci de ton temps
Ta macro fonctionne comme tu l'affirmes mais elle efface toutes les formules contenues dans la lignes A3 ( en réel Ligne IR3) ;
on peut en faire un outil pour cpoy-colle, mais pas une macro introduit dans un tableau.
Ci-joint le fichier (Ligne A3 formules à garder)
Merci à tous
a+
wmichelange
 

Pièces jointes

  • Test lignes.xls
    47 KB · Affichages: 48

Discussions similaires

Réponses
5
Affichages
340

Membres actuellement en ligne

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote