OVH Cloud OVH Cloud

Constantes variables...

4 réponses
Avatar
Patrick BASTARD
Bonjour à tous.

Mon classeur comporte 5 onglets fixes, plus 1 par jour du mois.

Dim StrArray(1 To 28) As String '******************1 to 28 si 28 jours,
mais le nombre peut changer entre 28 et 31
Dim Sh As Worksheet
Dim i As Byte

i = 1
For Each Sh In ThisWorkbook.Sheets
......
Pour n'agir que sur les onglets des jours, j'ai essayé :

Dim Sc As Byte
Sc = Sheets.Count - 5
Dim StrArray(1 To Sc) As String
Mais j'ai un message d'erreur car SC doit être une constante.

Après maintes recherches, fier d'avoir trouvé la déclaration d'une
constante, j'ai laborieusement pondu :

Sub selectionne()
Const Sc As Byte = Sheets.Count - 5
Dim StrArray(1 To Sc) As String

Mais pas mieux...
Sheets;count-5 étant une variable n'est pas accepté
Je tourne en rond.
:-(

Un p'tit coup d'pouce, siouplait ?

Merci d'avance.

--
Bien cordialement,
P. Bastard

4 réponses

Avatar
MichDenis
Bonjour Patrick,

Je ne suis pas certain sur ce qu'est ta demande !

Mais pour définir ta variable tableau.

Dim SrArray() as string et utiliser un redim au moment où tu as évalué le nombre de feuilles concernées dans ta
procédure.

Dim Nb As Integer
Dim T() As String


Nb = Sheets.Count - 5
ReDim T(1 To Nb)

P.S. Nb doit être plus grand que >= 1


Salutations!





"Patrick BASTARD" a écrit dans le message de news:
%
Bonjour à tous.

Mon classeur comporte 5 onglets fixes, plus 1 par jour du mois.

Dim StrArray(1 To 28) As String '******************1 to 28 si 28 jours,
mais le nombre peut changer entre 28 et 31
Dim Sh As Worksheet
Dim i As Byte

i = 1
For Each Sh In ThisWorkbook.Sheets
......
Pour n'agir que sur les onglets des jours, j'ai essayé :

Dim Sc As Byte
Sc = Sheets.Count - 5
Dim StrArray(1 To Sc) As String
Mais j'ai un message d'erreur car SC doit être une constante.

Après maintes recherches, fier d'avoir trouvé la déclaration d'une
constante, j'ai laborieusement pondu :

Sub selectionne()
Const Sc As Byte = Sheets.Count - 5
Dim StrArray(1 To Sc) As String

Mais pas mieux...
Sheets;count-5 étant une variable n'est pas accepté
Je tourne en rond.
:-(

Un p'tit coup d'pouce, siouplait ?

Merci d'avance.

--
Bien cordialement,
P. Bastard
Avatar
Ellimac
Bonjour,

En admettant que seuls les onglets coorespondant aux jours
du mois soient numériques :

For each f in ActiveWorkbook.Sheets
If Isnumeric(f.name) Then
...
End If
Next

Camille

-----Message d'origine-----
Bonjour à tous.

Mon classeur comporte 5 onglets fixes, plus 1 par jour du
mois.


Dim StrArray(1 To 28) As String '******************1
to 28 si 28 jours,

mais le nombre peut changer entre 28 et 31
Dim Sh As Worksheet
Dim i As Byte

i = 1
For Each Sh In ThisWorkbook.Sheets
.......
Pour n'agir que sur les onglets des jours, j'ai essayé :

Dim Sc As Byte
Sc = Sheets.Count - 5
Dim StrArray(1 To Sc) As String
Mais j'ai un message d'erreur car SC doit être une
constante.


Après maintes recherches, fier d'avoir trouvé la
déclaration d'une

constante, j'ai laborieusement pondu :

Sub selectionne()
Const Sc As Byte = Sheets.Count - 5
Dim StrArray(1 To Sc) As String

Mais pas mieux...
Sheets;count-5 étant une variable n'est pas accepté
Je tourne en rond.
:-(

Un p'tit coup d'pouce, siouplait ?

Merci d'avance.

--
Bien cordialement,
P. Bastard


.



Avatar
Patrick BASTARD
Bonjour, *Denis*


Si la question n'était pas claire, la réponse, elle, l'était.
Pile dans le mille.
;-)

Merci infiniment.

--
Bien cordialement,
P. Bastard


Mais pour définir ta variable tableau.

Dim SrArray() as string et utiliser un redim au moment où tu as
évalué le nombre de feuilles concernées dans ta procédure.

Dim Nb As Integer
Dim T() As String


Nb = Sheets.Count - 5
ReDim T(1 To Nb)

P.S. Nb doit être plus grand que >= 1


Salutations!





"Patrick BASTARD" a écrit dans
le message de news: %
Bonjour à tous.

Mon classeur comporte 5 onglets fixes, plus 1 par jour du mois.

Dim StrArray(1 To 28) As String '******************1 to 28 si 28
jours,
mais le nombre peut changer entre 28 et 31
Dim Sh As Worksheet
Dim i As Byte

i = 1
For Each Sh In ThisWorkbook.Sheets
......
Pour n'agir que sur les onglets des jours, j'ai essayé :

Dim Sc As Byte
Sc = Sheets.Count - 5
Dim StrArray(1 To Sc) As String
Mais j'ai un message d'erreur car SC doit être une constante.

Après maintes recherches, fier d'avoir trouvé la déclaration d'une
constante, j'ai laborieusement pondu :

Sub selectionne()
Const Sc As Byte = Sheets.Count - 5
Dim StrArray(1 To Sc) As String

Mais pas mieux...
Sheets;count-5 étant une variable n'est pas accepté
Je tourne en rond.
:-(

Un p'tit coup d'pouce, siouplait ?

Merci d'avance.


Avatar
Patrick BASTARD
Bonjour, *Camille*
J'ai lu ton post 23a401c512a9$4a6fefb0$
avec le plus grand intéret :

Hélas mes onglets sont du format 01.02.05, les slash étant interdits pour
les noms de feuilles.

Mais je ne t'en remercie pas moins.

Mon problème est résolu avec la réponse de Denis.


--
Bien cordialement,
P. Bastard

Bonjour,

En admettant que seuls les onglets coorespondant aux jours
du mois soient numériques :

For each f in ActiveWorkbook.Sheets
If Isnumeric(f.name) Then
...
End If
Next

Camille

-----Message d'origine-----
Bonjour à tous.

Mon classeur comporte 5 onglets fixes, plus 1 par jour du mois.

Dim StrArray(1 To 28) As String '******************1 to 28 si 28
jours, mais le nombre peut changer entre 28 et 31
Dim Sh As Worksheet
Dim i As Byte

i = 1
For Each Sh In ThisWorkbook.Sheets
.......
Pour n'agir que sur les onglets des jours, j'ai essayé :

Dim Sc As Byte
Sc = Sheets.Count - 5
Dim StrArray(1 To Sc) As String
Mais j'ai un message d'erreur car SC doit être une constante.

Après maintes recherches, fier d'avoir trouvé la déclaration d'une
constante, j'ai laborieusement pondu :

Sub selectionne()
Const Sc As Byte = Sheets.Count - 5
Dim StrArray(1 To Sc) As String

Mais pas mieux...
Sheets;count-5 étant une variable n'est pas accepté
Je tourne en rond.
:-(

Un p'tit coup d'pouce, siouplait ?

Merci d'avance.

--
Bien cordialement,
P. Bastard


.