Macro copier valeurs sans formules

Résolu/Fermé
Auré - 13 août 2010 à 11:35
 Auré - 13 août 2010 à 16:52
Bonjour,

Voici mon problème. J'ai un tableau de données (A1:E10).
J'ai un autre tableau (F1:J10) avec des fonctions du type SI qui renvoit au 1er tableau.
Je souhaiterais créer une macro qui s'exécute automatiquement pour copier uniquement les valeurs (et non les formules) du tableau (F1:J10), afin d'appliquer un tri croissant sur ces valeurs (noms par ordre alphabétique)

En fouillant sur le forum je suis tombé sur cette ligne pour le tri :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim retour
retour = Run("trier", 1, "G", "D")
End Sub

J'ai également trouvé cette ligne pour la copie :

Range("A1:A30").Copy Range("G1")

Mais je ne sais pas comment articuler ces 2 lignes de codes ni comment faire pour que la macro ne copie que les valeurs.

J'espère que mon exposé n'est pas trop confus...



3 réponses

Beeloobop Messages postés 63 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 4 décembre 2010 11
Modifié par Beeloobop le 13/08/2010 à 12:00
Bonjour,

Essaie avec l'enregistreur de macro, ça va te donner les lignes de code directement. Sinon ça pourrait ressembler à ça (resultat obtenu avec l'enregistreur de macro) :

Sub Macro3()

Range("A8:B43").Select (Ici tu mets la plage que tu as à copier)
Selection.Copy
Sheets("Feuil3").Select (Ici tu mets la feuille où tu veux copier tes valeurs. Si tu veux les copier à partir d'une cellule précise, rajoute : Range("C5").Select )

ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
(cela effectue un collage spécial : uniquement les valeurs)

ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil3").Sort.SortFields.Add Key:=Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil3").Sort
.SetRange Range("A2:B36")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

(ça c'est le code que me donne vba quand je clique sur "trier de AàZ")

End Sub

Voilà!
En ésparant t'avoir aidé au moins un peu!

Beeloobop
2