XL 2013 Déplacer automatiquement des lignes ailleurs dans la feuille (ou sur autre feuille)

kalem

XLDnaute Junior
Bonsoir la communauté,

Voilà, je reviens vers vous pour une macro qui me pose problème. En fait, je voudrais soumettre des récits à des éditeurs, et je tiens un fichier excel pour m'y retrouver.
Mon tableau contient les noms et adresses des éditeurs, la date à laquelle j'ai envoyé le manuscrit et lorsqu'ils précisent sur leur site un délai, j'ai essayé de mettre une formule qui m'indique à quel moment les relancer, avec une mise en forme conditionnelle (cellule devient rouge quand le délai est dépassé).
La cellule devient jaune lorsque l'éditeur a été démarché.

J'ai trois soucis. En gros, je voudrais :
- que la ligne entière devienne jaune lorsque l'envoi est en cours, rouge lorsque le délai est dépassé.
- que les lignes jaunes basculent automatiquement (ou avec un bouton) en tête du tableau, pour avoir bien en vus les éditeurs démarchés.
- que les lignes rouges basculent automatiquement (ou avec un bouton) dans une autre feuille, nommée "refus". Pour cela, j'ai trouvé un code VBA en fouinant dans le forum mais ça n'a pas marché.

Si jamais quelqu'un a des pistes... Merci d'avance ! Voici mon fichier actuel :
 

Pièces jointes

  • exemple-éditeurs.xlsx
    19.8 KB · Affichages: 46

Paf

XLDnaute Barbatruc
Re : Déplacer automatiquement des lignes ailleurs dans la feuille (ou sur autre feuil

Bonjour

solution possible :

Pour la coloration des lignes:
les règles de MFC à appliquer sur l'ensemble de la plage:
1) =ET($C5<>"";$E5<AUJOURDHUI()) et format Motif : Rouge
2) =ET($C5<>"";$E5>=AUJOURDHUI()) et format Motif : Jaune


Pour le regroupement des lignes jaunes et le transfert des lignes rouges:
une macro qui peut être appelé depuis un bouton ou à l'ouverture du classeur( Private Sub Workbook_Open() ) ou par une macro évènementielle sur la modification des colonnes C ou D ( Private Sub Worksheet_Change(ByVal Target As Range) )


Code:
Sub MaJ()
 Dim DerL As Long, Lif As Long
 With Worksheets("A démarcher")
 DerL = .Range("A" & Rows.Count).End(xlUp).Row
 For i = DerL To 5 Step -1
    If .Cells(i, 3) <> "" And .Cells(i, 5) < Date Then
        Lig = Worksheets("Refus").Range("A" & Rows.Count).End(xlUp).Row + 1
        .Rows(i).Copy Worksheets("Refus").Range("A" & Lig)
        .Rows(i).Delete
    End If
 Next
 .Range("A4:F" & DerL).Sort Key1:=Range("E4"), Order1:=xlAscending, Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
 End With
End Sub

A+
 

kalem

XLDnaute Junior
Re : Déplacer automatiquement des lignes ailleurs dans la feuille (ou sur autre feuil

Bon, j'ai vraiment honte, mais en fait, je me suis un peu emmêlé les pinceaux dans mes explications...

Sur le coloration des lignes : tes formules ont parfaitement marché ! Merci !!

Sur la macro, c'est là que je me suis trompé. Ce n'est pas les lignes rouges qui doivent basculer dans "Refus", mais les lignes où j'aurai inscrit une date dans la colonne F (je veux garder trace de la date du refus, mais ensuite déplacer la ligne sur l'autre feuille). Vraiment désolé. J'ai du coup essayé de changer ton code en conséquence, mais je suis vraiment trop novice en VBA pour le faire. Si tu as une solution...

Bonne soirée à tous.
 

Paf

XLDnaute Barbatruc
Re : Déplacer automatiquement des lignes ailleurs dans la feuille (ou sur autre feuil

re,

il faudrait alors modifier la ligne:
Code:
If .Cells(i, 3) <> "" And .Cells(i, 5) < Date Then
en
Code:
If .Cells(i, 6) <> "" Then

A+
 

kalem

XLDnaute Junior
Re : Déplacer automatiquement des lignes ailleurs dans la feuille (ou sur autre feuil

Bonsoir,

Merci pour cette réponse rapide ! Cependant, affecté à un bouton, le code renvoie une erreur (1004). Dans le débogage, la ligne qui semble poser problème est la suivante :

.Range("A4:F" & DerL).Sort Key1:=Range("E4"), Order1:=xlAscending, Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Autant dire tout de suite que je n'y comprends rien du tout :)
 

Paf

XLDnaute Barbatruc
Re : Déplacer automatiquement des lignes ailleurs dans la feuille (ou sur autre feuil

Re,

C'est ma faute, un point (.) oublié dans l'instruction de tri du tableau !!

.Range("A4:F" & DerL).Sort Key1:=.Range("E4"), Order1:=xlAscending, Header:=xlGuess, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal


un autre tri qui conviendrait peut-être mieux
.Range("A4:F" & DerL).Sort Key1:=.Range("C4"), Order1:=xlAscending, Key2:=.Range( _
"E4"), Order2:=xlAscending, Header:=xlGuess


A+
 

kalem

XLDnaute Junior
Re : Déplacer automatiquement des lignes ailleurs dans la feuille (ou sur autre feuil

Bonjour,
Super ! ça a marché ! Ta deuxième proposition était la bonne. Je suis vraiment épaté par ce qu'on arrive à faire avec quelques lignes de code... Mais quand je vois qu'il suffit d'un point manquant pour faire capoter le tout, je me dis que j'ai du boulot avant le jour où je saurai maitriser le VBA. :rolleyes:
Merci encore.
 

Discussions similaires

Statistiques des forums

Discussions
311 727
Messages
2 081 962
Membres
101 852
dernier inscrit
dthi16088