XL 2019 Excel 2019 VBA Probleme sur creation de ligne en 1ere position

Cheyenne_2021

XLDnaute Junior
Bonjour,
1 tableau structuré avec 1 ligne d’entete.

Au moment de la création d’une nouvelle ligne en 1ere position, juste sous l’entete, j’ai 2 bugs differents (selon la methode utilisée) que je ne m’explique pas car la creation d’une ligne en 1ere position fonctionne ailleurs

  • Si j’utilise Selection.ListObject.ListRows.Add (1), la ligne se créé avec la couleur de l’entête.
  • J’ai donc tenté de remettre la couleur de la ligne à blanc, j’ai recopié la macro générée par Excel et j’ai un 1004 sur le .pattern
Sub inserer_ligne_Année()

Call Initialisation_Variables_Public

Call Deverrouiller_feuille(Onglet_Année)

With Sheets("Année")

colent = Range("Année[[#Headers]]").Row 'no de ligne de l'entete

Range("Année").Rows(1).Select 'se positionner sur la 1ere ligne du tableau structure Année

Selection.ListObject.ListRows.Add (1)

Range("Année").Rows(1).Select

'With Selection.Interior

Range("A3").Interior.Pattern = xlNone

.TintAndShade = 0

.PatternTintAndShade = 0

End With

End With

Call Verouiller_feuille(Onglet_Année)

End Sub

  • Si j’utilise pour la creation de la ligne Selection.EntireRow.Insert CopyOrigin:=xlFormatFromRightOrBelow
  • Les mises en forme conditionnelles des lignes du tableau se retrouvent dans l’entête !

Merci,
 

Dranreb

XLDnaute Barbatruc
Non, je ne crois pas. J'ai plutôt l'impression qu'il ne fait que subir le même bogue que ma macro, dû à ce que la plage couverte par le tableau serait dans un état bancal suite à des formats surajoutés à certains moments de son histoire …
Comme dit, à votre place je réinstallerais le tableau proprement, surtout si l'effet de la manœuvre ne s’avérait pas pérenne, mais j'ignore ce qu'il en est.
Un .ListRows.Add(1) a le même effet qu'un clic droit sur une cellule de la ligne 1, Insérer, Lignes de tableau en haut
Or auparavant cette action reproduisait aussi indument la couleur de l'entête, mais plus maintenant. Alors pourvu que ça dure !
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir @mapomme.
Non, j'avais essayé aussi, ça ne marchait pas non plus sur son tableau à mon avis corrompu quelque part.
À noter en passant: on peut récupérer le ListRow ajouté: Set LRw = LOt.ListRows.Add(1)
Ou même, et je le fais souvent, noter la plage qu'il couvre, parce que c'est souvent de ça qu'on a plutôt besoin aussitôt après: Set Rng = LOt.ListRows.Add(1).Range
 
Dernière édition:

Cheyenne_2021

XLDnaute Junior
@Dranreb : La routine de reparation ne focntionne pas. Il repere bien qu'une couleur n'est pas "conforme" mais ne corrige rien. J'avais donc abandonné Le ListObject.Add(1).
@mapomme : En dernier chance j'ai essaye votre routine. Je l'ai intégré à ma macro, en tout début et ça a l'air de fonctionner ! Je vais faire d'autres tests pour confirmer .
Merci à tous les deux !
 

Dranreb

XLDnaute Barbatruc
Je l'ai toujours dit qu'elle ne fonctionnait pas dans l'état anormal de votre tableau. J'avais dit que de mettre 'Aucune couleur' à toute la plage couverte par le tableau manuellement avait réparé la chose et qu'ensuite un ListObject.ListRows.Add(1), qu'il faut de toute façon garder, ne reprenait plus la couleur de l'entête. Mais bien sûr, comme je n'avait pu identifier sa cause, je ne pouvait être sûr que c'est réparé à titre définitif.
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 198
Membres
112 681
dernier inscrit
romain38