Y a-t-il un bug avec "UsedRange.Rows.Count"

Guy_M

XLDnaute Occasionnel
Bonjour,

J'ai écrit cette boucle :
VB:
For Each Feuille In ActiveWorkbook.Worksheets 'Parcourt toutes les feuilles
   If Feuille.Name <> PremiereFeuille.Name Then 'copie le contenu de chaque feuille sauf la première
       Feuille.UsedRange.Copy
        PremiereFeuille.Paste Destination:=PremiereFeuille.Range("A" & PremiereFeuille.UsedRange.Rows.Count + 1)
    End If
Next

Après certaines copies (une feuille avec des images et une cellule fusionnée), PremiereFeuille.UsedRange.Rows.Count ne retourne pas la bonne valeur. Avez-vous rencontré ce problème ?

Par avance, je vous remercie de vos réponses.

A bientôt
Guy Marty
PS : pour contourner ce problème j'ai remplacé "UsedRange.Rows.Count" par "UsedRange.SpecialCells(xlCellTypeLastCell).Row"
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour,

J'ai écrit cette boucle :
VB:
For Each Feuille In ActiveWorkbook.Worksheets 'Parcourt toutes les feuilles
   If Feuille.Name <> PremiereFeuille.Name Then 'copie le contenu de chaque feuille sauf la première
       Feuille.UsedRange.Copy
        PremiereFeuille.Paste Destination:=PremiereFeuille.Range("A" & PremiereFeuille.UsedRange.Rows.Count + 1)
    End If
Next

Après certaines copies (une feuille avec des images et une cellule fusionnée), PremiereFeuille.UsedRange.Rows.Count ne retourne pas la bonne valeur. Avez-vous rencontré ce problème ?

Par avance, je vous remercie de vos réponses.

A bientôt
Guy Marty
PS : pour contourner ce problème j'ai remplacé "UsedRange.Rows.Count" par "UsedRange.SpecialCells(xlCellTypeLastCell).Row"

UsedRange n'est rafraîchi que lorsque du Workbook.Save
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour Modeste geedee,
Donc cela veut-il dire que "Feuille.UsedRange.Copy" ne copie pas nécessairement toutes les cellules de la feuille ?
A bientôt
Guy
Je ne saurai, l'affirmer... ???
Mais "Bydesign" Excel se contente-t-il dans ce cas de ne copier que la plage dans laquelle une cellule a été modifiée ???

à tester :
upload_2017-4-4_20-45-16.png

sur une feuille vierge accéder à la cellule IV12345
1 - saisir un texte quelconque, effacer ce texte
UsedRange .Select
noter le résultat
Workbook.save
UsedRange.select
noter le résultat

2 - saisir un texte quelconque, Changer la couleur de police, effacer ce texte
UsedRange .Select
noter le résultat
Workbook.save
UsedRange.select
noter le résultat
Supprimer la cellule
Workbook.save
Usedrange.select
Noter le résultat