J'ai un problème de compréhension du concept des cellules visibles vu par
Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules
allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1.
Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For I = 1 To plagevisible.Count
plagevisible(I).Select
MsgBox plagevisible(I).Address
Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles
seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules
visibles par plagevisible.count mais pas les bonnes adresses. En fait
j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière
adresse étant celle de la cellule correspondant à
plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de
A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For Each c In plagevisible
c.Select
MsgBox c.Address
Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre
de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
michdenis
Bonjour anonymousA,
Je t'invite à lire sur le concept de "Areas" dans l'aide d'excel.
En fait, ta sélection suite à ton filtre n'est pas nécessairement une plage continue. Comme il y a des lignes vides, tu te retrouves avec plusieurs "Areas" dans l'ensemble de ta plage. Tu dois donc boucler sur l'ensemble des "Areas"
Voici un petit exemple :
Set Rg = Range("_FilterDatabase).SpecialCells(xlCellTypeVisible)
Are = Chacune des plages discontinues C = Chacune des cellules dans chacune des plages discontinues For each Are in rg For each C In are
Next Next
Salutations!
"anonymousA" a écrit dans le message de news:
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1. Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For I = 1 To plagevisible.Count plagevisible(I).Select MsgBox plagevisible(I).Address Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules visibles par plagevisible.count mais pas les bonnes adresses. En fait j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière adresse étant celle de la cellule correspondant à plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For Each c In plagevisible c.Select MsgBox c.Address Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
Merci d'avance.
Bonjour anonymousA,
Je t'invite à lire sur le concept de "Areas" dans l'aide d'excel.
En fait, ta sélection suite à ton filtre n'est pas nécessairement une plage continue. Comme il y a des lignes vides, tu
te retrouves avec plusieurs "Areas" dans l'ensemble de ta plage. Tu dois donc boucler sur l'ensemble des "Areas"
Voici un petit exemple :
Set Rg = Range("_FilterDatabase).SpecialCells(xlCellTypeVisible)
Are = Chacune des plages discontinues
C = Chacune des cellules dans chacune des plages discontinues
For each Are in rg
For each C In are
Next
Next
Salutations!
"anonymousA" <anonymousA@discussions.microsoft.com> a écrit dans le message de news:
C34F8875-6036-44FC-9E89-72AF8072FBA7@microsoft.com...
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par
Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules
allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1.
Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For I = 1 To plagevisible.Count
plagevisible(I).Select
MsgBox plagevisible(I).Address
Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles
seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules
visibles par plagevisible.count mais pas les bonnes adresses. En fait
j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière
adresse étant celle de la cellule correspondant à
plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de
A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For Each c In plagevisible
c.Select
MsgBox c.Address
Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre
de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
Je t'invite à lire sur le concept de "Areas" dans l'aide d'excel.
En fait, ta sélection suite à ton filtre n'est pas nécessairement une plage continue. Comme il y a des lignes vides, tu te retrouves avec plusieurs "Areas" dans l'ensemble de ta plage. Tu dois donc boucler sur l'ensemble des "Areas"
Voici un petit exemple :
Set Rg = Range("_FilterDatabase).SpecialCells(xlCellTypeVisible)
Are = Chacune des plages discontinues C = Chacune des cellules dans chacune des plages discontinues For each Are in rg For each C In are
Next Next
Salutations!
"anonymousA" a écrit dans le message de news:
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1. Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For I = 1 To plagevisible.Count plagevisible(I).Select MsgBox plagevisible(I).Address Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules visibles par plagevisible.count mais pas les bonnes adresses. En fait j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière adresse étant celle de la cellule correspondant à plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For Each c In plagevisible c.Select MsgBox c.Address Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
Merci d'avance.
docm
Bonjour anonymousA.
Seule la formulation For Each c In plagevisible fait référence uniquement aux cellules faisant partie de plagevisible.
Les autres formulations font référence à toute la feuille. La formulation plagevisible.range("E1").address fait référence à toute la feuille, mais en considérant que la cellule "A1" correspond à la première cellule de plagevisible et non pas à la cellule "A1" de la feuille.
La formulation plagevisible(3000).address fait référence à toute la feuille mais en ne considérant que les colonnes faisant partie de plagevisible.
Sous toutes réserves.
"anonymousA" wrote in message news:
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1. Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For I = 1 To plagevisible.Count plagevisible(I).Select MsgBox plagevisible(I).Address Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules visibles par plagevisible.count mais pas les bonnes adresses. En fait j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière adresse étant celle de la cellule correspondant à plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For Each c In plagevisible c.Select MsgBox c.Address Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre
de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
Merci d'avance.
Bonjour anonymousA.
Seule la formulation
For Each c In plagevisible
fait référence uniquement aux cellules faisant partie de plagevisible.
Les autres formulations font référence à toute la feuille.
La formulation plagevisible.range("E1").address
fait référence à toute la feuille, mais en considérant que la cellule "A1"
correspond à la première cellule de plagevisible et non pas à la cellule
"A1" de la feuille.
La formulation plagevisible(3000).address
fait référence à toute la feuille mais en ne considérant que les colonnes
faisant partie de plagevisible.
Sous toutes réserves.
"anonymousA" <anonymousA@discussions.microsoft.com> wrote in message
news:C34F8875-6036-44FC-9E89-72AF8072FBA7@microsoft.com...
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par
Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules
allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1.
Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For I = 1 To plagevisible.Count
plagevisible(I).Select
MsgBox plagevisible(I).Address
Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles
seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules
visibles par plagevisible.count mais pas les bonnes adresses. En fait
j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière
adresse étant celle de la cellule correspondant à
plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de
A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For Each c In plagevisible
c.Select
MsgBox c.Address
Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon
nombre
de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de
traitement ?
Seule la formulation For Each c In plagevisible fait référence uniquement aux cellules faisant partie de plagevisible.
Les autres formulations font référence à toute la feuille. La formulation plagevisible.range("E1").address fait référence à toute la feuille, mais en considérant que la cellule "A1" correspond à la première cellule de plagevisible et non pas à la cellule "A1" de la feuille.
La formulation plagevisible(3000).address fait référence à toute la feuille mais en ne considérant que les colonnes faisant partie de plagevisible.
Sous toutes réserves.
"anonymousA" wrote in message news:
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1. Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For I = 1 To plagevisible.Count plagevisible(I).Select MsgBox plagevisible(I).Address Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules visibles par plagevisible.count mais pas les bonnes adresses. En fait j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière adresse étant celle de la cellule correspondant à plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For Each c In plagevisible c.Select MsgBox c.Address Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre
de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
Merci d'avance.
anonymousA
je vous remercie tous les 2 de votre réponse. Et j'en profite pour faire un réponse commune.
Pour mich denis, je vois bien ce que tu entends quand tu parles d'Areas et suis entièrement d'accord sur l'aspect non contigu des plages de cellules. Ceci dit , dans ce cas , comment expliquer que la procédure for each c in plagevisible fonctionne (j'ai essayé pour voir) sans jamais faire mention d'Areas ?
Pour docm, je n'ai pas réussi à reproduire p.e plagevisible.range("E1").address car VBA se plante en raison de l'incompatibilité de plagevisible avec la propriété .range.adress. Par ailleurs quand je la déclare, la définition de plagevisible fait bien référence aux seules cellules visibles de la plage (A1:C17) non ?
Merci de vos réponses
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1. Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For I = 1 To plagevisible.Count plagevisible(I).Select MsgBox plagevisible(I).Address Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules visibles par plagevisible.count mais pas les bonnes adresses. En fait j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière adresse étant celle de la cellule correspondant à plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For Each c In plagevisible c.Select MsgBox c.Address Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
Merci d'avance.
je vous remercie tous les 2 de votre réponse. Et j'en profite pour faire un
réponse commune.
Pour mich denis, je vois bien ce que tu entends quand tu parles d'Areas et
suis entièrement d'accord sur l'aspect non contigu des plages de cellules.
Ceci dit , dans ce cas , comment expliquer que la procédure for each c in
plagevisible fonctionne (j'ai essayé pour voir) sans jamais faire mention
d'Areas ?
Pour docm, je n'ai pas réussi à reproduire p.e
plagevisible.range("E1").address car VBA se plante en raison de
l'incompatibilité de plagevisible avec la propriété .range.adress.
Par ailleurs quand je la déclare, la définition de plagevisible fait bien
référence aux seules cellules visibles de la plage (A1:C17) non ?
Merci de vos réponses
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par
Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules
allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1.
Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For I = 1 To plagevisible.Count
plagevisible(I).Select
MsgBox plagevisible(I).Address
Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles
seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules
visibles par plagevisible.count mais pas les bonnes adresses. En fait
j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière
adresse étant celle de la cellule correspondant à
plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de
A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For Each c In plagevisible
c.Select
MsgBox c.Address
Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre
de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
je vous remercie tous les 2 de votre réponse. Et j'en profite pour faire un réponse commune.
Pour mich denis, je vois bien ce que tu entends quand tu parles d'Areas et suis entièrement d'accord sur l'aspect non contigu des plages de cellules. Ceci dit , dans ce cas , comment expliquer que la procédure for each c in plagevisible fonctionne (j'ai essayé pour voir) sans jamais faire mention d'Areas ?
Pour docm, je n'ai pas réussi à reproduire p.e plagevisible.range("E1").address car VBA se plante en raison de l'incompatibilité de plagevisible avec la propriété .range.adress. Par ailleurs quand je la déclare, la définition de plagevisible fait bien référence aux seules cellules visibles de la plage (A1:C17) non ?
Merci de vos réponses
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1. Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For I = 1 To plagevisible.Count plagevisible(I).Select MsgBox plagevisible(I).Address Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules visibles par plagevisible.count mais pas les bonnes adresses. En fait j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière adresse étant celle de la cellule correspondant à plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For Each c In plagevisible c.Select MsgBox c.Address Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
Merci d'avance.
docm
Pour docm, je n'ai pas réussi à reproduire p.e plagevisible.range("E1").address car VBA se plante en raison de l'incompatibilité de plagevisible avec la propriété .range.adress.
address prend s'écrit avec 2 "d" en anglais.
Par ailleurs quand je la déclare, la définition de plagevisible fait bien référence aux seules cellules visibles de la plage (A1:C17) non ?
Relire mes explications qui illustrent que plagevisible fait référence à plus que les cellules visibles, selon la formulation utilisée.
La syntaxe suivante ne cause aucune erreur chez moi:
Sub tt3() Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) For I = 1 To plagevisible.Count a = plagevisible(I).Address b = plagevisible.Range("E1").Address Next
End Sub
Pour docm, je n'ai pas réussi à reproduire p.e
plagevisible.range("E1").address car VBA se plante en raison de
l'incompatibilité de plagevisible avec la propriété .range.adress.
address prend s'écrit avec 2 "d" en anglais.
Par ailleurs quand je la déclare, la définition de plagevisible fait bien
référence aux seules cellules visibles de la plage (A1:C17) non ?
Relire mes explications qui illustrent que plagevisible fait référence à
plus que les cellules visibles, selon la formulation utilisée.
La syntaxe suivante ne cause aucune erreur chez moi:
Sub tt3()
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
For I = 1 To plagevisible.Count
a = plagevisible(I).Address
b = plagevisible.Range("E1").Address
Next
Pour docm, je n'ai pas réussi à reproduire p.e plagevisible.range("E1").address car VBA se plante en raison de l'incompatibilité de plagevisible avec la propriété .range.adress.
address prend s'écrit avec 2 "d" en anglais.
Par ailleurs quand je la déclare, la définition de plagevisible fait bien référence aux seules cellules visibles de la plage (A1:C17) non ?
Relire mes explications qui illustrent que plagevisible fait référence à plus que les cellules visibles, selon la formulation utilisée.
La syntaxe suivante ne cause aucune erreur chez moi:
Sub tt3() Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) For I = 1 To plagevisible.Count a = plagevisible(I).Address b = plagevisible.Range("E1").Address Next
End Sub
anonymousA
oups, j'ai effectivement raté un "d". j'ai essayé ta procédure. elle donne le résultat effectivement que plagevisible contient autre chose que les cellulles visibles ce que j'avais bien constaté mais que je ne m'explique pas car plagevisible.count donne toujours le bon nombre de cellules visibles. En te relisant attentivement, je ne suis pas sur d'avoir bien compris ton argumentation dans le message précédent. Un peu d'aide est le bienvenu. Merci encore
Pour docm, je n'ai pas réussi à reproduire p.e plagevisible.range("E1").address car VBA se plante en raison de l'incompatibilité de plagevisible avec la propriété .range.adress.
address prend s'écrit avec 2 "d" en anglais.
Par ailleurs quand je la déclare, la définition de plagevisible fait bien référence aux seules cellules visibles de la plage (A1:C17) non ?
Relire mes explications qui illustrent que plagevisible fait référence à plus que les cellules visibles, selon la formulation utilisée.
La syntaxe suivante ne cause aucune erreur chez moi:
Sub tt3() Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) For I = 1 To plagevisible.Count a = plagevisible(I).Address b = plagevisible.Range("E1").Address Next
End Sub
oups, j'ai effectivement raté un "d".
j'ai essayé ta procédure.
elle donne le résultat effectivement que plagevisible contient autre chose
que les cellulles visibles ce que j'avais bien constaté mais que je ne
m'explique pas car plagevisible.count donne toujours le bon nombre de
cellules visibles.
En te relisant attentivement, je ne suis pas sur d'avoir bien compris ton
argumentation dans le message précédent.
Un peu d'aide est le bienvenu. Merci encore
Pour docm, je n'ai pas réussi à reproduire p.e
plagevisible.range("E1").address car VBA se plante en raison de
l'incompatibilité de plagevisible avec la propriété .range.adress.
address prend s'écrit avec 2 "d" en anglais.
Par ailleurs quand je la déclare, la définition de plagevisible fait bien
référence aux seules cellules visibles de la plage (A1:C17) non ?
Relire mes explications qui illustrent que plagevisible fait référence à
plus que les cellules visibles, selon la formulation utilisée.
La syntaxe suivante ne cause aucune erreur chez moi:
Sub tt3()
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
For I = 1 To plagevisible.Count
a = plagevisible(I).Address
b = plagevisible.Range("E1").Address
Next
oups, j'ai effectivement raté un "d". j'ai essayé ta procédure. elle donne le résultat effectivement que plagevisible contient autre chose que les cellulles visibles ce que j'avais bien constaté mais que je ne m'explique pas car plagevisible.count donne toujours le bon nombre de cellules visibles. En te relisant attentivement, je ne suis pas sur d'avoir bien compris ton argumentation dans le message précédent. Un peu d'aide est le bienvenu. Merci encore
Pour docm, je n'ai pas réussi à reproduire p.e plagevisible.range("E1").address car VBA se plante en raison de l'incompatibilité de plagevisible avec la propriété .range.adress.
address prend s'écrit avec 2 "d" en anglais.
Par ailleurs quand je la déclare, la définition de plagevisible fait bien référence aux seules cellules visibles de la plage (A1:C17) non ?
Relire mes explications qui illustrent que plagevisible fait référence à plus que les cellules visibles, selon la formulation utilisée.
La syntaxe suivante ne cause aucune erreur chez moi:
Sub tt3() Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) For I = 1 To plagevisible.Count a = plagevisible(I).Address b = plagevisible.Range("E1").Address Next
End Sub
anonymousA
Bon, ca y est j'ai trouvé.
En fait ca marche quand on utilise la procédure for each c in plagevisible sans se préoccuper des areas car par défaut Excel détecte qu'il y des plages non contigues et ne s'interesse du coup qu'aux cellules que ces fameuses plages contiennent. Par contre ca ne marche pas quand on fait référence à plagevisible (I) sans précaution car dans ce cas bien qu'Excel soit capable de détecter qu'il ya plusieurs zones non contigues et d'en donner le nombre de cellules les composant ( cf propriété précédénte), il n'est pas en mesure de séparer de la collection les cellules intermédiaires aux zones non contigues. Pour ce faire, il faut se mettre à utiliser les Areas et écrire la procédure suivante qui elle fonctionne
Dim plagevisible As Range
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count
For J = 1 To plagevisible.Areas.Count For I = 1 To plagevisible.Areas(J).Cells.Count MsgBox plagevisible.Areas(J).Cells(I).Address Next Next
Magie d'Excel !!.
Merci à tous pour vos contributions et à bientot.
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1. Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For I = 1 To plagevisible.Count plagevisible(I).Select MsgBox plagevisible(I).Address Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules visibles par plagevisible.count mais pas les bonnes adresses. En fait j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière adresse étant celle de la cellule correspondant à plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For Each c In plagevisible c.Select MsgBox c.Address Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
Merci d'avance.
Bon, ca y est j'ai trouvé.
En fait ca marche quand on utilise la procédure for each c in plagevisible
sans se préoccuper des areas car par défaut Excel détecte qu'il y des plages
non contigues et ne s'interesse du coup qu'aux cellules que ces fameuses
plages contiennent.
Par contre ca ne marche pas quand on fait référence à plagevisible (I) sans
précaution car dans ce cas bien qu'Excel soit capable de détecter qu'il ya
plusieurs zones non contigues et d'en donner le nombre de cellules les
composant ( cf propriété précédénte), il n'est pas en mesure de séparer de la
collection les cellules intermédiaires aux zones non contigues. Pour ce
faire, il faut se mettre à utiliser les Areas et écrire la procédure suivante
qui elle fonctionne
Dim plagevisible As Range
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For J = 1 To plagevisible.Areas.Count
For I = 1 To plagevisible.Areas(J).Cells.Count
MsgBox plagevisible.Areas(J).Cells(I).Address
Next
Next
Magie d'Excel !!.
Merci à tous pour vos contributions et à bientot.
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par
Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules
allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1.
Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For I = 1 To plagevisible.Count
plagevisible(I).Select
MsgBox plagevisible(I).Address
Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles
seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules
visibles par plagevisible.count mais pas les bonnes adresses. En fait
j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière
adresse étant celle de la cellule correspondant à
plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de
A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible)
MsgBox plagevisible.Count
For Each c In plagevisible
c.Select
MsgBox c.Address
Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre
de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?
En fait ca marche quand on utilise la procédure for each c in plagevisible sans se préoccuper des areas car par défaut Excel détecte qu'il y des plages non contigues et ne s'interesse du coup qu'aux cellules que ces fameuses plages contiennent. Par contre ca ne marche pas quand on fait référence à plagevisible (I) sans précaution car dans ce cas bien qu'Excel soit capable de détecter qu'il ya plusieurs zones non contigues et d'en donner le nombre de cellules les composant ( cf propriété précédénte), il n'est pas en mesure de séparer de la collection les cellules intermédiaires aux zones non contigues. Pour ce faire, il faut se mettre à utiliser les Areas et écrire la procédure suivante qui elle fonctionne
Dim plagevisible As Range
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count
For J = 1 To plagevisible.Areas.Count For I = 1 To plagevisible.Areas(J).Cells.Count MsgBox plagevisible.Areas(J).Cells(I).Address Next Next
Magie d'Excel !!.
Merci à tous pour vos contributions et à bientot.
Bonjour à tous,
J'ai un problème de compréhension du concept des cellules visibles vu par Excel.
En effet, supposons que ma plage à filtrer soit contenue dans les cellules allant de A1 à C17. Mes titres sont evidemment sur les cellules A1 à C1. Je fais un filtre automatique
Puis je déclare une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For I = 1 To plagevisible.Count plagevisible(I).Select MsgBox plagevisible(I).Address Next
Logiquement, je m'attends à obtenir les adresses des cellules visibles seulement. Eh bien pas du tout. j'obtiens bien le bon nombre de cellules visibles par plagevisible.count mais pas les bonnes adresses. En fait j'obtiens toutes les adresses allant de $A$1 jusqu'à $?$? cette dernière adresse étant celle de la cellule correspondant à plagevisible(plagevisible.count)
Si par contre, j'écris la procédure précédente en changeant le Range de A1:C17 en A2:C17, alors là ca marche.
Mais ce n'est pas fini. Si j'écris une procédure
Set plagevisible = Range("A1:C17").SpecialCells(xlCellTypeVisible) MsgBox plagevisible.Count For Each c In plagevisible c.Select MsgBox c.Address Next
alors là ça fonctionne dans tous les cas. J'obtiens à la fois le bon nombre de cellules visibles et les bonnes addresses.
L'un d'entre vous pourrait-il m'éclairer sur cette différence de traitement ?