OVH Cloud OVH Cloud

Formule avec Variable

7 réponses
Avatar
Max
Bonjour,

J'essaie de faire une macro qui associe toutes les feuilles d'un classeur,
sauf la première en utilisant la fonction Array:

Sub AssocierFeuilles()
Dim nbFeuilles, n, numFeuille, X
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
numFeuille = n & ", "
X = X & numFeuille
Next
X = Left(X, Len(X) - 3)
MsgBox X
Sheets(Array(X)).Select
End Sub

(la ligne MsgBox X pour visualiser la variable X)

Pourquoi ça ne marche pas ?
Y a-t-il une autre manière pour arriver au même résultat ?

Merci pour toute suggestion.

Max

7 réponses

Avatar
Daniel
Bonjour.
Ta variable X est une variable string, elle n'est pas équivalente à une
suite d'arguments numériques 2 ,3 ,4...
Essaie plutôt :

Sub AssocierFeuilles()
Dim nbFeuilles, n, Tablo()
ReDim Tablo(0)
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
ReDim Preserve Tablo(n - 2)
Tablo(n - 2) = n
Next
Sheets(Tablo).Select
End Sub

Cordialement.
Daniel

"Max" a écrit dans le message de news:
%23qaxJ%23c%
Bonjour,

J'essaie de faire une macro qui associe toutes les feuilles d'un classeur,
sauf la première en utilisant la fonction Array:

Sub AssocierFeuilles()
Dim nbFeuilles, n, numFeuille, X
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
numFeuille = n & ", "
X = X & numFeuille
Next
X = Left(X, Len(X) - 3)
MsgBox X
Sheets(Array(X)).Select
End Sub

(la ligne MsgBox X pour visualiser la variable X)

Pourquoi ça ne marche pas ?
Y a-t-il une autre manière pour arriver au même résultat ?

Merci pour toute suggestion.

Max






Avatar
micdub
Bonjour,

Voici une solution semblable à celle proposée :

Sub AssocierFeuilles()
'
' Solution pour des feuilles nommées Feuil1, Feuil2, ...
' --------------------------------------------------------
Dim nbFeuilles, n, numFeuille

nbFeuilles = Sheets.Count

ReDim X(nbFeuilles - 1)

For n = 2 To nbFeuilles
numFeuille = "Feuil" & n
X(n - 1) = numFeuille
Next
Sheets((X)).Select
End Sub

Bien à vous - MicDub - http://users.skynet.be/micdub


Bonjour.
Ta variable X est une variable string, elle n'est pas équivalente à une
suite d'arguments numériques 2 ,3 ,4...
Essaie plutôt :

Sub AssocierFeuilles()
Dim nbFeuilles, n, Tablo()
ReDim Tablo(0)
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
ReDim Preserve Tablo(n - 2)
Tablo(n - 2) = n
Next
Sheets(Tablo).Select
End Sub

Cordialement.
Daniel

"Max" a écrit dans le message de news:
%23qaxJ%23c%
Bonjour,

J'essaie de faire une macro qui associe toutes les feuilles d'un classeur,
sauf la première en utilisant la fonction Array:

Sub AssocierFeuilles()
Dim nbFeuilles, n, numFeuille, X
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
numFeuille = n & ", "
X = X & numFeuille
Next
X = Left(X, Len(X) - 3)
MsgBox X
Sheets(Array(X)).Select
End Sub

(la ligne MsgBox X pour visualiser la variable X)

Pourquoi ça ne marche pas ?
Y a-t-il une autre manière pour arriver au même résultat ?

Merci pour toute suggestion.

Max











Avatar
Max
BojourDaniel,
Merci de ton aide. Je viens de tester ta macro, elle fonctionne
parfaitement.
Il me reste à étudier sa logique
Cordialement,
Max

"Daniel" a écrit dans le message de news:
%23fWO3fd%
Bonjour.
Ta variable X est une variable string, elle n'est pas équivalente à une
suite d'arguments numériques 2 ,3 ,4...
Essaie plutôt :

Sub AssocierFeuilles()
Dim nbFeuilles, n, Tablo()
ReDim Tablo(0)
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
ReDim Preserve Tablo(n - 2)
Tablo(n - 2) = n
Next
Sheets(Tablo).Select
End Sub

Cordialement.
Daniel

"Max" a écrit dans le message de news:
%23qaxJ%23c%
Bonjour,

J'essaie de faire une macro qui associe toutes les feuilles d'un
classeur, sauf la première en utilisant la fonction Array:

