Tri lignes

Résolu/Fermé
Momosenpai Messages postés 24 Date d'inscription lundi 17 mars 2014 Statut Membre Dernière intervention 24 juillet 2014 - Modifié par pijaku le 24/07/2014 à 13:22
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 - 24 juil. 2014 à 13:41
Bonjour,

Je suis débutant en VBA excel et j'ai essayé de créer une macro qui me permet de :

A- Si la ligne N est orange alors on prends la 13ème et la 14ème cellule de la ligne N en partant de la gauche et les copie colle sur la 13ème et 14ème cellule de la ligne N+1

B- Si la ligne N est orange alors on prends la 8ème, 9ème , 10ème, 11ème, 12ème cellule de la ligne N en partant de la gauche et on la copie colle sur la 20ème, 21ème, 22ème, 23ème et 24ème cellule en partant de la gauche de la ligne N+1

Voici ma tentative:
Sub test()

Sheets("Feuil2").Activate
Dligne = Range("C" & Rows.Count).End(xlUp).Row

For i = 1 To Dligne

If Rows(i).Interior.Color = vborange Then

Range(Cells(i, 13), Cells(i, 14)).Copy
Range(Cells((i + 1), 13), Cells((i + 1), 14)).PasteSpecial

Range(Cells(i, 8), Cells(i, 12)).Copy
Range(Cells((i + 1), 20), Cells((i + 1), 24)).PasteSpecial


End If
Next i

End Sub


le résultat obtenu avec ce code est qu'il copie colle les cellules (13 et 14) sur toutes les lignes en dessous alors que je n'ai besoin que de du N+1 de chaque ligne orangée.

Pourriez vous m'éclairer un petit peu plus ?
merci d'avance

Voici ci joint le fichier (en feuil 1 l'explication):
https://www.cjoint.com/?0GylkjkyQb7

1 réponse

skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
24 juil. 2014 à 12:40
Pas vraiment la solution à votre problème mais juste un détails qui change beaucoup de choses.

Sub test()

Sheets("Feuil2").Activate
Dim Dligne as Integer
Dligne = Range("C" & Rows.Count).End(xlUp).Row

For i = 1 To Dligne

If Rows(i).Interior.Color = vborange Then 

Range(Cells((i + 1), 13), Cells((i + 1), 14)) = Range(Cells(i, 13), Cells(i, 14))
Range(Cells((i + 1), 20), Cells((i + 1), 24)) = Range(Cells(i, 8), Cells(i, 12))
 
End If
Next i

End Sub


Mais essayer voir si ça change votre problème
1
Momosenpai Messages postés 24 Date d'inscription lundi 17 mars 2014 Statut Membre Dernière intervention 24 juillet 2014
24 juil. 2014 à 13:38
Merci c'est déjà beaucoup mieux :)
0
skk201 Messages postés 938 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 16 octobre 2016 54
24 juil. 2014 à 13:41
De rien.

Si vous avez besoin de conseil pour votre apprentissage en VBA n'hésitez pas à venir nous poser des questions :)
0