Macro report de lignes automatiques
Bonjour,
Je ne suis parvenu à exploiter une macro d'un autre fichier.
Sur le fichier joint, j'aimerais lancer une macro, qui copie automatiquement à la suite, sur le feuillet du jour suivant, les lignes ou apparaissent les mentions "IMPORTANT" et "NON TRAITE" (que les autres cellules soient remplies ou non).
En vous remerciant par avance.
Marco
gmb a écrit :Bonjour
Un essai. Te convient-il ?
Bonjour GMB,
Tu m'apportes un début de réponse.
La macro n'exporte que deux lignes. Il faudrait que les lignes s'ajoutent à la suite et soient reportées automatiquement d'un jour à l'autre, tant que l'option IMPORTANT ou TRAITE est apparente dans la ligne.
Curtis Newton a écrit :La macro n'exporte que deux lignes.
En fait, la macro reporte dans la feuille ''02'' toute ligne de la feuille ''01'' sur laquelle tu as choisi en colonne i la valeur ''IMPORTANT'' ou ''NON TRAITE''
Cela me semblait intéressant pour ne pas avoir de doublon en feuille ''02''
Mais si tu veux traiter d'un coup toutes les lignes de la feuille ''01'', que doit-on faire des données déjà existantes sur la feuille ''02'' ?
Les supprimer ? Elles seront définitivement perdues.
Les garder ? On risque d'avoir des doublons si on lance la macro plusieurs fois de suite !
C'est toi qui voit.
Bye !
gmb a écrit :Curtis Newton a écrit :La macro n'exporte que deux lignes.
En fait, la macro reporte dans la feuille ''02'' toute ligne de la feuille ''01'' sur laquelle tu as choisi en colonne i la valeur ''IMPORTANT'' ou ''NON TRAITE''
Cela me semblait intéressant pour ne pas avoir de doublon en feuille ''02''
Mais si tu veux traiter d'un coup toutes les lignes de la feuille ''01'', que doit-on faire des données déjà existantes sur la feuille ''02'' ?
Les supprimer ? Elles seront définitivement perdues.
Les garder ? On risque d'avoir des doublons si on lance la macro plusieurs fois de suite !
C'est toi qui voit.
Bye !
J'ai vérifié.
Sur le feuillet 01, je créé plusieurs lignes importantes avec des données diverses mais la macro ne reporte que la dernière saisie.
Mon idée si tu les permets :
Le 01 mai, je porte la mention "important" ou "non traite", pour que le lendemain, mon successeur puisse prendre connaissance de ces lignes et continuer à travailler à la suite; Ensuite, il juge bon de les laisser en l'état pour que le jour d'après son successeur puisse les consultés, puisqu'elles auront été transférées automatiquement. Ensuite, si ce dernier, valide ces lignes en traités (menu déroulant), il n'y a pas de copie le jour d'après.
Merci pour ton aide.
Marco
gmb a écrit :Curtis Newton a écrit :La macro n'exporte que deux lignes.
En fait, la macro reporte dans la feuille ''02'' toute ligne de la feuille ''01'' sur laquelle tu as choisi en colonne i la valeur ''IMPORTANT'' ou ''NON TRAITE''
Cela me semblait intéressant pour ne pas avoir de doublon en feuille ''02''
Mais si tu veux traiter d'un coup toutes les lignes de la feuille ''01'', que doit-on faire des données déjà existantes sur la feuille ''02'' ?
Les supprimer ? Elles seront définitivement perdues.
Les garder ? On risque d'avoir des doublons si on lance la macro plusieurs fois de suite !
C'est toi qui voit.
Bye !
J'ai saisi la problématique que tu mettais en avant.
Je vais essayer d'être plus précis.
Un bouton macro serait judicieux. Installé sur chaque feuille journalière, il permettrait de reporter sur l'onglet suivant les lignes "IMPORTANT" et "NON TRAITE".
gmb a écrit :Bonjour
Un essai. Te convient-il ?
J'y suis presque avec cette macro associée à un bouton :
Option Explicit
Public Sub Copier()
Dim Wss As Worksheet, Wsd As Worksheet
Application.ScreenUpdating = False
Set Wss = Worksheets("Modèle")
Set Wsd = Worksheets("01")
Wsd.Range("A10:J103").ClearContents
Wsd.Range("A10:J103").Value = Wss.Range("A10:J103").Value
Set Wss = Nothing: Set Wsd = Nothing
End Sub
Je ne sais pas comment insérer cette condition dans la formule ci-dessus :
If Target.Value = "IMPORTANT" Or Target.Value="NON TRAITE" Then
Merci
En préparant l’envoi de ma nouvelle proposition, j’ai lu ton dernier message et la macro qui y figure.
Tu ne veux donc plus partir de la feuille 02 et reporter les lignes sur la feuille 03 ?
C’est ce que j’ai fait :
Tu veux à partir d’une feuile, créer la feuille du lendemain en te servant de la feuille ‘’Modèle’’ et y reporter les lignes ‘IMPORTANT’’ et ‘’NON TRAITE’’ ?
C’est bien cela ?
gmb a écrit :En préparant l’envoi de ma nouvelle proposition, j’ai lu ton dernier message et la macro qui y figure.
Tu ne veux donc plus partir de la feuille 02 et reporter les lignes sur la feuille 03 ?
C’est ce que j’ai fait :
Tu veux à partir d’une feuile, créer la feuille du lendemain en te servant de la feuille ‘’Modèle’’ et y reporter les lignes ‘IMPORTANT’’ et ‘’NON TRAITE’’ ?
C’est bien cela ?
GMB,
Tu as répondu à mes attentes, à un détail près.
Tu soulèves des questions que je ne me serais pas permis de te poser. Si cela est dans tes cordes, cela m'arrangerait énormément. J'utilise des détours pas possible pour arriver au même résultat.
Dans l'immédiat, ta macro sera parfaite, si elle pouvait prendre en compte la globalité du tableau en "A10:J103"; ainsi pas de souci si l'on utilise le bouton macro, deux fois suite, car actuellement elle copie autant de fois les mêmes lignes que l'on utilise la macro. J'ai un collaborateur qui en est encore à l'âge de pierre.
Mais, je suis preneur de ta première proposition de création de page avec report des données. J'avais déjà vu un projet similaire sur le forum.
Merci encore GMB.
gmb a écrit :En préparant l’envoi de ma nouvelle proposition, j’ai lu ton dernier message et la macro qui y figure.
Tu ne veux donc plus partir de la feuille 02 et reporter les lignes sur la feuille 03 ?
C’est ce que j’ai fait :
Tu veux à partir d’une feuile, créer la feuille du lendemain en te servant de la feuille ‘’Modèle’’ et y reporter les lignes ‘IMPORTANT’’ et ‘’NON TRAITE’’ ?
C’est bien cela ?
GMB,
A force d’opiniâtreté et d'essais,
Voici une macro qui ne projette que l'ensemble de la plage contenant les éléments de ma recherche.
Sub copier()
Dim shSource As Worksheet, shDest As Worksheet, lig As Long
Set shSource = Worksheets("Modèle")
Set shDest = Worksheets("01")
' nettoyer destination
shDest.Rows("10:65536").ClearContents
' copier lignes
For lig = 10 To 103
If shSource.Cells(lig, "I") = "IMPORTANT" Or shSource.Cells(lig, "I") = "NON TRAITE" Then
shSource.Range("A" & lig & ":J" & lig).Copy Destination:=shDest.Cells(shDest.[A65536].End(xlUp).Row + 1, 1)
End If
Next lig
End Sub
C'est du bricolage, je ne sais pas si elle est correctement formulée mais elle fonctionne.
Dans l'attente de te lire.
Cordialement.
Curtis Newton a écrit :C'est du bricolage, je ne sais pas si elle est correctement formulée mais elle fonctionne.
L'essentiel est le résultat.
Alors, Bravo !
Bye !