Sub AssocierFeuilles()
Dim nbFeuilles, n, numFeuille, X
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
numFeuille = n & ", "
X = X & numFeuille
Next
X = Left(X, Len(X) - 3)
MsgBox X
Sheets(Array(X)).Select
End Sub

(la ligne MsgBox X pour visualiser la variable X)

Pourquoi ça ne marche pas ?
Y a-t-il une autre manière pour arriver au même résultat ?

Merci pour toute suggestion.

Max










Avatar
Max
Bonjour micdub,

Merci, mais ça se plante à la dernière ligne
Pourquoi ?

Max


"micdub" a écrit dans le message de news:

Bonjour,

Voici une solution semblable à celle proposée :

Sub AssocierFeuilles()
'
' Solution pour des feuilles nommées Feuil1, Feuil2, ...
' --------------------------------------------------------
Dim nbFeuilles, n, numFeuille

nbFeuilles = Sheets.Count

ReDim X(nbFeuilles - 1)

For n = 2 To nbFeuilles
numFeuille = "Feuil" & n
X(n - 1) = numFeuille
Next
Sheets((X)).Select
End Sub

Bien à vous - MicDub - http://users.skynet.be/micdub


Bonjour.
Ta variable X est une variable string, elle n'est pas équivalente à une
suite d'arguments numériques 2 ,3 ,4...
Essaie plutôt :

Sub AssocierFeuilles()
Dim nbFeuilles, n, Tablo()
ReDim Tablo(0)
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
ReDim Preserve Tablo(n - 2)
Tablo(n - 2) = n
Next
Sheets(Tablo).Select
End Sub

Cordialement.
Daniel

"Max" a écrit dans le message de news:
%23qaxJ%23c%
Bonjour,

J'essaie de faire une macro qui associe toutes les feuilles d'un
classeur,
sauf la première en utilisant la fonction Array:

Sub AssocierFeuilles()
Dim nbFeuilles, n, numFeuille, X
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
numFeuille = n & ", "
X = X & numFeuille
Next
X = Left(X, Len(X) - 3)
MsgBox X
Sheets(Array(X)).Select
End Sub

(la ligne MsgBox X pour visualiser la variable X)

Pourquoi ça ne marche pas ?
Y a-t-il une autre manière pour arriver au même résultat ?

Merci pour toute suggestion.

Max













Avatar
JB
Bonjour,

Sub SelectionSaufPremier()
Dim Tbl()
ReDim Tbl(1 To Sheets.Count - 1)
For i = 1 To Sheets.Count - 1
Tbl(i) = i + 1
Next
Sheets(Tbl).Select
End Sub

JB


Bonjour,

J'essaie de faire une macro qui associe toutes les feuilles d'un classeur,
sauf la première en utilisant la fonction Array:

Sub AssocierFeuilles()
Dim nbFeuilles, n, numFeuille, X
nbFeuilles = Sheets.Count
For n = 2 To nbFeuilles
numFeuille = n & ", "
X = X & numFeuille
Next
X = Left(X, Len(X) - 3)
MsgBox X
Sheets(Array(X)).Select
End Sub

(la ligne MsgBox X pour visualiser la variable X)

Pourquoi ça ne marche pas ?
Y a-t-il une autre manière pour arriver au même résultat ?

Merci pour toute suggestion.

Max


Avatar
AV
On peut très bien se passer d'un tableau en étendant simplement la sélection :

Sub SelectFeuillesSaufPrem()
Sheets(2).Select
For i = 2 To Sheets.Count
Sheets(i).Select (False)
Next
End Sub

AV
Avatar
Max
Bonjour Alain,
J'ai été gaté avec toutes les solutions que j'ai eues, mais la tienne est la
plus simple.
Je l'ai bien testée, mais je ne comprends pas pourqoui l'expression "False"
fait toute la différence, sans cette expression ou avec "True" c'est
seulement une feuille qui est sélectionnée, par contre avec "False" c'est
comme avec les touches Ctrl+Maj+PageDown, les feuilles saisie restent
selectionnées.
Merci encore,
Cordialement,
Max.

"AV" a écrit dans le message de news:
OK$cDIm%
On peut très bien se passer d'un tableau en étendant simplement la
sélection :

Sub SelectFeuillesSaufPrem()
Sheets(2).Select
For i = 2 To Sheets.Count
Sheets(i).Select (False)
Next
End Sub

AV