Remonter une ligne après changement d'etat

  • Initiateur de la discussion Initiateur de la discussion pilou201
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pilou201

XLDnaute Nouveau
Hello tout le monde - j'ouvre un nouveau poste avec un autre soucis , et là je rame encore et votre aide sera toujours aussi précieuse =>

- dans la premiere colonne A j'ai une cellule avec deux états possibles "CLOS" et "OUVERT"
- dans la deuxieme colonne B j'ai une cellule qui indique le numéro de la demande : "n°1", "n°2", ....

Je souhaiterai =>
- quand on crée une nouvelle ligne en bas en passant l'état de la premiere cellule à "OUVERT" => la cellule à coté affiche directement le numéro de demande (apres avoir incrémenté le numéro de demande en ayant rerépé le numéro de demande le plus élevé de la colonne B ...)
- quand on passe à l'état "CLOS", j'aimerai que la ligne en question soit remontée tout en haut du tableau en ligne 2 ...

Un grand merci d'avance pour votre aide
 
Re : Remonter une ligne après changement d'etat

Bonjour Pilou, bonjour le forum,

je te propose la macro événementielle Change à placer par VBE dans le composant Worksheet (Feuil1(Feuil1) par exemple) de l'onglet où tu veux qu'elle s'applique :
Code:
Private test As Boolean 'déclare la variable test
 
Private Sub Worksheet_Change(ByVal Target As Range) 'à chaque édition dans l'onglet
 
'si l'édition a lieu ailleurs que dans la plage A2:A65536, sort de la procédure
If Application.Intersect(Target, Range("A2:A65536")) Is Nothing Then Exit Sub
If test = True Then Exit Sub 'si la variable test est vrai, sort de la procédure
 
If UCase(Target.Value) = "OUVERT" Then 'condition 1 : si l'édition est "OUVERT" (accepte aussi les minuscules)
    'la cellule à droite prend la plus grande valeur de la colonne B + 1
    Target.Offset(0, 1).Value = Application.WorksheetFunction.Max(Range("B2:B65536")) + 1
End If 'fin de la condition 1
 
If UCase(Target.Value) = "CLOS" Then 'condition 2 : si l'édition est "CLOS" (accepte aussi les minuscules)
    test = True 'définit la variable test (=vrai, évite la boucle de cette macro)
    Rows(Target.Row).Cut 'coupe la ligne ou a eu lieu l'édition
    Rows("2:2").Insert Shift:=xlDown 'la colle en ligne 2 en décalant les autres vers le bas
End If 'fin de la condition 2
 
test = False 'redéfinit la variable test (=faux)
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour