Créer une liste de nombres

Bonjour,

ma question est très basique, je cherche à créer une liste contenant des nombres

J'ai fais:

dim N() as integer

N=(1;2;5)

For each numbers in N

fait ceci etc

Cependant, je ne réussis pas à créer la liste,

Au niveau de la syntaxe, l'aide excel m'indique de faire N={1,2,5} mais quand je fais ça excel m'indique caractère inconnu ( )

En soi c'est tout bête, je souhaiterai juste dire à excel pour la valeur 1 fait ceci , pour la valeur 2 réapplique les mêmes instructions données par for each etc...

Je regarde sur internet mais jai un peu de mal à trouver

Bonjour,

en utilisant Array(), peut-être?

Sub ess_array()
Dim Nb As Variant
Dim I As Long
Nb = Array(1, 2, 5)
For I = LBound(Nb) To UBound(Nb)
    MsgBox Nb(I)
Next I
End Sub

Peut-être?

bonjour

un exemple

    Dim n, v
    n = Array(1, 2, 3)
    For Each v In n
        MsgBox v
    Next v

edit : salut cousinhub,

Bonjour,

en effet je pense qu'elle marche mais je ne réussis pas à l'exploiter pour mon code

je vais essayer d'éclaircir ce que je souhaites faire

Par exemple, j'ai 1 classeur contenant les onglets 1 , 2, 3 ...99

Je souhaiterai modifier uniquement l'onglet 1 , 2, 5

Ma formule regarde vers quelle ligne se trouve le mot "Budget" de cet onglet, et puis à partir de là si le mot budget se trouve en ligne 9 , alors toutes les cellules entre H9 et H1000 sont déplacés à droite deux fois

Niveau code j'avais commencé ceci:

Sub Macro1()

Dim N() As Integer

Dim P As Variant

N = [1,2,5]

For Each numbers In N

worksheets("N").select

P.Formula = "=match(budget;'[forecast]" & N & "'!;0))"

Range("C & P & :D10").Select

Selection.Insert Shift:=xlToRight

Selection.Insert Shift:=xlToRight

Next N

End Sub

mais la formule index a échoué car le P semble incompatible, et N est indiqué comme étant une variable non valide pour le next

et excel ne parvenait pas à sélectionner le classeur N j'ai du me planter sur la formule

J'ai retenté avec le code suggéré dans le premier commentaire,

Sub Macro1()

Dim N As Variant

Dim P As Variant

N = Array(1, 2, 5)

For I = LBound(N) To UBound(N)

Worksheets("i").Activate

P = 3

Range("C" & P & ":D10").Select

Selection.Insert Shift:=xlToRight

Selection.Insert Shift:=xlToRight

Next I

End Sub

Ca marche mieux, mais au niveau du worksheet du range , je ne réussis pas à introduire une variable qui serait égale à la variable I (par ex si I= 1, alors classeur 1 etc)

Pour P, je ne sais pas comment faire en sorte que P soit égale au résultat d'une formule index de type =match(budgets, '[test]( " & i & ")'!; 0) c'est à dire une formule index qui modifierait le choix du classeur à chaque fois selon la valeur du I

A la rigueur, pour P , je peux stocker sa valeur dans une cellule ça serait peut-être plus simple, mais je ne comprends pas pourquoi le "& &" ne semble pas marcher pour introduire une variable dans ce type de formule je m'y prends surement mal ....

Je ne sais pas s'il y a des manuels qui répertorient ce type d’opération de base , ça me permettrait de travailler ça en autonomie et de ne pas déranger pour des petits trucs du genre désolé

Re-,

Le code que t'a donné H2S04 fonctionne tout aussi bien que le mien...

Jusqu'à présent, on a travaillé à l'aveugle... (sans fichier joint, on ne peut que "supposer")

Quand tu dis que tu as des onglets 1, 2, 5, c'est vraiment leur nom?

ou juste leur position en bas?

Et le mot "Budget", il est dans une colonne spécifique, ou n'importe où sur la page?

Bref, un condensé de ton fichier de travail, avec des données anonymisées, pourrait bien faire avancer ton projet...

Bon courage

Rebonjour,

oui vos codes marchent tout à fait, ca a débloqué le problème que j'avais pour initier la boucle

En fait , je bloque + sur une seconde étape de mon code

-je bloque sur la ligne "worksheet(i").select" , si la liste est " 1 , 3 et 5 par exemple", j'aimerai que le code sélectionne l'onglet 1 par exemple et applique une fonction index sur la colonne 2 de l'onglet 1 pour trouver dans quelle ligne se trouve le terme "budget" (ce terme se trouvera toujours dans la colonne 2

La valeur obtenue est alors stockée dans P, ce qui me permet de la réutiliser dans d'autres formules

-Mais pour l'instant, je ne réussis pas à faire en sorte que ma variable P= soit égale au résultat de la formule, ma syntaxe est surement défaillante

Grossomodo pour faire simple je bloque sur ces deux lignes:

worksheet(i").select => i représentant l'onglet que excel doit sélectionner

P = ("=match(budget;'[travail]" & i & "C:C'!;0)") => i représentant l'onglet dans lequel excel doit appliquer la formule index

J'ai mis un exemple de fichier en PJ, les onglets ont des numéros car ça renvoie à des numéros de projets etc, il manque surement un truc tout bête dans mon code, mais j'ai du mal à le trouver

15travail.xlsm (19.41 Ko)

Bonjour,

essaie ceci

Sub Macro1()
    '
    ' Macro1 Macro
    '

    Dim N As Variant
    Dim P As Range
    Dim I As Long
    N = Array(1, 3, 7)

    For I = LBound(N) To UBound(N)
        Worksheets(N(I) & "").Activate

        Set P = Range("B:B").Find("Budget", lookat:=xlWhole, LookIn:=xlValues)
        If Not P Is Nothing Then
            Range("H" & P.Row & ":D1000").Select

            Selection.Insert Shift:=xlToRight
            Selection.Insert Shift:=xlToRight
        End If
    Next I

End Sub

Bonjour,

en effet les corrections données marchent très bien, je comprends mieux pourquoi mon premier code a échoué

je les garderai en mémoire pour étudier leurs structures et les appliquer sur d'autres codes

Merci beaucoup , c'est très gentil !

Je marque le sujet en résolu

Rechercher des sujets similaires à "creer liste nombres"