Excel copier ligne ds autre feuille pui suppr

Viv -  
wilfried_42 Messages postés 912 Statut Contributeur -
Bonjour,

j'ai une feuille (encours) de différentes données et je souhaiterais que pour une action que je déclencherais (ex: cocher une case puis valider sur un bouton ou mettre un X la cellule de la ligne concerné et appuyer sur un bouton), la ligne de données se copie dans une autre feuille (historique) et se supprime de la feuille d'origine (encours).

Pouvez-vous m'aider?

Merci
A voir également:

7 réponses

wilfried_42 Messages postés 912 Statut Contributeur 245
 
Bonjour

Sans fichier, c'est une peu complexe, mais voici une macro qui peu t'aider mais qu'il faut adapter
je pars du principe que la Croix se trouve En colonne A

sub macro_delete()
      activesheet.range("A1").autofilter field:=1, criteria:="x"
      Range("A2:A" & range("A65536").end(xlup).row).cells.specialcells(xlcelltypevisible).entirerow.select
      selection.copy destination:=sheets("Feuil2").range("A" & sheets("Feuil2").range("A65536").end(xlup).row)
      selection.delete
      activesheet.range("A1").autofilter
end sub

macro faite à main levée, non testée (mais ca à l'air ok)
0
viv
 
Merci pour ta réponse,

J'ai testé, mais ça me met "erreur".
Je joins le fichier sur lequel je souhaite faire cette macro.

Il y a 3 feuilles, et une fois qu'il y a un X dans la colonne "Soldée" pour chaque feuille, je souhaite que (automatiquement ou en créant un bouton à cliquer) la ligne entière où se trouve ce X, s'efface de ce classeur (ou feuille) et se copie dans un autre classeur Historique avec feuille Histo commande, histo réception, histo façon (ou dans le même classeur dans feuilles historique commande, historique réception, historique façon)

Merci de ton aide
0
viv
 
je n'ai pas réussi à joindre mon fichier<code>


Voici un aperçu de ce que j'ai en première ligne sur la 1ére feuille et donc ce que je dois remplir

Soldée N° Commande Tisseur Article Date de commande Prix Qté Comm Qté Livrée Reste à Livrer


</code>
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

voici le fichier avec la macro, une petite erreur sur Criteria : Criteria1

https://www.cjoint.com/?krjxxixqaP
0
cervezaman62 Messages postés 2 Statut Membre
 
Merci Enormément Wilfried!!!

Juste un dernier truc, peux tu me dire comment faire pour m'en servir d'en plusieurs fichiers, car je ne connais pas du tout le fonctionnement des macros.

Et est ce qu'il est possible de faire l'historique (enregistrement des lignes supprimées) dans un autre classeur? si oui, comment.

En tout cas, merci beaucoup de ton aide!
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

oui c'est faisable, mais les renseignement donnés sont actuellement assez vagues, il maque la structure des classeurs d'origine (si c'est la meme), la structure du classeur historique (Nom, Chemin, Feuilles...............
0
Viv
 
voici le chemin, j'ai mis les 2 fichiers zippés pour que tu ais la présentation des feuilles:

http://www.cijoint.fr/cjlink.php?file=cj200810/cijNwsM4od.zip

les 2 fichiers seront dans le même dossier (Sous-traitance) dont voici le chemin:

\\murielle\Partage Prod\Sous-Traitance

Si ce n'est pas le cas, peux tu les enregistrer au format Excel 97-2003.

Encore merci à toi
0
Viv
 
En fait, je pense que ça sert à rien de compliquer le fichier en créant un enregistrement sur un autre classeur.

Autant garder cette macro qui copie les lignes cochées vers une autre feuille.

Cependant, je souhaiterai que lorsque je click sur le bouton cela fasse la même opération pour 2 autres feuilles vers 2 autres destinations (feuilA vers Histo feuilA, par exemple) peux-tu m'aider?

Aprés, ça sera nickel.

J'ai testé ça marche superbien, sauf si je clique sur le bouton et qu'il n'y a pas de lignes de cochées, ça me copie quand même la 1ère ligne même si elle n'est pas coché.

Merci de ton aide
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

voila la macro

Sub Bouton1_QuandClic()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Sheets
        Select Case ws.Name
            Case "FeuilA", "FeuilB", "FeuilC" ' Nom des feuilles à traiter
                ws.Activate
                ActiveSheet.Range("A1").AutoFilter field:=1, Criteria1:="x"
                If Range("A65536").End(xlUp).Row > 1 Then
                    Range("A2:A" & Range("A65536").End(xlUp).Row).Cells.SpecialCells(xlCellTypeVisible).EntireRow.Select
                    Selection.Copy Destination:=Sheets("Histo" & ActiveSheet.Name).Range("A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1)
                    Selection.Delete
                End If
                ActiveSheet.Range("A1").AutoFilter
            Case Else
        End Select
    Next
End Sub


en gras souligné : le nom de la feuille hitorique devant recuperer les archive : HISTOFeuilA, HISTOFeuilB......
0
Viv
 
Merci Wilfried,

je viens de tester la macro, mais malheureusement ça ne fonctionne, car j'ai dû mal renseigner des trucs dans ce que tu m'as envoyé.

De plus, je sais pas si c'est important, mais bon, mes données commencet à partir de la ligne 5 (d'où le A5) et le titre des colonnes et en ligne 4 pour chaque feuille, je ne sais pas si cela change quelque chose, mais te l'indique au cas où.


Sub Bouton1_QuandClic()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Sheets
        Select Case ws.Name
            Case "Commandes", "Réceptions", "Façon" ' Nom des feuilles à traiter
                ws.Activate
                ActiveSheet.Range("A4").AutoFilter field:=1, Criteria1:="x"
                If Range("A65536").End(xlUp).Row > 1 Then
                    Range("A5:A" & Range("A65536").End(xlUp).Row).Cells.SpecialCells(xlCellTypeVisible).EntireRow.Select
                    Selection.Copy Destination:=Sheets("Histo_Commandes", "Histo_Réceptions", "Histo_Façon" & ActiveSheet.Name).Range("A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1)
                    Selection.Delete
                End If
                ActiveSheet.Range("A4").AutoFilter
            Case Else
        End Select
    Next
End Sub



Merci de ton aide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

Selection.Copy Destination:=Sheets("Histo_" & ActiveSheet.Name).Range("A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1)


activesheet.name comprend le nom de la feuille en cours de traitement, donc
soit : Commandes, Réceptions, Façon, chacune de ces feuilles va etre traitée l'une apres l'autre
donc pour la premiere on concatene "Histo_" & Commandes, ensuite "Histo_" & Réceptions et enfin "Histo_" avec Façon

0
Viv
 
Oki, mais du coup, dois-je laisser comme ça:

Selection.Copy Destination:=Sheets("Histo_" & ActiveSheet.Name).Range("A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1

ou comme ça:

Selection.Copy Destination:=Sheets("Histo_" & "Commandes").Range("A" & Sheets("Feuil2").Range("A65536").End(xlUp).Row + 1

J'ai essayé les 2 cas, et une erreur me renvoit à cette ligne.

Et à quoi sert le .Range("A" & Sheets("Feuil2")?

Merci
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

Désolé, étant au boulot, je ne suis pas à 100% dans la macro, j'e crois avoir trouvé l'erreur : Feuil2

Selection.Copy Destination:=Sheets("Histo_" & ActiveSheet.Name).Range("A" & Sheets("Histo_" & ActiveSheet.Name).Range("A65536").End(xlUp).Row + 1


Sheets("Histo_" & activesheet.name) ' Defini la feuille de reception
.range("A" & sheets("Histo_" & activesheet.name).range("A65536").end(xlup).row + 1) ' Defini l'emplacement de copie
en gras, Range("A65536").end(xlup).row donne la N° de la derniere ligne utilisée, en ajoutant 1 on a la prochaine ligne vierge (donc on part de la derniere (A65536) on, cherche la permiere valeur (.end) en remontant (Xlup)

je ne sais pas si je suis clair, dur dur d'expliquer
0
Viv
 
Cela fonctionne désormais, mais uniquement pour la feuille "commande", ça y est presque!!!
0
wilfried_42 Messages postés 912 Statut Contributeur 245
 
re:

à mon avis, ca vient de tes noms de feuille maintenant, attention aux majuscules, aux accents....

Commandes : Histo_Commandes
Réception : Histo_Réception
Façon : Histo_Façon
0