Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Lorsque la case passe au statut Terminé alors dans une autre case la date apparait. Puis la ligne se déplace à la fin.

oceanepla

XLDnaute Junior
Bonjour,



Voici mon fichier, j'aimerais que lorsque la colonne F passe en statut Terminé, la colonne I se remplisse en mettant la date du jour (jour où la modification de la case à été faite). Puis que la ligne 1 passe en position 5 (après les lignes complétés).


Je sais que cela est possible grâce aux macros mais je n'arrive pas à bien coder pour obtenir ce que je souhaite. Le résultat que je souhaite serais que les lignes 1-2-4 se déplacent, donc les deux lignes 3 et 5 se retrouveraient en position 1 et 2

Merci d'avance,



Pouvez-vous m'aider ?
 

oceanepla

XLDnaute Junior
pas de soucis, je comprends, merci en tout cas pour ton aide, si ça ne marche pas ce n'est pas grave
 

soan

XLDnaute Barbatruc
Inactif
@Oceane

tu as écrit : « comment faire pour que si le statut repasse à En cours ou en attente la ligne remonte au dessus des lignes terminées ? » ; voici donc la 4ème version qui fait cela en plus. je te laisse faire les tests...​

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim cel As Range, lg1&, lg2&
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 7 Then Exit Sub
    lg1 = .Row: If lg1 < 10 Then Exit Sub
    Set cel = .Offset(, 3): Application.ScreenUpdating = 0
    If .Value <> "Terminé" Then
      Application.EnableEvents = 0: cel.ClearContents: [A10].Resize(, 12).Insert 2, 1
      With Cells(lg1 + 1, 1).Resize(, 12): .Copy [A10]: .Delete 3: End With
      [G10].Select: Application.EnableEvents = -1: Exit Sub
    End If
  End With
  Application.EnableEvents = 0: cel = Date: lg2 = Cells(Rows.count, 7).End(3).Row + 1
  With Cells(lg1, 1).Resize(, 12): .Copy Cells(lg2, 1): .Delete 3: End With
  Cells(lg2 - 1, 7).Select: Application.EnableEvents = -1
End Sub

soan
 

Pièces jointes

  • Plan d'actions Proposition 3 v4.xlsm
    376.6 KB · Affichages: 5

oceanepla

XLDnaute Junior
Super merci bcp je vais regarder cela
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Oceane,

ton fichier en retour.

code VBA adapté à la nouvelle structure de ton fichier :

VB:
Option Explicit: Option Compare Text

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim cel As Range, lg1&, lg2&
  With Target
    If .CountLarge > 1 Then Exit Sub
    If .Column <> 11 Then Exit Sub
    lg1 = .Row: If lg1 < 10 Then Exit Sub
    Set cel = .Offset(, 2): Application.ScreenUpdating = 0
    If .Value <> "Terminé" Then
      Application.EnableEvents = 0: cel.ClearContents: [A10].Resize(, 16).Insert 2, 1
      With Cells(lg1 + 1, 1).Resize(, 16): .Copy [A10]: .Delete 3: End With
      [K10].Select: Application.EnableEvents = -1: Exit Sub
    End If
  End With
  Application.EnableEvents = 0: cel = Date: lg2 = Cells(Rows.Count, 11).End(3).Row + 1
  With Cells(lg1, 1).Resize(, 16): .Copy Cells(lg2, 1): .Delete 3: End With
  Cells(lg2 - 1, 11).Select: Application.EnableEvents = -1
End Sub

soan
 

Pièces jointes

  • Plan d'actions Proposition 3 v1-4 Océ.xlsm
    200.8 KB · Affichages: 2

soan

XLDnaute Barbatruc
Inactif
@Oceane

suite à ton MP, j'ai fait le même job pour la feuille "PA DSC" aussi. la sub Worksheet_Change() est la même ; il fallait juste qu'elle soit placée aussi dans le module de la feuille "PA DSC", et pas seulement dans le module de la feuille "PA Général".​

soan
 

Pièces jointes

  • Plan d'actions Proposition 3 v1-4 Océ.xlsm
    199.8 KB · Affichages: 4

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…