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 SubPeut-être?
bonjour
un exemple
Dim n, v
n = Array(1, 2, 3)
For Each v In n
MsgBox v
Next vedit : 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
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 SubBonjour,
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