XL 2016 Syntaxe variable avec compteur

Phillip

XLDnaute Occasionnel
Bonjour,

J'ai toujours ce même problème de syntaxe...J'ai une liste de CM de 1 à 50...Je voudrais remplir ma feuille avec cette boucle, et j'ai ce problème de syntaxe
ici CM(lig - 57).Value. Comment collè-je CM avec mon compteur lig-57 ?

VB:
For lig = 58 To 107
Cells(lig, 2) = CM(lig - 57).Value
Next lig

Merci

Cordialement

Phillip
 

Phillip

XLDnaute Occasionnel
Eh non... CM est une variable, qui va de CM1 à CM50

Je veux concatener CM avec 1, 2...50...En utilisant la variable "lig"

En Français ça ferait CM(lig - 57).Value, mais pas en VBA ! :)

Je en sais jamais où mettre mes & " ', etc....

Merci

Cordialement
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Oups! Là je sèche. Il serait plus simple de passer par un array :
VB:
Sub Essai()
Dim CM()
CM = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9.....) ' Mettre les 50 valeurs de CM1 à CM50.
For lig = 58 To 107
   Cells(lig, "B") = CM(lig - 57)
Next lig
End Sub
attention l'array commence à l'indice 0, donc mettre un nombre bidon en premier pour commencer à 1.
 

Phillip

XLDnaute Occasionnel
Je pense que je me suis mal exprimé car je pense que c'est simple...

J'ai une macro qui calcule 50 variables, de la variable CM1 à la variable CM50.

Ces 50 variables, je veux les mettre dans un tableau à partir de la ligne 58, et la colonne 2 (mais peu importe où).

Je peux faire 50 lignes de code comme ceci :
cells(58,2).value=CM1.value
cells(59,2).value=CM2.value
.....
cells(107,2).value=CM50.value

mais c'est long, c'est pour ça que j'ai pensé à la boucle
For lig = 58 To 107
Cells(lig, 2) = xxxx.Value
Next lig

Mon xxx devant être les lettre CM concanténées avec lig-57 pour que je récupéère CM1 sur ma ligne 58, et ainsi de suite

Je cherche donc à concaténer CM et un numéro de ligne, et que cela soit reconnu comme une de mes variables CM1 à CM50....C'est à dire que CM&lig-57=la variable CM1, et ce que je ne sais pas faire c'est concaténer CM et lig-57 !

Sinon, je me le tape ligne par ligne, mais c'est dommage...
Merci encore !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si j'ai bien compris. Sous XL ce serait un Indirect mais en VBA je ne connais pas. :rolleyes:
Mais si, au lieu de mettre CM1, vous mettez CM(1) alors cela devient un tableau et la formule :
Cells(lig, "B") = CM(lig - 57) marche.
Désolé, même mon ami Google n'a pas trouvé de solution à vous proposer.
Peut être un plus malin que moi vous viendra en aide.

Ou envoyez votre code si c'est possible, on pourra essayer de le modifier.
 

Phillip

XLDnaute Occasionnel
Re,

Voici le code. J'ai mis toto au lieu de CM et j'ai changé les lignes...

VB:
Sub CONCA()
toto1 = 8
toto2 = 14
toto3 = 78
toto4 = 90

For lig = 2 To 6
'
'ne marche pas
Cells(lig, 2).Value = toto(lig - 1).Value
'je veux cell(lig,2).value = toto (2-1) etc....
Next lig

End Sub

Merci !

Cordialement

phillip
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'ai une macro qui calcule 50 variables, de la variable CM1 à la variable CM50.
Au lieu de faire CM1=ax²+bx+c vous écrivez CM(1)=ax²+bx+c
Donc pour vos CM de votre macro vous rajoutez deux parenthèses pour entourer le nombre, donc CM1 devient CM(1).

Pour votre exemple essayez :
VB:
Sub CONCA()
Dim toto(5)
toto(1) = 8
toto(2) = 14
toto(3) = 78
toto(4) = 90
toto(5) = 110

For lig = 2 To 6

Cells(lig, 2) = toto(lig - 1)

Next lig
End Sub
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,

accepte qu'on ne peut pas reconstruire un nom de variable en vba ;-)
Un tableau tel qu'indiqué par sylvanu est la solution.
Pour renommer tes variables tu as Ctrl+h (remplacer), à mettre au niveau projet si besoin.
Avec en plus l'avantage de le coller en une fois sur ta feuille au lieu de 57 cells(58,2).value=CM1.value
eric
 

Discussions similaires

Réponses
16
Affichages
590

Statistiques des forums

Discussions
312 587
Messages
2 090 009
Membres
104 344
dernier inscrit
nesrine