Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
si feuilGraph1 est de type chart, je ne vois pas comment il est possible de
faire référence à une plage de cellules.
A+bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
si feuilGraph1 est de type chart, je ne vois pas comment il est possible de
faire référence à une plage de cellules.
A+
bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
si feuilGraph1 est de type chart, je ne vois pas comment il est possible de
faire référence à une plage de cellules.
A+bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
Bonjour,
Juste 2 précisions :
- Dans Each sh in sheets, il faut être conscient que sans qualificatif,
Sheets représente les feuilles du classeur actif, ce qui peut conduire à
des surprises, si le classeur actif n'est pas celui auquel on s'attend.
Il est plus prudent d'écrire
For Each sh in ThisWorbook.Sheets
ou
For Each sh in Worbooks("Toto.xls").Sheets
ou
For Each sh in w.Sheets
où w représente un classeur
- Bien souvent, on n'a besoin de ne parcourir qu'un type de feuille du
classeur, les feuilles de calcul et pas les feuilles graphiques, par
exemple, auquel cas déclarer la variable de boucle et utiliser la
collection correspondante évite de mauvaises surprises si le classeur
contient des feuilles d'un autre type que celui auquel on s'intérersse :
Dim w as Worksheet
For each w in ThisWorbook.Workheets
...
Next w
permet d'explorer les feuilles de calcul sans devoir se préoccuper le
l'existence éventuelles de feuilles d'un autre type.
Personnellement je préconise de ne faire appel à la collection Sheets,
QUE si on a réellement besoin de traiter toutes les feuilles. Si ce
n'est pas le cas, il vaut mieux utiliser la collection correspondant au
type de feuille à parcourir, Worksheets ou Charts, selon le cas.bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
--
Cordialement,
Michel Gaboly
www.gaboly.com
Bonjour,
Juste 2 précisions :
- Dans Each sh in sheets, il faut être conscient que sans qualificatif,
Sheets représente les feuilles du classeur actif, ce qui peut conduire à
des surprises, si le classeur actif n'est pas celui auquel on s'attend.
Il est plus prudent d'écrire
For Each sh in ThisWorbook.Sheets
ou
For Each sh in Worbooks("Toto.xls").Sheets
ou
For Each sh in w.Sheets
où w représente un classeur
- Bien souvent, on n'a besoin de ne parcourir qu'un type de feuille du
classeur, les feuilles de calcul et pas les feuilles graphiques, par
exemple, auquel cas déclarer la variable de boucle et utiliser la
collection correspondante évite de mauvaises surprises si le classeur
contient des feuilles d'un autre type que celui auquel on s'intérersse :
Dim w as Worksheet
For each w in ThisWorbook.Workheets
...
Next w
permet d'explorer les feuilles de calcul sans devoir se préoccuper le
l'existence éventuelles de feuilles d'un autre type.
Personnellement je préconise de ne faire appel à la collection Sheets,
QUE si on a réellement besoin de traiter toutes les feuilles. Si ce
n'est pas le cas, il vaut mieux utiliser la collection correspondant au
type de feuille à parcourir, Worksheets ou Charts, selon le cas.
bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
--
Cordialement,
Michel Gaboly
www.gaboly.com
Bonjour,
Juste 2 précisions :
- Dans Each sh in sheets, il faut être conscient que sans qualificatif,
Sheets représente les feuilles du classeur actif, ce qui peut conduire à
des surprises, si le classeur actif n'est pas celui auquel on s'attend.
Il est plus prudent d'écrire
For Each sh in ThisWorbook.Sheets
ou
For Each sh in Worbooks("Toto.xls").Sheets
ou
For Each sh in w.Sheets
où w représente un classeur
- Bien souvent, on n'a besoin de ne parcourir qu'un type de feuille du
classeur, les feuilles de calcul et pas les feuilles graphiques, par
exemple, auquel cas déclarer la variable de boucle et utiliser la
collection correspondante évite de mauvaises surprises si le classeur
contient des feuilles d'un autre type que celui auquel on s'intérersse :
Dim w as Worksheet
For each w in ThisWorbook.Workheets
...
Next w
permet d'explorer les feuilles de calcul sans devoir se préoccuper le
l'existence éventuelles de feuilles d'un autre type.
Personnellement je préconise de ne faire appel à la collection Sheets,
QUE si on a réellement besoin de traiter toutes les feuilles. Si ce
n'est pas le cas, il vaut mieux utiliser la collection correspondant au
type de feuille à parcourir, Worksheets ou Charts, selon le cas.bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est une
feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend les
feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille graphique
et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des boucles comme
ci- dessus à faire et que ton classeur ne contient pas qu'un seul type de
feuille, autant ne pas déclarer la variable de boucle ou alors il faut gerer
les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque fois
l'intégralité du texte ne sert qu'à alléger le code et le rendre + lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu veux
définir moy de type range, il faut écrire set moy þuilGraph1.Range("O11")
sauf si tu veux en obtenir la valeur bien sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
--
à+twinley
--
Cordialement,
Michel Gaboly
www.gaboly.com
Pourquoi pas :
moy = [[flux.xls]Graph1!O11]
AV
Pourquoi pas :
moy = [[flux.xls]Graph1!O11]
AV
Pourquoi pas :
moy = [[flux.xls]Graph1!O11]
AV
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une feuille ou
bien est ce mieux d'écrire Workbooks("flux.xls").Sheets("Graph1") à
chaque fois ?
merci pour l'aide
Re,
Effectivement, tu as raison ;-))
Sauf s'il cherche à nous induire en erreur ;-)) en ayant nommé "Graph1"
une feuille de calcul, parce qu'elle contient un ou plusieurs graphiques.
Auquel cas, "Graph1" serait un objet Worksheet et non Chart.si feuilGraph1 est de type chart, je ne vois pas comment il est
possible de faire référence à une plage de cellules.
A+bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est
une feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend
les feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille
graphique et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des
boucles comme ci- dessus à faire et que ton classeur ne contient pas
qu'un seul type de feuille, autant ne pas déclarer la variable de
boucle ou alors il faut gerer les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque
fois l'intégralité du texte ne sert qu'à alléger le code et le rendre
+ lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu
veux définir moy de type range, il faut écrire set moy
þuilGraph1.Range("O11") sauf si tu veux en obtenir la valeur bien
sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une
feuille ou bien est ce mieux d'écrire
Workbooks("flux.xls").Sheets("Graph1") à chaque fois ?
merci pour l'aide
--
à+twinley
Re,
Effectivement, tu as raison ;-))
Sauf s'il cherche à nous induire en erreur ;-)) en ayant nommé "Graph1"
une feuille de calcul, parce qu'elle contient un ou plusieurs graphiques.
Auquel cas, "Graph1" serait un objet Worksheet et non Chart.
si feuilGraph1 est de type chart, je ne vois pas comment il est
possible de faire référence à une plage de cellules.
A+
bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est
une feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend
les feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille
graphique et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des
boucles comme ci- dessus à faire et que ton classeur ne contient pas
qu'un seul type de feuille, autant ne pas déclarer la variable de
boucle ou alors il faut gerer les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque
fois l'intégralité du texte ne sert qu'à alléger le code et le rendre
+ lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu
veux définir moy de type range, il faut écrire set moy
þuilGraph1.Range("O11") sauf si tu veux en obtenir la valeur bien
sur.
A+
Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une
feuille ou bien est ce mieux d'écrire
Workbooks("flux.xls").Sheets("Graph1") à chaque fois ?
merci pour l'aide
--
à+twinley
Re,
Effectivement, tu as raison ;-))
Sauf s'il cherche à nous induire en erreur ;-)) en ayant nommé "Graph1"
une feuille de calcul, parce qu'elle contient un ou plusieurs graphiques.
Auquel cas, "Graph1" serait un objet Worksheet et non Chart.si feuilGraph1 est de type chart, je ne vois pas comment il est
possible de faire référence à une plage de cellules.
A+bonjour,
si feuilGraph1 est une feuille graphique, c'est As Chart. Si c'est
une feuille de calcul c'est As worksheet.
Il n' y a pas d'objet sheet mais une collection sheets qui comprend
les feuilles de type worksheet et de type Chart.
En conséquence, dans le cas où p. ton classeur contient 1 feuille
graphique et une feuille de calcul, une boucle comme celle ci fonctionne
for each sh in sheets
msgbox typename(sh)
next
mais la meme boucle avec Dim sh as Chart ou dim sh as worksheet en
déclaration ne passe pas la barre du débogger.Donc si tu as des
boucles comme ci- dessus à faire et que ton classeur ne contient pas
qu'un seul type de feuille, autant ne pas déclarer la variable de
boucle ou alors il faut gerer les erreurs potentielles.
Enfin écrire uen fois pour toute dans ton programme set wsh
=Workbooks("flux.xls").Sheets("Graph1") plutot que d'écrire à chaque
fois l'intégralité du texte ne sert qu'à alléger le code et le rendre
+ lisible.
De plus , tu ne peux pas écrire moy = feuilGraph1.Range("O11") si tu
veux définir moy de type range, il faut écrire set moy
þuilGraph1.Range("O11") sauf si tu veux en obtenir la valeur bien
sur.
A+Bonjour,
comment dois-je déclarer feuilGraph1 qui est un "raccourci" pour
désigner la feuille d'un classeur ?
Dim feuilGraph1 As ?
Set feuilGraph1 = Workbooks("flux.xls").Sheets("Graph1")
moy = feuilGraph1.Range("O11")
si je met Dim feuilGraph1 As Sheets, il bute sur range("O11").
Autre question, est-ce une façon performante de manipuler une
feuille ou bien est ce mieux d'écrire
Workbooks("flux.xls").Sheets("Graph1") à chaque fois ?
merci pour l'aide
--
à+twinley