Déplacer une ligne sous condition

Maia

XLDnaute Nouveau
Bonjour à tous, et merci par avance à ceux qui prendront le temps de me lire.

Je suis complètement novice en matière de VBA, j'ai passé des heures à essayer de mettre en application ce qui a pu être expliqué sur le forum, sans succès.

Dans mon document Excel, je souhaiterai pouvoir intégrer une macro afin que dès qu'une condition est remplie, la ligne entière soit déplacée automatiquement.
En pratique : j'aimerai que dès que le mot "oui" est renseigné dans le tableau "file active" dans la colonne L correspondant aux "sorties", la ligne entière soit déplacée plus bas dans la feuille, dans le tableau "sorties".
Il faudrait également que dans le tableau "file active" la ligne laissée vide après le déplacement des données soit supprimée.

Je vous joint le document pour illustrer tout ça, en espérant avoir été suffisamment claire dans mes explications.

Merci d'avance pour votre aide !
 

Pièces jointes

  • test.xlsm
    17 KB · Affichages: 97
  • test.xlsm
    17 KB · Affichages: 73

DoubleZero

XLDnaute Barbatruc
Re : Déplacer une ligne sous condition

Bonjour à toutes et à tous,

Bienvenue sur XLD, Maia.

Une suggestion en pièce jointe.

Ne serait-il pas préférable :confused: de déplacer les valeurs vers un autre onglet ?

A bientôt :)
 

Pièces jointes

  • 00 - Maia - Oui déplacer.xlsm
    52.1 KB · Affichages: 459

Maia

XLDnaute Nouveau
Re : Déplacer une ligne sous condition

Whaou merci beaucoup DoubleZero ! Que d'efficacité et de rapidité !!

J'avais songé à envoyer toutes les sorties sur une autre feuille mais ce document sera un document unique partagé par tous les employés. Chacun aura son onglet nominatif, d'où la nécessité de n'avoir qu'une feuille par personne.

En tout cas merci encore car seule je n'y serai pas parvenue ! :)
 

Maia

XLDnaute Nouveau
Re : Déplacer une ligne sous condition

Re bonjour à tous,

J'aurais besoin d'apporter quelques modifications au code gentiment proposé par Double Zéro : il serait effectivement plus pratique de déplacer les sorties vers une 2ème feuille.

Le document reste quasi le même, j'ai rajouté quelques colonnes supplémentaires (maintenant la colonne "sortie" est la colonne M). Il s'agit toujours de déplacer la ligne entière lorsque que le mot 'oui" est renseigné dans la colonne M ("sortie"), cette fois vers la feuille "sorties", et toujours en supprimant la ligné laissée vide dans le 1er tableau.

Serait-il possible également que la macro ne comporte pas de ligne de fin définie afin d'avoir la possibilité d'ajouter autant de lignes dans le tableau que nécessaire ?

J'ai mis en lien le nouveau fichier, merci par avance !
 

Pièces jointes

  • test.xlsm
    29.4 KB · Affichages: 165
  • test.xlsm
    29.4 KB · Affichages: 132

Modeste

XLDnaute Barbatruc
Re : Déplacer une ligne sous condition

Bonjour Maia,
Bonnes fêtes à tou(te)s et surtout à mon ânesse préférée (que j'embrasse affectueusement) :)

il serait effectivement plus pratique de déplacer les sorties vers une 2ème feuille
Ce qu'il faut donc retenir, Maia: DoubleZero a toujours raison ;)

Trêve des confiseurs (et de plaisanterie!) ... ne pourrait-on imaginer que le transfert des données s'effectue au moment où le "oui" est indiqué en colonne M? Question subsidiaire et néanmoins préalable: toutes les autres colonnes auront-elles été renseignées avant que la mention "oui" ne soit ajoutée?

Si la réponse aux 2 questions ci-dessus est positive, essaie ce qui suit: colle les lignes suivantes dans la fenêtre de code de la feuille "suivis" (clic droit sur l'onglet > Visualiser le code).
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 13 Or Target.Row < 4 Then Exit Sub
    If Target = "" Then Exit Sub
    If Target = "oui" Then
        derligne = Sheets("sorties").Cells(Rows.Count, 3).End(xlUp).Row
        Cells(Target.Row, 3).Resize(1, 18).Copy Sheets("sorties").Cells(derligne + 1, 3)
        Target.EntireRow.Delete
    End If
End Sub
Pour tester ensuite: double-cliquer, puis valider dans une des cellules où un "oui" figurait déjà en colonne M (ou transformer le "non" d'une autre ligne en "oui" et valider). La procédure s'exécute donc à chaque changement de valeur en colonne M, pour autant que la nouvelle donnée soit le mot "oui".

Si la réponse était négative à l'une (au moins) des 2 questions, il faut trouver un autre mode de déclenchement: à la demande, comme dans la version précédente, au double-clic ou clic droit dans une colonne précise, etc.?
 

CocoENI

XLDnaute Nouveau
Bonjour à vous,

J'ai un petit souci sur Excel (je ne maîtrise pas du tout les macros). Je voudrais déplacer des lignes en fonction de leur antécédent. Je m'explique : à chaque ligne j'affecte un antécédent, et le nom de la tâche de la ligne (pour faire un Gantt par la suite). Je voudrais qu'une macro déplace les lignes en fonction de leur antécédent de manière à ce que l'antécédent soit juste en dessous du nom auquel il se rapporte. Je vous joins un fichier pour plus d'infos. Une tâche (la première) n'a pas d'antécédent et doit être située la plus au dessus du tableau.

Je vous remercie par avance de votre précieuse aide !
 

Pièces jointes

  • Exemple.xlsx
    10.9 KB · Affichages: 47

Discussions similaires

Réponses
5
Affichages
180

Statistiques des forums

Discussions
313 102
Messages
2 095 296
Membres
106 244
dernier inscrit
Zamot