Réalisation d'une boucle

Bonjour,

Est-ce que c'est possible de créer une boucle pour qu'à chaque itération, on change de mois ? Faut-il créer une variable liste contenant le nom des différents mois de l'année ?

Voici le code

Dim ma_variable as String

ma_variable = "Janvier"

Sheets("Feuille").Select

Call Fonc.TableauCroiDyna(ma_variable)

Merci

J'essaye mais je n'y arrive pas du tout

essaie avec cette idée

Public Sub test()

Dim ma_variable As Variant

ma_variable = Array("janvier", "février", "mars")

Sheets("Feuil1").Select

For i = 0 To 2

MsgBox ma_variable(i)

Next i

End Sub

Re,

    Dim ma_variable As String, i As Integer
    For i = 1 To 12
        ma_variable = StrConv(MonthName(i), vbProperCase)
        '???? et que se passe-t-il ???
    Next i

ma_variable va prendre tour à tour les valeurs : Janvier, Février, Mars... Novembre, Décembre... Mais après ?

MFerrand a écrit :

Re,

    Dim ma_variable As String, i As Integer
    For i = 1 To 12
        ma_variable = StrConv(MonthName(i), vbProperCase)
        '???? et que se passe-t-il ???
    Next i

ma_variable va prendre tour à tour les valeurs : Janvier, Février, Mars... Novembre, Décembre... Mais après ?

Après, une fois le tour terminé, elle s'arrête, je quitte cette boucle.

Par contre j'ai vu que tu avais utilisé une formule déjà existante avec "MonthName" mais un peu plus tard je devrais réaliser une nouvelle boucle mais avec des mots.

Merci à toi.

Après, une fois le tour terminé, elle s'arrête, je quitte cette boucle.

Donc elle tourne, tu n'as rien vu et elle ne sert à rien !

Sinon on fait des boucles avec ce qu'on veut !

MFerrand a écrit :
Après, une fois le tour terminé, elle s'arrête, je quitte cette boucle.

Donc elle tourne, tu n'as rien vu et elle ne sert à rien !

Sinon on fait des boucles avec ce qu'on veut !

Je me suis mal exprimé

Après elle appelle ma fonction qui elle retourne un tableau croisé dynamique sous Excel.

C'est pour ça que je voulais faire une boucle, je dois avoir un tableau pour septembre, un autre tableau pour octobre et ainsi de suite mais le problème ce que mes onglet se nomment sep01, oct01, ... de plus je n'ai besoin que de 6 derniers mois et non pas des 12 mois de l'année.

C'est pour ça que j'aurais voulu savoir comment je pouvais faire une boucle qui dans un premier temps créer un tableau dans un onglet sep01 ensuite je sors de la fonction, je sélectionne le nom suivant, je rentre de nouveau dans la fonction et ainsi de suite.

Merci

Tu fais un tableau, tu boucles sur le tableau.

Mais à la fin de la boucle, c'est bouclé ! C'est à l'intérieur qu'il y a quelque chose à faire !

Pour le moment je suis partie sur ça mais ça ne fonctionne pas

For i = 1 To 3

ma_variable = StrConv(Sep01, Oct01, vbProperCase)

Call Fonc.TableauCroiDyna(ma_variable)

Next i

J'ignore ce qu'est cette procédure : Fonc.TableauCroiDyna mais déjà son nom me paraît bizarre...

Par ailleurs Sep01 et Oct01 tels que écrit sont des variables : déclarées où et initialisées où ??

StrConv est une fonction de conversion de texte : l'argument vbProperCase est une constante VBA indiquant à la fonction de mettre l'initiale de la chaîne fournie en premier argument en majuscule, mais lorsqu'elle se trouve en second argument.

Tu m'as l'air de faire un joyeux mélange sans savoir quelles sont les données et autres éléments que tu manipules.

MFerrand a écrit :

J'ignore ce qu'est cette procédure : Fonc.TableauCroiDyna mais déjà son nom me paraît bizarre...

Par ailleurs Sep01 et Oct01 tels que écrit sont des variables : déclarées où et initialisées où ??

StrConv est une fonction de conversion de texte : l'argument vbProperCase est une constante VBA indiquant à la fonction de mettre l'initiale de la chaîne fournie en premier argument en majuscule, mais lorsqu'elle se trouve en second argument.

Tu m'as l'air de faire un joyeux mélange sans savoir quelles sont les données et autres éléments que tu manipules.

La procédure créer un nouvelle onglet portant le nom de "ma_variable" (c'est les mois que je lui affecte) et créer un tableau croisé dynamique puis le mets en forme (police, couleur, contour). C'est pour ça que j'ai besoin de faire une boucle. Lors de la première itération "ma_variable" prend le nom de "sep01" ensuite la deuxième itération "ma_variable" prend le nom de "oct01".

Merci à toi.

On ne voit pas comment dans ce que tu as écrit !

Relis mon commentaire.

MFerrand a écrit :

On ne voit pas comment dans ce que tu as écrit !

Relis mon commentaire.

Merci du temps que tu prends pour m'aider

Je ne déclare par sep01 et oct01 étant donné qu'il s'agit juste des noms d'onglet. Après je ne sais pas si je dois les initialiser.

En fait mon problème c'est que je ne sais pas comment faire une boucle avec des caractères. Quand il faut répéter plusieurs étape on incrémente de 1 mais là moi c'est différent, je veux affecter à ma variable une nouvelle valeur de texte.

Merci.

J'ai essayé avec un boucle For each mais sans succès.

For Each ma_variable In Array("sep01", "oct01", "nov01")

Sheets("Accueil").Select      
Range("A1").Select

Call Ma_fonction (ma_variable)

Range("A1").Select

Next ma_variable

Merci

Cette boucle fonctionne !

Les Select on ne voit pas trop ce qu'il viennent faire ! De toute façon c'est toujours du mauvais code !

Le reste je ne sais pas.

NB- Si tu indentais ton code (sans sauter de lignes) cela serait plus lisible !

MFerrand a écrit :

Cette boucle fonctionne !

Les Select on ne voit pas trop ce qu'il viennent faire ! De toute façon c'est toujours du mauvais code !

Le reste je ne sais pas.

NB- Si tu indentais ton code (sans sauter de lignes) cela serait plus lisible !

Le problème c'est que "ma_variable" et de type string et lorsque je lance la macro, ça me dis que la variable doit être de type variant.

Pour fonctionner dans cette boucle ma_variable doit obligatoirement être de type Variant. Il ne faut donc pas la typer !

MFerrand a écrit :

Pour fonctionner dans cette boucle ma_variable doit obligatoirement être de type Variant. Il ne faut donc pas la typer !

Oui mais après dans ma fonction je fais appelle à "ma_variable" et j'ai un message d'erreur me disant : type d'argument ByRef incompatible. Je suis coincé.

Tu mets ByVal devant l'argument dans la déclaration de procédure.

MFerrand a écrit :

Tu mets ByVal devant l'argument dans la déclaration de procédure.

Ça fonctionne merci beaucoup

Rechercher des sujets similaires à "realisation boucle"