à propos de la méthode SpecialCells de l'objet Range

Le
MichDenis
Bonjour,

Avez-vous déjà remarqué que cette méthode "SpecialCells" fonctionne seulement si la
plage visée se situe à l'intérieur d'une plage de cellules qu'excel appelle UsedRange

Exemple : Pour ceux qui veulent faire un petit test :

Sur une feuille totalement vide et vierge :
Worksheets("Feuil1").Range("A1:A100").SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 3

retourne message d'erreur : pas de cellules correspondantes c'est à dire qu'il ne trouve pas de
cellules vides

Si dans la même feuille vierge, on entre en A25 une donnée, la même ligne de code va colorer
seulement les cellules de A1:A24 les cellules au-delà de A25 n'existe tout simplement pas
pour excel

Si par ailleurs, vous avez entré une donnée en A65 et que vous l'avez toute suite effacée,
il va colorer les cellules vides jusqu'à A65.

En conséquence, la méthode SpecialCells fonctionne seulement à l'intérieur de l'objet UsedRange
d'une feuille.

Vous saviez vous ? Et personne n'en a jamais parlé ? Spécial!
L'aide d'excel sur le sujet ne mentionne rien sur le sujet !


Bonne journée.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
lSteph
Le #6978311
Bonjour MD,

Oui et du même coup en revanche, si l'on applique préalablement un
format,
à la plage concernée cela fonctionne

'...
With [a1:c1000]
.Borders.LineStyle = xlNone
.SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 3
End With

'....

@+

--
lSteph


On 12 juin, 12:20, "MichDenis"
Bonjour,

Avez-vous déjà remarqué que cette méthode "SpecialCells" fonctionn e seulement si la
plage visée se situe à l'intérieur d'une plage de cellules qu'excel appelle UsedRange

Exemple : Pour ceux qui veulent faire un petit test :

Sur une feuille totalement vide et vierge :
Worksheets("Feuil1").Range("A1:A100").SpecialCells(xlCellTypeBlanks).Inter ior.ColorIndex = 3

retourne message d'erreur : pas de cellules correspondantes... c'est à d ire qu'il ne trouve pas de
cellules vides...

Si dans la même feuille vierge, on entre en A25 une donnée, la même ligne de code va colorer
seulement les cellules de A1:A24 ... les cellules au-delà de A25 n'exist e tout simplement pas
pour excel

Si par ailleurs, vous avez entré une donnée en A65 et que vous l'avez toute suite effacée,
il va colorer les cellules vides jusqu'à A65.

En conséquence, la méthode SpecialCells fonctionne seulement à l'int érieur de l'objet UsedRange
d'une feuille.

Vous saviez vous ? Et personne n'en a jamais parlé ? Spécial...!
L'aide d'excel sur le sujet ne mentionne rien sur le sujet !

Bonne journée.


Jacky
Le #6977321
Bonjour Denis

Oui, en effet, encore une bizarrerie d'xl.

--
Salutations
JJ


"MichDenis"
Bonjour,

Avez-vous déjà remarqué que cette méthode "SpecialCells" fonctionne
seulement si la
plage visée se situe à l'intérieur d'une plage de cellules qu'excel
appelle UsedRange

Exemple : Pour ceux qui veulent faire un petit test :

Sur une feuille totalement vide et vierge :
Worksheets("Feuil1").Range("A1:A100").SpecialCells(xlCellTypeBlanks).Interior.ColorIndex
= 3

retourne message d'erreur : pas de cellules correspondantes... c'est à
dire qu'il ne trouve pas de
cellules vides...

Si dans la même feuille vierge, on entre en A25 une donnée, la même ligne
de code va colorer
seulement les cellules de A1:A24 ... les cellules au-delà de A25 n'existe
tout simplement pas
pour excel

Si par ailleurs, vous avez entré une donnée en A65 et que vous l'avez
toute suite effacée,
il va colorer les cellules vides jusqu'à A65.

En conséquence, la méthode SpecialCells fonctionne seulement à l'intérieur
de l'objet UsedRange
d'une feuille.

Vous saviez vous ? Et personne n'en a jamais parlé ? Spécial...!
L'aide d'excel sur le sujet ne mentionne rien sur le sujet !


Bonne journée.




Jacky
Le #6977311
Rapport indirect avec ceci ???
http://support.microsoft.com/kb/832293

--
Salutations
JJ


"Jacky"
Bonjour Denis

Oui, en effet, encore une bizarrerie d'xl.

--
Salutations
JJ


"MichDenis"
Bonjour,

Avez-vous déjà remarqué que cette méthode "SpecialCells" fonctionne
seulement si la
plage visée se situe à l'intérieur d'une plage de cellules qu'excel
appelle UsedRange

Exemple : Pour ceux qui veulent faire un petit test :

Sur une feuille totalement vide et vierge :
Worksheets("Feuil1").Range("A1:A100").SpecialCells(xlCellTypeBlanks).Interior.ColorIndex
= 3

retourne message d'erreur : pas de cellules correspondantes... c'est à
dire qu'il ne trouve pas de
cellules vides...

Si dans la même feuille vierge, on entre en A25 une donnée, la même ligne
de code va colorer
seulement les cellules de A1:A24 ... les cellules au-delà de A25 n'existe
tout simplement pas
pour excel

Si par ailleurs, vous avez entré une donnée en A65 et que vous l'avez
toute suite effacée,
il va colorer les cellules vides jusqu'à A65.

En conséquence, la méthode SpecialCells fonctionne seulement à
l'intérieur de l'objet UsedRange
d'une feuille.

Vous saviez vous ? Et personne n'en a jamais parlé ? Spécial...!
L'aide d'excel sur le sujet ne mentionne rien sur le sujet !


