XL 2013 Copier par VBA la ligne filtrée dans le bas du tableau

LEIYAZ

XLDnaute Nouveau
Bonjour,

J'ai un souci sur un fichier Excel.

Je souhaites pouvoir automatiser la copie des données de la ligne que j'ai filtrée et les coller en bas de mon tableau pour avoir deux lignes identiques mais à laquelle je change le prestataire.

Sauf que je n'arrive pas à bien utiliser le code VBA pour faire cela. Voici un exemple de code que j'avais indiqué :

VB:
Sub Copier_Ligne_Filtree()

' COPIE REFERENCE


Sheets("Feuille Test").Select
Range("C7").Select
SendKeys ("{DOWN}")
Selection.Copy
SendKeys ("{DOWN}")
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

End Sub

Mais cela ne fonctionne pas car rien ne se copie..

Je vous joint le fichier crée en test en PJ de ce message.

Merci par avance pour vos retours :)
 

Pièces jointes

  • FICHIER TEST.xlsb
    19.3 KB · Affichages: 13
Solution
Bonjour @Phil69970, le forum,

J'ai trouvé la solution, j'ai simplement ajouté à celui de @Phil69970 un code permettant de masquer et démasquer la colonne :

VB:
Sub Copier_Ligne_suivant_DPI()
Dim Derlig%
Derlig = Range("B65536").End(xlUp).Row

Columns("F:G").EntireColumn.hidden = False

Range("B14:U" & Derlig).SpecialCells(xlCellTypeVisible).Copy Range("B" & Derlig + 1)

Columns("F:G").EntireColumn.hidden = True

End Sub

Merci à @Phil69970 pour le 1er code qui fonctionne parfaitement :)

LEIYAZ

XLDnaute Nouveau
Bonjour @Phil69970,

Mes excuses pour la réponse tardive..

Le critère du filtre sera déterminé par moi-même suivant quel numéro de référence interne je devrai copier, la ligne sera déjà filtrée suivant mon critère avant d'exécuter la macro (exemple je souhaite dupliquer la référence interne DPI0560, je filtre mon tableau sur la réf DPI0560 et j'exécute la macro de duplication.
Il n'y aura donc toujours qu'une seule ligne filtrée.

Je pensais à la copier en dessous de la ligne filtrée car cela correspond en général à la première ligne vide après le tableau.

Merci d'avance :)
 

Phil69970

XLDnaute Barbatruc
Bonjour @LEIYAZ, le forum

Si j'ai compris tu filtres ta ligne avec le critère que tu veux et une fois la ligne filtrée tu veux la copier après la fin fin de tableau MAIS pas dans le tableau.

Je te propose ceci :
VB:
Sub Copier_Ligne_Filtree()
Dim Derlig%
Derlig = Range("B65536").End(xlUp).Row
Range("B8:J" & Derlig).SpecialCells(xlCellTypeVisible).Copy Range("B" & Derlig + 3)
End Sub
*La ligne filtrée sera copiée à la 3eme ligne après la fin du tableau
*Si tu veux copier sur une ligne plus bas il faut modifier ==> Derlig + 3 ==> le 3 correspond à la 3eme ligne après la fin du tableau

Merci de ton retour

@Phil69970
 
Dernière édition:

LEIYAZ

XLDnaute Nouveau
Bonjour @Phil69970, le forum,

La solution fonctionne sur le fichier test, j'au juste modifié la partie Range en indiquant :
VB:
Range("B8:J" & Derlig).SpecialCells(xlCellTypeVisible).Copy Range("B" & Derlig + 1)
Ceci afin que la ligne copiée apparaisse à la suite du tableau.

Maintenant je l'ai essayé sur mon tableau de suivi sur lequel je souhaitais la macro, mais étant donné que j'ai des colonnes masquées, cela ne copie pas correctement. Les informations sont décalées..

Exemple dans le fichier test joint, j'ai masqué les colonnes E et F et les informations sont décalées à partir de la ligne D quand je copie.

Ya t-il une solution pour éviter ce décalage ?

Merci d'avance :)
 

Pièces jointes

  • FICHIER TEST.xlsb
    19.8 KB · Affichages: 7

LEIYAZ

XLDnaute Nouveau
Bonjour @Phil69970, le forum,

J'ai trouvé la solution, j'ai simplement ajouté à celui de @Phil69970 un code permettant de masquer et démasquer la colonne :

VB:
Sub Copier_Ligne_suivant_DPI()
Dim Derlig%
Derlig = Range("B65536").End(xlUp).Row

Columns("F:G").EntireColumn.hidden = False

Range("B14:U" & Derlig).SpecialCells(xlCellTypeVisible).Copy Range("B" & Derlig + 1)

Columns("F:G").EntireColumn.hidden = True

End Sub

Merci à @Phil69970 pour le 1er code qui fonctionne parfaitement :)
 

Discussions similaires

Réponses
2
Affichages
313

Membres actuellement en ligne

Statistiques des forums

Discussions
314 863
Messages
2 113 663
Membres
111 933
dernier inscrit
usager