Microsoft 365 mettre une ligne d'un tableau dans une autre feuille a partir d'une condition (liste déroulante)

CF31

XLDnaute Nouveau
Bonjour,

Je suis en BTS en alternance, et je souhaiterai approfondir un tableau de suivi de devis sur Excel, de manière à le rendre automatique au maximum.

J'ai crée un tableau de suivi qui comporte une colonne contenant une liste déroulante avec les propositions suivantes : accepté, en cours, refusé
Je souhaiterai mettre les lignes des devis acceptés dans une autre feuille (feuille2) du classeur et donc créer un nouveau tableau de devis acceptés de manière automatique.
Ainsi, lorsque le devis "en cours" deviendra "accepté" (changement de proposition dans la liste déroulante) il sera automatiquement rentré dans le tableau de la feuille 2 "devis acceptés".

Savez vous comment m'aider ?

En vous remerciant pas avance ;)
 
Solution
Bonjour CF31, et bienvenu sur XLD,
Sans fichier test pour guider, une ébauche en PJ.
Elle utilise une macro événementielle Worksheet_Change qui s'active lorsque Accepté est entré en colonne B.
cette macro doit être impérativement dans la feuille considérée, avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [B:B]) Is Nothing Then             ' Colonne de détection
        If Target <> "Accepté" Then Exit Sub                    ' Non accepté donc on sort
        Dim DL%, Ligne%, N%
        Application.ScreenUpdating = False                      ' Figeage écran
        DL = 1 + Sheets("Accepté").[B65500].End(xlUp).Row       ' Première ligne vide de Accepté
        Ligne =...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour CF31, et bienvenu sur XLD,
Sans fichier test pour guider, une ébauche en PJ.
Elle utilise une macro événementielle Worksheet_Change qui s'active lorsque Accepté est entré en colonne B.
cette macro doit être impérativement dans la feuille considérée, avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [B:B]) Is Nothing Then             ' Colonne de détection
        If Target <> "Accepté" Then Exit Sub                    ' Non accepté donc on sort
        Dim DL%, Ligne%, N%
        Application.ScreenUpdating = False                      ' Figeage écran
        DL = 1 + Sheets("Accepté").[B65500].End(xlUp).Row       ' Première ligne vide de Accepté
        Ligne = Target.Row                                      ' Ligne à copier
        For N = 1 To 3                                          ' Car 3 colonnes à copier
            Sheets("Accepté").Cells(DL, N) = Cells(Ligne, N)    ' Copie de la ligne dans Accepté
        Next N
        Application.ScreenUpdating = True                       ' Libération écran
    End If
End Sub
 

Pièces jointes

  • CF31.xlsm
    15 KB · Affichages: 7

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Sans macro, je ne vois pas comment faire un transfert inter feuilles.
Dans ce cas, deux possibilités :
1- Vous mettez un filtre sur votre tableau. Vous pouvez ainsi filtrer sur Accepté sans transfert de ligne, et donc sans macro.
2- Vous faites un fichier vraiment représentatif que vous fournissez. J'implémenterais la macro. Normalement vous ne devriez pas y toucher si vous ne changer rien dans la structure du fichier.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Sinon? est ce difficile de faire une macro ? Je peux apprendre ?
Par expérience, aujourd'hui dans l'industrie, maitriser le VBA est un plus.
Cela permet souvent de gagner beaucoup de temps, et sur un CV c'est toujours un plus.
Qui plus est, c'est aussi une amélioration de ses connaissances, et plaisant à l'utilisation.

Il y a d'innombrables tutos dispo sur internet, comme par ex:
Celui de David sur XLD :
Mais aussi :
....
Faites une recherche avec "débuter en VBA excel" ou "initiation VBA" ....

Quand à votre fichier, je vais le traiter de suite.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Vous pouvez enregistrer sous .... et modifier le nouveau fichier.
ou
1- Vous ouvrez ma PJ
2- Vous ouvrez votre fichier
3- Vous faites ALT+F11
4- Dans feuille1(2022) vous copiez tout le texte
5- Dans la feuille concernée de votre fichier vous faites coller
Mais dans ce cas il faut modifier si besoin le nom des colonnes (J) et le nom des autres feuilles utilisées ( Acceptés et En cours-envoyés )

Cependant il n'est peut être pas "pertinent" de commencer par une macro événementielle qui est un peu spéciale car d'exécution automatique. Vous devriez commencer par une macro "plus classique" avec des exemples donnés dans les tutos.
 

Discussions similaires