Ajout de ligne sans dé-filtrer

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Me re-voilà avec un nouveau souci que je n'arrive pas à résoudre.
Je fais à nouveau appel à votre expertise et à votre gentillesse.

Le classeur test joint ne comporte que 85 lignes d'appels pour l'exemple mais le classeur de travail en a jusqu'à 50.000.
Pour faciliter notre travail, nous filtrons les appels à faire par types d'appels et selon URGENCE en cliquant dans la cellule S2.

Mon souci :
A chaque nouvel appel d'un prospect que nous n'avons pas encore appelé, nous ajoutons une ligne d'appel en dessous
de la dernière ligne remplie en cliquant sur l'image du téléphone (en haut à gauche) qui est affectée au code d'ajout de ligne.
L'ajout de ligne est la copie de la ligne 6 qui est masquée.

Actuellement, pour pouvoir le faire, je suis obligé de dé-filtrer pour pouvoir ajouter la nouvelle ligne d'appel en dessous
de la dernière ligne remplie.

Quand la nouvelle ligne est remplie, il nous faut revenir au filtrage précédemment réalisé.
Le filtrage prenant du temps sur 50.000 lignes, voire plus, cela nous fait perdre beaucoup de temps et c'est très fréquent.

Existe-t-il un code qui permettrait, tout en gardant le filtrage en cours, de pouvoir ajouter en l'affichant la ligne en dessous de la dernière ligne remplie ?
dans le fichier joint c'est la ligne 86.

Ou peut-être est-il possible d'ajouter une ligne d'une autre façon permettant de conserver le filtrage ?

Si vous aviez la solution, ce serait super de chez super !!!
Je joins le fichier test;

Avec mes remerciements, je vous souhaite à toutes et à tous une belle fin de journée,
amicalement,
arthour973,
 

Pièces jointes

  • filtre_isiTel_ ajout_ligne_filtre.xlsm
    76.9 KB · Affichages: 16
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Lionel,

Si je comprends bien tu es obligé de dé-filtrer à cause des End(xlUp) ?

Il n'y a plus de problème si tu détermines la dernière ligne par :
VB:
derlig = Application.Match("zzz", [A:A])
Par ailleurs je suis surpris que tu continues à utiliser des Select à tour de bras, seuls les débutants font ça !!!

A+
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Gérard,

Merci pour le derlig, je vais le tester (mais je sens que ça va être bon LOL).
Effectivement, il y a bcp de select.
Quand j'ai commencé le fichier j'étais encore moins qu'un débutant et aujourd'hui, grâce à vous tous, je suis un débutant ++ LOL.

Il y a bcp de codes dans ce classeur de travail (mon usine à gaz) et je dois prendre du temps pour refaire tous les codes selon mes connaissance d'aujourd'hui.

Un grand merci Gérard, je teste et je te dis
Amicalement,
Lionel,
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour Gérard, le Forum,

je n'arrive pas à transformer mon code :
(copier la ligne 6 sur la ligne après la dernière ligne non vide) sur feuille filtrée
ActiveSheet.Rows(6).Copy ActiveSheet.Cells(Rows.Count, 1).End(xlUp)(2)

pour intégrer ton code :
derlig = Application.Match("zzz", [A:A])

Je cherche, (comme je ne connais pas assez vba), je tâtonne et ne trouve pas LOl.
:)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Merci Gérard :)

je suis vraiment nul et je le sais LOL

J'ai testé mais ça beug :
sur cette ligne : Rows(6).Copy Rows(derlig + 1)
VB:
Sub CopieLigneN°() 'quand ajoute ligne d'appel
    Sheets("SuivisAppels").Select
    Application.EnableEvents = False
    Application.ScreenUpdating = False

    Rows("6:6").RowHeight = 100
    derlig = Application.Match("zzz", [A:A])
    Rows(6).Copy Rows(derlig + 1)
    Rows("6:6").RowHeight = 0

je cherche le pkoi. mais je pense que c'est le filtrage qui est actif et la dernière ligne n’apparaît pas..

Lionel
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Gérard,
Effectivement, j'avais oublié de modifier dsl :)
code modifié :
VB:
Sub CopieLigneN°() 'Gérard 'quand ajoute ligne d'appel
    Sheets("SuivisAppels").Select
 
    On Error Resume Next
    Rows("6:6").RowHeight = 100
    derlig = Application.Match("zzz", [A:A])
    Rows(6).Copy Rows(derlig + 1)
    Rows("6:6").RowHeight = 0
    derlig.Select
 
    Cells(ActiveCell.Row, 26) = "NC"
    Cells(ActiveCell.Row, 1) = ""
    Cells(ActiveCell.Row, 5) = Now()
    ActiveCell.Offset(0, 2) = ""
    ActiveCell.Offset(0, 2).Select
    Application.ScreenUpdating = True
 
    ActiveWindow.ScrollRow = Selection.Row
    ActiveWindow.SmallScroll Down:=-1
 
    Application.MoveAfterReturn = True
    Application.EnableEvents = True
    ActiveWindow.LargeScroll ToRight:=-1
End Sub

Mais je n'y arrive pas, si pas de filtrage ça marche nickel,
Si filtrage, il ne copie pas la ligne 6 en ligne 86 (première ligne vide en fin de feuille (pas fin de filtrage)).

Classeur avec code modifié joint.

Encore merci de m'aider :)
Lionel,
 

Pièces jointes

  • filtre_isiTel_ ajout_ligne_filtre.xlsm
    74.1 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour Lionel, le forum,

Je ne comprends pas que tu baisses les bras sur un truc aussi simple :
VB:
Sub CopieLigneN°()
Dim lig&
Sheets("SuivisAppels").Activate
lig = Application.Match("zzz", [A:A]) + 1
Rows(6).Copy Rows(lig)
Cells(lig, 5) = Now
Cells(lig, 26) = "NC"
Rows(lig).RowHeight = 50
Application.Goto Cells(lig, 1), True 'cadrage
End Sub
Nota : précédemment tu voulais effacer la cellule en colonne A par Cells(ActiveCell.Row, 1) = ""

Il ne faut surtout pas faire ça puisque cette colonne permet de déterminer la dernière ligne.

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 158
Messages
2 085 831
Membres
102 996
dernier inscrit
Zabouille73