impossible inserer ligne dans un tableau filtré

rafi93

XLDnaute Occasionnel
bonsoir !

J'ai besoin sous VB de copier une ligne d'un tableau et l'inserer-coller juste au dessus.

Il s'agit d'un tableau avec en-têtes, créé à partir de la commande inserer>tableau.

Que ce soit sous VB ou manuellement, il semble impossible d'inserer une ligne si ce tableau est filtré sur une valeur de colonne.
Il faut d'abord remettre tous les filtres à zéro (sans pour autant supprimer le mode filtre) pour pouvoir copier une ligner et l'inserer-coller au dessus.

je ne sais pas pourquoi (?).

y a t il un moyen de le faire directement avec VB?
sinon, il faudrait d'abord que le programme mémorise les filtres et la zone visible, annule les filtres, réalise l'opération, puis remette les filtres et affiche à nouveau la zone visible initiale.
mais je ne sais pas si c'est possible.

Ce post fait suite à une de mes précédentes questions similaires, où je pensais que c'était le mode plan qui posait pb. Mais en fait c'est le mode filtre !

merci !!
 

Docmarti

XLDnaute Occasionnel
Re : impossible inserer ligne dans un tableau filtré

Bonjour rafi93

je joue le code du post 27 avec le fichier du post 3

- si colonnes groupées mais lignes non filtrées => ça marche

- mais si colonnes groupées et lignes filtrées (p.ex filtre sur colonne D "contient 5") => il rajoute une ligne blanche en bas du tableau, puis plantage du code sur la ligne juste avant le "next".

est ce different chez vous ?

Essaie avec le code qui suit, où toutes les variables sont déclarées explicitement.

Code:
Sub Mise_en_Forme_TableauGB327Modifie()
 
   Dim NTable As ListObject
   Dim I As Long, debut As Long, fin As Long
   
   
   
   Set NTable = ActiveSheet.ListObjects(1) '("Tableau5")
     
   'Inserer 3 lignes au-dessus de l'item 5
   '
   For I = 1 To 3
                debut = 5
                
                fin = NTable.DataBodyRange.Rows.Count
                
                 NTable.ListRows.Add
                                  
                 NTable.DataBodyRange.Rows(debut & ":" & fin).Copy NTable.DataBodyRange.Cells(debut + 1, 1)
    
    Next
    
End Sub

Et n'oublie pas que le code du post 27 comme celui-ci vise a insérer 3 lignes et non pas une seule.

Docmarti
 

rafi93

XLDnaute Occasionnel
Re : impossible inserer ligne dans un tableau filtré

vraiment désolé mais quand le tableau est filtré ça plante toujours juste avant le next
il insère une ligne en bas du tableau
voir image jointe

es tu aussi sous Excel 2007 ? ScreenShot006.jpg
 

Pièces jointes

  • ScreenShot006.jpg
    ScreenShot006.jpg
    41.7 KB · Affichages: 38
  • ScreenShot006.jpg
    ScreenShot006.jpg
    41.7 KB · Affichages: 34

Docmarti

XLDnaute Occasionnel
Re : impossible inserer ligne dans un tableau filtré

Oui je suis sous Excel 2007.

Je ne peux pas voir la cause de ce message d'erreur à partir d'une image.
Envoie le classeur avec les données filtrées dans l'état où le problème survient.
 

rafi93

XLDnaute Occasionnel
Re : impossible inserer ligne dans un tableau filtré

voila le fichier filtré, juste après le plantage : il a rajouté une ligne en bas du tableau
 

Pièces jointes

  • test dupliquer ligne tableau filtré_004.xlsm
    22 KB · Affichages: 28
  • test dupliquer ligne tableau filtré_004.xlsm
    22 KB · Affichages: 25
  • test dupliquer ligne tableau filtré_004.xlsm
    22 KB · Affichages: 29

Docmarti

XLDnaute Occasionnel
Re : impossible inserer ligne dans un tableau filtré

[Edit]
La technique consiste à ajouter une ligne en bas et à copier les lignes supérieures à cette ligne une ligne plus bas. C'est comme ça que l'insertion est obtenue.
[/Edit]

Le problème est dû à la création d'une nouvelle ligne en bas du tableau qui n'a pas été suivie de la copie de la ligne supérieure vers la nouvelle ligne. Le filtre auto n'apprécie guère qu'une nouvelle donnée soit ajoutée aux données déjà présentes dans la colonne filtrée.
Solution : si une nouvelle donnée a été ajoutée soit manuellement, soit par code, dans une colonne filtrée, il faut rafraîchir le filtre auto.
 
Dernière édition:

rafi93

XLDnaute Occasionnel
Re : impossible inserer ligne dans un tableau filtré

ok merci
on est bien d'accord que c'est la macro (et non pas moi manuellement) qui a fait cette insertion de ligne en bas ?
cela veut il dire que l'automatisation de cette fonctionnalité est impossible ?
 

Misange

XLDnaute Barbatruc
Re : impossible inserer ligne dans un tableau filtré

Bonjour à tous
sans intervenir sur le fond, je parcours rapidement cette ficelle et je voulais juste signaler au passage qu'il faut choisir entre le mode plan et le tableau excel (accueil/style/mettre sous forme de tableau). Les deux sont incompatibles.
 

Docmarti

XLDnaute Occasionnel
Re : impossible inserer ligne dans un tableau filtré

Oui. L'automatisation de l'insertion d'une ligne avec l'objet DataBodyRange me semble impossible à gérer.

Mieux vaut s'en tenir à la commande que te suggére job75, commande de base qui a fait ses preuves depuis longtemps.

Docmarti
 

rafi93

XLDnaute Occasionnel
Re : impossible inserer ligne dans un tableau filtré

je prends donc la solution du post 21 de job75

merci à tous pour le temps que vous y avez passé

Excel n'est définitivement pas une base de données, même si il répond à pas mal de problèmes...
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 477
Membres
103 555
dernier inscrit
Chtio