VBA-Copier/couper entre deux feuilles

Y compris Power BI, Power Query et toute autre question en lien avec Excel
S
Snakiss
Jeune membre
Jeune membre
Messages : 26
Inscrit le : 22 avril 2015
Version d'Excel : 2007 FR

Message par Snakiss » 5 mai 2015, 10:31

Bonjour,
J'ai actuellement un code qui me permet de copier/couper une ligne entière de la feuille "Outillage" à la feuille "Scrap", à condition qu'il y est le mot "Scrap" dans la colonne F de la feuille "Outillage" et ce code s'active après enregistrement.

Sub Scrap()

Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long

Sheets("Scrap").Activate ' feuille de destination

Col = "F" ' colonne de la donnée non vide à tester
NumLig = 0
With Sheets("Outillage") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value = "SCRAP" Then
.Cells(Lig, Col).EntireRow.Cut
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With

End Sub
Or j'ai un problème c'est que les lignes se copie/coupe sur des lignes déjà remplit, j'aimerai que les lignes se copient sur la dernière ligne vide de la feuille "Scrap".
Mais avec mes connaissances de débutant en VBA je n'y arrive pas :s
Merci d'avance.
Excel base de donnée Excel pratique.xlsm
(108.79 Kio) Téléchargé 7 fois
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 791
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 5 mai 2015, 11:06

 

  Bonjour,

  avec un filtre avancé, pas besoin de boucle :  les lignes sont traitées en une seule opération !
S
Snakiss
Jeune membre
Jeune membre
Messages : 26
Inscrit le : 22 avril 2015
Version d'Excel : 2007 FR

Message par Snakiss » 5 mai 2015, 15:54

Bonjour,
j'ai regarder avec un filtre avancé on peut juste copier et non couper ?
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 791
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 5 mai 2015, 19:40

 

  C'est exact !   Dans ce cas, filtre avancé sur place puis Couper / Coller

  Puis méthode   ShowAllData   pour annuler le filtre.


 
S
Snakiss
Jeune membre
Jeune membre
Messages : 26
Inscrit le : 22 avril 2015
Version d'Excel : 2007 FR

Message par Snakiss » 7 mai 2015, 08:00

Je comprend pas trop ce que tu veux dire, elle est où l'option couper/coller dans filtre avancé, et la méthode showall sa consiste en quoi ?
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 791
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 7 mai 2015, 12:51

 
  Non, utiliser le filtre avancé sur place (l'un de ses deux modes, l'autre étant la copie) puis effectuer un simple Couper / Coller.

  Consulter l'aide VBA de la méthode   Range.Cut   pour effectuer le Couper / Coller en une seule instruction !

  Quant à ShowAllData, cette méthode est aussi documentée dans l'aide VBA …

  Ensuite pour tester la dernière cellule, soit avec la méthode Find, soit avec la propriété CurrentRegion,
  soit encore via la propriété Range.End, tout dépend comment sont organisées les données …
 
S
Snakiss
Jeune membre
Jeune membre
Messages : 26
Inscrit le : 22 avril 2015
Version d'Excel : 2007 FR

Message par Snakiss » 7 mai 2015, 13:31

Mais j'aimerais garder le code on peut pas juste modifier le code pour qu'il copie/coupe après la dernière ligne remplit car avec ce code copie coupe sur des lignes déjà remplit.
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 791
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 7 mai 2015, 14:16

 
  Oui tu peux conserver l'usine à gaz;   j'espère qu'il n'y a pas beaucoup de lignes dans la feuille de calculs
  sinon cela va ramer comparativement à un filtre avancé au résultat instantané !

  Donc par exemple avec la propriété Range.End détecter la dernière saisie :

  NumLig = .Cells(.Rows.Count, 1).End(xlUp).Row  …        (car  NumLig = 0  c'est vraiment du lourd ‼)

  Du reste je ne comprends même pas ta question vu que tu as déjà cette méthode dans le code !
  Si le code avait été balisé comme il se doit  - il y a pourtant une icône ! -  je m'y serais intéressé
 
S
Snakiss
Jeune membre
Jeune membre
Messages : 26
Inscrit le : 22 avril 2015
Version d'Excel : 2007 FR

Message par Snakiss » 7 mai 2015, 14:57

Beh enfaite, ce code va s'activer quand j'enregistre mon fichier, il va automatiquement déplacer les lignes dans la feuille "Scrap" si il y a scrap dans la colonne F de la feuille "Outillage". Mais ici si jamais j'ai déjà ma liste de scrap et que j'en enregistre un plus tard il va venir remplacer le premier de la liste et l'autre va disparaître.
Je sais pas trop où remplacer la ligne de code que tu viens de me donner tu pourrais me l'insérer dans le code en entier ?
Merci de l'aide et du temps que tu m'apportes !
Cordialement
Snakiss
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 791
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 7 mai 2015, 16:37

 
  Et je l'ai pourtant indiqué !

  Combien de ligne NumLig = 0 ? …

 
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message