Completer code VBA - Transfert de lignes

Bonjour,

J'ai créé une main courante, que je vous transmets en pièce jointe.

En colonne F, à partir d'une liste déroulante, je peux selectionné "TRAITE", "IMPORTANT" ou "NON TRAITE".

Un bouton macro "REPORT", me permet de transférer au jour suivant, les lignes où apparait en colonne F, la mention "IMPORTANT" ou "NON TRAITE".

Pourriez-vous compléter la macro, pour qu'à l'issue du transfert, l'heure apparaissant en colonne B (pour les lignes transférées uniquement) soit effacée et la cellule laissées vide. Pour mémoire, l'heure s'affiche automatiquement en colonne dès qu'un objet est sélectionné en colonne C.

Je vous remercie par avance.

50test.xlsm (127.47 Ko)

Bonjour Curtis

Je ne vois dans ton fichier aucune liste déroulante en colonne F

Peux-tu vérifier ton fichier ou compléter tes explications...

Pardon, la colonne concernée par la liste déroulante se trouve en E.

Merci

Bonjour Curtis

Désolé j'ai beau chercher je ne trouve pas !

Dans quel onglet est cette liste en colonne E ?

J'avais mal saisi. L'onglet est caché. En mode VBA, tu pourras rendre l'onglet liste visible.

(re)

Désolé !

Ne pourrais tu pas envoyer un fichier où tout est visible ? ce serait plus simple non ?

Je tourne sous excel 2013; j'ai téléchargé le fichier que j'ai envoyé précédemment.

L'onglet liste est visible, du moins pour moi.

J'ai créé la liste en mode validation de données.

Entretemps, j'ai passé quelques heures à chercher, le code que j'ai modifié fonctionne très bien mais je ne sais pas si c'est la bonne méthode. Le premier code lance une procédure qui se termine par le lancement d'une seconde. Les voici ci-après :

Pour info :

Les deux codes :

Sub transfertfeuille()

Dim n As Byte, Lig As Long

n = ActiveSheet.Index

For Lig = 14 To Sheets(n).Range("C" & Rows.Count).End(xlUp).Row 'de la ligne 14 à la dernière ligne rempli de la feulle active

If Sheets(n).Cells(Lig, "E") = "IMPORTANT" Or Sheets(n).Cells(Lig, "E") = "NON TRAITE" Then

If Sheets(n).Range("F" & Lig) <> "Ligne copiée" Then

Sheets(n).Range("B" & Lig & ":E" & Lig).Copy Destination:=Sheets(n + 1).Cells(Sheets(n + 1).[B65536].End(xlUp).Row + 1, 2)

Sheets(n).Range("F" & Lig) = "Ligne copiée"

End If

End If

Next Lig

Call tout

End Sub

Sub tout()

Dim n As Byte, Lig As Long

n = ActiveSheet.Index

For Lig = 14 To Sheets(n + 1).Range("B" & Rows.Count).End(xlUp).Row 'de la ligne 14 à la dernière ligne rempli de la feulle active

If Sheets(n + 1).Cells(Lig, "E") = "IMPORTANT" Or Sheets(n + 1).Cells(Lig, "E") = "NON TRAITE" Then

Sheets(n + 1).Cells(Lig, "B").ClearContents

End If

Next Lig

End Sub

Le code fonctionne parfaitement et instantanément.

Rechercher des sujets similaires à "completer code vba transfert lignes"