Deplacer automatiquement une ligne sous condition

Bonjour à tous,

J’ai parcourus le forum et j’ai vu que le sujet a déjà été abordé mais malheureusement étant novice quant au langage VBA je n’ai pas réussi à utiliser les solutions pour fixer mon problème.

J’aurais donc besoin de vos lumières

Mon fichier est une liste d’action à réaliser suite à des non conformitées. J’ai 2 onglets, un nommé « Action list » et un second « Completed ». Ce que je voudrais, c’est que lorsqu’une action est complète (c’est-à-dire que lorsque dans l’onglet « action list », les colonnes P « mesures implemented sufficient » et Q « complete » contiennent toutes les deux « Yes » ), la ligne correspondante à cette action soit déplacée automatiquement dans l’onglet « Completed ».

Je vous remercie par avance pour votre aide.

Tiffany

Bonjour TiffanyBzt,

Ce genre de questions est posée très souvent sur ce forum. Or bien souvent, le déplacement d'information pose plus de problèmes qu'il n'en résout :

  • comment faire machine arrière si on s'est trompé ?
  • comment faire des stats sur plusieurs feuilles à la fois ?
  • etc...

En préambule à l'aide que l'on pourrait t'apporter, je serais tenté de te demander si tu connais les filtres, pour le moins...

Cordialement, Daniel

Bonjour Daniel,

Premièrement merci pour votre retour.

Je connais les filtres oui, mais je ne vois pas bien là où vous voulez en venir. Mettre un simple filtre sur les colonnes P et Q me permettant de trier par « yes » ou « no » ?

Car effectivement j’aurais par la suite besoin de faire des stats, et si j’en crois votre expérience, cela ne sera pas possible si mes infos sont divisées en deux onglets ?

Merci.

Cordialement,

Tiffany

Bonjour le fil, bonjour le forum,

Une proposition avec le code ci-dessous :

Sub Macro1()
Dim OA As Worksheet 'déclare la variable OA (Onglet Action List)
Dim OC As Worksheet 'déclare la variable OC (Onglet Completed)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Long 'déclare la variable I (Incrément)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set OA = Sheets("Action list") 'définit l'onglet OA
Set OC = Sheets("Completed") 'définit l'onglet OC
TV = OA.Range("A3").CurrentRegion 'définit le tableau de valeurs TV (de la ligne 3 à la dernière)
For I = UBound(TV, 1) To 2 Step -1 'boucle inversée de la dernière à la seconde du tableau de valeurs TV
    If TV(I, 16) = "YES" And TV(I, 17) = "YES" Then 'condition si les valeurs ligne I, colonnes 16 et 17 de TV valent "YES"
        Set DEST = OC.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
        OA.Rows(I + 2).Copy DEST 'copie la ligne I+2 et la colle dans DEST
        OA.Rows(I + 2).Delete 'supprime la ligne I+2
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub

Merci beaucoup ThauTheme pour votre aide, cela fonctionne parfaitement. C'est exactement ce que j'attendais !

Oui, Tiffany, les filtres et des TCD rendent des services incomparables, mais on s'aperçoit bien souvent que leur utilisation n'est plus possible parce qu'on a cru bon d'archiver (dans le meilleur des cas) ou de supprimer (dans le pire) des données qu'on jugeait obsolètes...

Pour n'avoir qu'un filtre à poser, tu peux écrire une formule à partir de R4 :

=SI(ET(P5="YES";Q5="YES");"Completed";"")

Et effectivement, laisser toutes les lignes dans la feuille "Action List". Enfin, moi c'est ce que je ferai (mais c'est peut-être parce les formules m'éclatent plus que VBA ! @ ThauThème)

Cordialement, Daniel

Merci pour votre retour Daniel.

J’ai essayé d’appliquer la formule que vous m’avez donné mais celle-ci ne fonctionne pas. Il semblerait que P5="YES" ne soit pas correct pour Excel.

Je souhaiterais, dans un premier temps, suivre vos conseils et utiliser des filtres ou un TCD. Car s’il est possible de régler mon problème grâce à ces outils, je préfère tout autant ne pas me lancer avec une macro (surtout que je n’y connais rien en langage VBA…).

Cordialement,

Tiffany

Ah ? Chez moi elle fonctionne bien (sous réserve de la mettre sur la ligne en cours ! Je me suis trompé en sélectionnant la ligne)...

Voir le fichier joint.

Cordialement, Daniel

621tiffanybzt.xlsx (103.16 Ko)

Aussi simple que cela … J’ai encore des progrès à faire !

En attendant je vous remercie pour le temps que vous avez consacré à mon problème. Je vais maintenant pouvoir me mettre au travail grâce à vous (ou à cause ?... Aha ).

Bonne continuation, merci.

Tiffany

Rechercher des sujets similaires à "deplacer automatiquement ligne condition"