a l'attention de Pierrejean

J

JJ

Guest
Bonsoir PierreJean,
Bonsoir à tous,
je joins la macro que tu as écrite:

Sub test()
fin = Range('F1').End(xlDown).Row
For n = 1 To fin
If Cells(n, 6).Interior.ColorIndex = 3 Then
Rows(n).Copy Destination:=Rows(fin + 1)
Rows(n).Delete
End If
Next n
End Sub

Cette macro copie en bas de tableau puis supprime les lignes dont la colonne 6 est rouge (code 3)

Quand j'ai lancé la macro avec mon fichier, je me suis aperçu qu'elle laissait des lignes avec des cellules rouges éparpillées dans le fichier? (alors que le petit fichier de test fonctionnait)

J'ai compris que l'erreur se produisait quand 2 (ou plus) lignes avec des cellules rouges se 'touchaient', la ligne déplacée et supprimée semble ne pas être testée.

La macro fonctionne parfaitement si les lignes 'rouges' ne se touchent pas (une au dessus ou dessous de l'autre)

Que faudrait il rajouter à la macro pour éviter ces' oublis' ?

merci et bonne soirée
JJ
 

pierrejean

XLDnaute Barbatruc
le msgbox(fin) est à supprimer
il me servait à voir ou le bat blessait

toutes mes excuses
voila le bon fichier [file name=pourJJ_20060216131411.zip size=7800]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/pourJJ_20060216131411.zip[/file]

Message édité par: pierrejean, à: 16/02/2006 13:14
 

Pièces jointes

  • pourJJ_20060216131411.zip
    7.6 KB · Affichages: 12
J

JJ

Guest
Bonjour à PierrJean et Porcinet,
Bonjour au Forum

j'ai posté le message' à l'attention de ...' car le message était ciblé pour PierreJean qui avait écrit la macro, CQFD.
Mais quiconque pouvait intervenir bien sûr...

Pour revenir à nos moutons!! j'ai testé la macro ce matin (sans ligne vierge dans le fichier) et ça ne marche toujours pas... (pourtant j'ai remonté le fichier (fin to 1) et rajouté n=n-1 ), il faut relancer la macro autant de fois qu'il y a de cellules rouges 'collées'.

La macro fonctionne bien si aucune cellule rouge n'est collée au dessus ou dessous d'une autre.
Que dois je faire?
je vais tester le fichier zip joint
merci et bonne AM
JJ
 

porcinet82

XLDnaute Barbatruc
Tu n'a pas du bien comprendre ce que l'on a tta proposé, il faut utiliser la ligne :
For i=fin to 1 step -1
c'est a dire que l'on part de la fin de la page vers le haut, step -1 etant le pas qui permet de remonter.

Si tu utilises cette ligne, tu n'as pas besoin de mettre n=n-1

@+
 
J

JJ

Guest
Bonjour Pierrejean
On oublie les cellules vides (lignes vierges) , dans ma macro j'ai remplacé clear contents par delete, le fichier de données n'a donc aucun 'trou' et va de la ligne 1 a la fin sans aucune ligne vide.

Par contre le problème subsiste pour les cellules rouges 'oubliées 'par la macro, j'ai pourtant modifié comme vous me l'aviez dit.
a+
JJ
 
J

JJ

Guest
rebonjour
je viens de faire un fichier Excel d'exemple compressé que je joins.
Bonne AM
JJ [file name=rouge.zip size=2617]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/rouge.zip[/file]
 

Pièces jointes

  • rouge.zip
    2.6 KB · Affichages: 11
  • rouge.zip
    2.6 KB · Affichages: 8
  • rouge.zip
    2.6 KB · Affichages: 11

porcinet82

XLDnaute Barbatruc
re JJ,

Je veins de tester sur ton fichier et sur d'autre exemple, et la macro qui suit marche a chaque fois :
Code:
Sub test_v5()
Dim i As Integer, fin As Integer

fin = Range('A65536').End(xlUp).Row
For i = fin To 1 Step -1
    If Cells(i, 6).Font.ColorIndex = 3 Then
        Rows(i).Copy Destination:=Rows(fin + 1)
        Rows(i).Delete
    End If
Next i
End Sub

Tu remarqueras que j'ai changer le .Interior.ColorIndex en Font.ColorIndex.

@+
 

pierrejean

XLDnaute Barbatruc
bonsoir JJ porcinet

je me suis un peu arraché les cheveux mais je crois m'en etre sorti
je veux dire pour conserver le classement initial

tu modifieras comme le dit Porcinet le interior en font si necessaire

teste bien [file name=JJrouge.zip size=9633]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JJrouge.zip[/file]
 

Pièces jointes

  • JJrouge.zip
    9.4 KB · Affichages: 10

Hervé

XLDnaute Barbatruc
Bonsoir tout le monde

une autre proposition, a grand coup de tablo :)

salut à vous [file name=JJrouge_20060216232334.zip size=13108]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/JJrouge_20060216232334.zip[/file]
 

Pièces jointes

  • JJrouge_20060216232334.zip
    12.8 KB · Affichages: 5

pierrejean

XLDnaute Barbatruc
bonjour a tous

je viens de savourer ma leçon de tableau par Hervé

Super

Il m'a fallu un petit moment pour comprendre qu'il traitait les lignes pour supprimer et les cellules pour restituer

en tout cas merci à JJ pour ce probleme qui m'a permis de beaucoup apprendre
 
J

JJ

Guest
Et merci à vous 3 pour la réussite de la résolution de ce problème difficile car la macro marche super depuis que j'ai enlevé le n=n-1 (et le classement est conservé!)
BRAVO
JJ
Bon WE


PS : A l'attention de Pascal 76 (Modérateur)
Le roblème est résolu par les intervenants da la première heure. En effet, il facile à celui qui a conçu et créé une macro de la modifier ...
Le sujet peut être renommé :'déplacement de lignes'
Cordialement
JJ
 

Discussions similaires

Statistiques des forums

Discussions
312 344
Messages
2 087 444
Membres
103 546
dernier inscrit
mohamed tano