mise en forme d'une ligne entière selon un champ ou transfert vers une autre feuil

Matrix_pr

XLDnaute Nouveau
Bonjour,

Je suis embêté. Il y a tellement des infos sur ce site, mais je ne trouve pas ce que je veux faire et je m'y connais très très peu en VB.

Simple: Je veux que ma ligne entière soit grise pâle si la cellule statut = "terminé" et je veux que la ligne entière redevienne noire si le statut change à autre chose que "terminé".

complexe: Si le statut = terminé, la ligne complète se déplace dans une autre feuille nommé Terminés et s'accumule à la suite des autres. Par contre, si elle devient en cours dans cette feuille, elle revient à sa feuille d'origine (projet). Le tout, sans créer de doublons. Ce serait génial, mais ça l'air tellement compliqué.

P.S Le tout doit s'appliquer à la feuille entière, car je n'ai aucune idée du nombre de ligne qui sera utilisée.

à noter que je fais ce fichier sur un pc, mais qu'il sera utilisé sur un mac alors côté compatibilité, je ne sais pas si cela causera des bugs de compatibilité.

Merci pour votre aide, je suis vraiment coincé!
 

Pièces jointes

  • projet.xlsx
    11.8 KB · Affichages: 79
  • projet.xlsx
    11.8 KB · Affichages: 80
  • projet.xlsx
    11.8 KB · Affichages: 80

Hippolite

XLDnaute Accro
Re : mise en forme d'une ligne entière selon un champ ou transfert vers une autre feu

Bonjour,
A mettre dans Projets (clic droit sur l'onglet / Visualiser le code)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then
        If Intersect(Target, Columns(6)).Value = "Terminé" Then
            DlgnT = Sheets("Terminés").Cells(Rows.Count, 2).End(xlUp).Row
            Target.EntireRow.Cut Destination:=Sheets("Terminés").Cells(DlgnT + 1, 1)
            Target.EntireRow.Delete
        End If
    End If
End Sub
A mettre dans Terminés
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 1 Then
        If Intersect(Target, Columns(6)).Value <> "Terminé" And _
           Intersect(Target, Columns(6)).Value <> "" Then
            DlgnP = Sheets("Projets").Cells(Rows.Count, 2).End(xlUp).Row
            Target.EntireRow.Cut Destination:=Sheets("Projets").Cells(DlgnP + 1, 1)
            Target.EntireRow.Delete
        End If
    End If
End Sub
A+
 

Matrix_pr

XLDnaute Nouveau
Re : mise en forme d'une ligne entière selon un champ ou transfert vers une autre feu

ça marche! Le problème est quedès que j'essais d'entré une nouvelle ligne dans projets, ça me fait (Erreur d'exécution 91, variable d'objet ou variable de bloc With non définie. Je n'ai aucune idée de ce que cela signifie.
lorsque je clique sur débogage, le système fait référence à la ligne suivante (en jaune)
If Intersect(Target, Columns(6)).Value = "Terminé" Then
 

Discussions similaires

Statistiques des forums

Discussions
312 386
Messages
2 087 854
Membres
103 669
dernier inscrit
Anne Sicard