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

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 !

P

pilou201

Guest
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
16
Affichages
509
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…