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 !!
 

job75

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

Bonsoir rafi93,

Que ce soit sur Excel 2003 ou Excel 2010, VBA permet d'insérer une ligne dans un tableau filtré :

Code:
Rows(16).Copy
Rows(4).Insert
:confused::confused:

A+
 

Docmarti

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

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

Edit: Voir nouveau fichier joint.

Ceci semble fonctionner avec un ListObject.


Code:
Sub Mise_en_Forme_TableauGB()
 
   Dim NTable As ListObject
    
   Set NTable = ActiveSheet.ListObjects(1) '("Tableau5")
     
   'Inserer ligne au-dessus de l'item 5
   '
                debut = 5
                
                fin = NTable.DataBodyRange.Rows.Count
                
                 NTable.ListRows.Add
                                  
                 NTable.DataBodyRange.Rows(debut & ":" & fin).Copy NTable.DataBodyRange.Cells(debut + 1, 1)
                
End Sub

Cordialement

Docmarti
 

Pièces jointes

  • test dupliquer ligne tableau filtré_004.xlsm
    21.4 KB · Affichages: 59
  • test dupliquer ligne tableau filtré_004.xlsm
    21.4 KB · Affichages: 80
  • test dupliquer ligne tableau filtré_004.xlsm
    21.4 KB · Affichages: 70
Dernière édition:

job75

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

Bonjour rafi93, Docmarti,

Ceci fonctionne même si la ligne à copier est masquée par le filtre :

Code:
Sub CopierLigne()
Dim n&
On Error Resume Next
n = InputBox("N° de ligne :", "Copier")
Rows(n).Insert
Rows(n).Resize(, 3) = Rows(n + 1).Resize(, 3).Value
End Sub
Fichier joint, testé seulement sur Excel 2003 (tableau classique).

A+
 

Pièces jointes

  • Copier ligne(1).xls
    39 KB · Affichages: 74

job75

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

Re,

Cette macro évite que les formats de la ligne de titres soit copiés si l'on insère une ligne 2.

Elle copie également les formules :

Code:
Sub CopierLigne()
Dim n&
On Error Resume Next
n = InputBox("N° de ligne :", "Copier")
Rows(n).Insert
Rows(Rows.Count - 1).Copy Rows(n) 'pour les formats
Rows(n).Resize(, 3) = Rows(n + 1).Resize(, 3).Formula
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Copier ligne(2).xls
    41 KB · Affichages: 60

job75

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

Re,

En fait cette macro va bien, du moins sur Excel 2003 :

Code:
Sub CopierLigne()
Dim n&
On Error Resume Next
n = InputBox("N° de ligne :", "Copier")
Rows(n).Insert
Rows(n + 1).Copy Rows(n)
End Sub
Si la ligne copiée est masquée la ligne insérée le sera aussi.

Fichier (3), j'ai retiré les formules pour pouvoir bien vérifier le copier/coller.

A+
 

Pièces jointes

  • Copier ligne(3).xls
    40 KB · Affichages: 55
Dernière édition:

rafi93

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

merci à Docmarti & Job75 mais...

aucune de ces solutions ne marche, en tous cas sur mon poste et le fichier ci-joint (tableau filtré+mode plan)

une autre idée...?
 

Pièces jointes

  • test dupliquer ligne tableau filtré.xlsm
    20 KB · Affichages: 48

job75

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

Bonsoir rafi93,

C'est la 1ère fois que vous parlez du mode plan, au post #1 vous ne parlez que du mode tableau et du filtre.

Mes solutions ne fonctionnent que pour le filtre (lignes masquées).

Donc affichez toutes les colonnes, filtrez le tableau et testez ma macro.

A+
 

job75

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

Re,

Cela dit testez sur votre fichier cette macro :

Code:
Sub CopierLigne()
Dim n&, i%
On Error Resume Next
n = InputBox("N° de ligne :", "Copier")
Rows(n).Insert
For i = 1 To 7
  Cells(n + 1, i).Copy Cells(n, i)
Next
End Sub
Cela doit fonctionner car les cellules sont copiées une par une.

La ligne insérée est toujours affichée.

A+
 
Dernière édition:

rafi93

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

en fait j'avais déjà posé cette même question juste avant (cf Discussion: "avec VB, dupliquer ligne en mode plan") mais en pensant que le pb venait du mode plan (car la ligne dupliquée "perdait" des cellules).
on m'a communiqué une solution qui semblait le corriger : en fait j'avais défiltré le tableau quand je l'ai testée...

puis le pb est réapparu, et je me suis aperçu que le probleme se posait
- lors de la conjonction plan+filtre !!
- et aussi si on selectionne toute la ligne de la feuille plutôt que la ligne du tableau

c'est très mysterieux

votre solution marche certainement, mais je souhaite éviter de dégroper pour la jouer, car je ne retrouve plus mon affichage initial ensuite; peut etre y a t il une façon de dégrouper et regrouper à l'identique avec la macro (mémorisation du plan) ?
 

rafi93

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

ok ça marche
maintenant, il va falloir que j'essaie de réecrire cette macro pour un "tableau" qui peut être de largeur quelconque et démarrer ailleurs qu'en A1... c'est pas gagné
bonne soirée
 

job75

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

Re,

Cela évite de s'embêter à traiter l'InputBox, c'est pour le cas où l'on entre des valeurs qui ne sont pas des numéros de lignes (des lettres, des nombres décimaux...).

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 107
Membres
103 120
dernier inscrit
83400ren