Bonne journée.








MichDenis
Le #6977301
bonjour lSteph

| Oui '....
*** et tu as lu ça où ? Une bande dessinée ? ;-))

OK pour les formats ! lorsqu'on a compris que la méthode specialcells
s'appliquait seulement à l'intérieur de ce qu'excel appelle UsedRange

Salutations.
MichDenis
Le #6977291
Bonjour Jacky

| Oui, en effet, encore une bizarrerie d'xl.


En principe, ça semble être logique : Si excel considère
une feuille vierge comme n'ayant aucune plage définie existante
il est difficile qu'il trouve ces cellules vides dans cette plage... tu suis ?

Cependant, l'aide d'excel tait ce rapprochement entre specialcells et
UsedRange...je suppose que c'est d'une telle trivialité qu'il n'a pas jugé
de nous aider à comprendre... si jamais c'est le but de l'aide !
;-))
Daniel.j
Le #6986821
Bonjour
Concernant ce point: (juste pour souligner cette bizarrerie...)
Si par ailleurs, vous avez entré une donnée en A65 et que vous l'avez toute
suite effacée,
'il va colorer les cellules vides jusqu'à A65.


En reinitialisant les cellules avec cette macro
Sub Réinit()
Dim LesCell As Worksheet
For Each LesCell In Worksheets
Dummy = LesCell.UsedRange(1)
Next LesCell
Worksheets("Feuil1").Range("A1:A100").SpecialCells(xlCellTypeBlanks).Interior.ColorIndex
= 3
End Sub
l'erreur se reproduit ..........

Daniel

"MichDenis" %

Bonjour Jacky

| Oui, en effet, encore une bizarrerie d'xl.


En principe, ça semble être logique : Si excel considère
une feuille vierge comme n'ayant aucune plage définie existante
il est difficile qu'il trouve ces cellules vides dans cette plage... tu
suis ?

Cependant, l'aide d'excel tait ce rapprochement entre specialcells et
UsedRange...je suppose que c'est d'une telle trivialité qu'il n'a pas jugé
de nous aider à comprendre... si jamais c'est le but de l'aide !
;-))




lSteph
Le #6988041
;o)) la réponse "Oui "
porte sur le "aviez vous remarqué.. et "oui" d'accord qu'il semble
bien s'agir bien du usedrange
"oui ", aussi d'accord que rien vu de précis dans l'aide, ni dans
les bandes dessinées!

le formatage bidon permet de contourner le souci.
On 12 juin, 12:52, "MichDenis"
bonjour lSteph

| Oui '....
*** et tu as lu ça où ? Une bande dessinée ? ;-))

OK pour les formats ! lorsqu'on a compris que la méthode specialcells
s'appliquait seulement à l'intérieur de ce qu'excel appelle UsedRange

Salutations.


"

MichDenis
Le #6989951
Ben sûr !

Quand une feuille est vierge,

Set rg = Feuil1.UsedRange
x = rg.Address
x = A1

Même si j'écris :
Feuil1.Range("A1").SpecialCells(xlCellTypeBlanks).Interior.ColorIndex =3
la ligne de code plante, car pour la méthode SpecialCells la feuille ne contient
aucune plage de cellules identifiables (pas d'objets range définis).

La méthode SpecialCells n'est applicable que sur une plage définie à
l'intérieur de l'objet "UsedRange"





"Daniel.j" Bonjour
Concernant ce point: (juste pour souligner cette bizarrerie...)
Si par ailleurs, vous avez entré une donnée en A65 et que vous l'avez toute
suite effacée,
'il va colorer les cellules vides jusqu'à A65.


En reinitialisant les cellules avec cette macro
Sub Réinit()
Dim LesCell As Worksheet
For Each LesCell In Worksheets
Dummy = LesCell.UsedRange(1)
Next LesCell
Worksheets("Feuil1").Range("A1:A100").SpecialCells(xlCellTypeBlanks).Interior.ColorIndex
= 3
End Sub
l'erreur se reproduit ..........

Daniel

"MichDenis" %

Bonjour Jacky

| Oui, en effet, encore une bizarrerie d'xl.


En principe, ça semble être logique : Si excel considère
une feuille vierge comme n'ayant aucune plage définie existante
il est difficile qu'il trouve ces cellules vides dans cette plage... tu
suis ?

Cependant, l'aide d'excel tait ce rapprochement entre specialcells et
UsedRange...je suppose que c'est d'une telle trivialité qu'il n'a pas jugé
de nous aider à comprendre... si jamais c'est le but de l'aide !
;-))




Fredo P
Le #6989891
| Oui, en effet, encore une bizarrerie d'xl.


En principe, ça semble être logique : Si excel considère
une feuille vierge comme n'ayant aucune plage définie existante
Je ne trouve pas logique lorsque dans un test similaire, en appliquant

seulement un format sur la cellule C20 (par ex), le test colore A1:A20 et
qu'ensuite après avoir supprimer les colonnes A:C le test persiste à colorer
A1:A20.

Modeste
Le #6990351
Bonsour® Fredo P avec ferveur ;o))) vous nous disiez :

En principe, ça semble être logique : Si excel considère
une feuille vierge comme n'ayant aucune plage définie existante
Je ne trouve pas logique lorsque dans un test similaire, en appliquant

seulement un format sur la cellule C20 (par ex), le test colore
A1:A20 et qu'ensuite après avoir supprimer les colonnes A:C le test
persiste à colorer A1:A20.


Vierge ou pas vierge ???
encore un pavé dans la cour à Rachida !!!!!
;o)))

un territoire vierge c'est un endroit ou la main de l'homme n'a jamais mis les pieds !!!
;o)))




--
--
@+
;o)))


Publicité
Poster une réponse
Anonyme