VBA probleme (i) variables

Bonjour,

Je vous contacte car je rencontre un soucis pour appeler mes variables...

Lorsque je lance ce mini programme CH, il fait référence à des variables CH1, CH2 dont les valeurs (de type string) ont été données auparavant.

Sub CH(CH1, CH2, CH3, CH4, CH5, CH6, CH7, CH8, CH9, CH10, CH11, CH12, CH13)

    For i = 1 To 13
            Cells(22, 3 + i) = "CH" & i
            Cells(23, 3 + i) = CH(i)
    Next i

End Sub

Ma ligne

Cells(22, 3 + i) = "CH" & i

m'indique bien les numéros de CH de manière croissance en avancant à chaque fois d'une colonne.

Mais dans la ligne d'en dessous, j'aimerais afficher la valeur de cette variable, mais le code

Cells(23, 3 + i) = CH(i) 

ne fonctionne pas. Et j'ai essayé plein de syntaxes mais sans succès...

Pour mieux comprendre, si l'on s'image que CH1 = voiea et CH = voieb, j'aimerais CH1 en D22, CH2 en E22, voiea en D23 et voieb en E23.

J'espère que vous comprendrez mon probleme.

Merci par avance!

Bonjour

Essai ce code :

Sub essai()
    CH1 = 10: CH2 = 20: CH3 = 30: CH4 = 5
    v = Array(CH1, CH2, CH3, CH4, CH5, CH6, CH7, CH8, CH9, CH10, CH11, CH12, CH13)
    i = 0
    For i = 0 To 5
            Cells(23, 3 + i) = v(i)
    Next i

End Sub

Bye !

Bonjour

bonjour gmb

une autre proposition

Sub ch(ParamArray chx() As Variant)
    If LBound(chx) = 0 Then corr = 1 Else corr = 0
    For i = LBound(chx) To UBound(chx)
        If i + corr > 13 Then Exit Sub
        Cells(23, 3 + i + corr) = chx(i)
    Next i
End Sub

appel du module

call ch(CH1, CH2, CH3, CH4, CH5, CH6, CH7, CH8, CH9, CH10, CH11, CH12, CH13)
gmb a écrit :

Bonjour

Essai ce code :

Sub essai()
    CH1 = 10: CH2 = 20: CH3 = 30: CH4 = 5
    v = Array(CH1, CH2, CH3, CH4, CH5, CH6, CH7, CH8, CH9, CH10, CH11, CH12, CH13)
    i = 0
    For i = 0 To 5
            Cells(23, 3 + i) = v(i)
    Next i

End Sub

Bye !

Merci énormément à vous deux!

J'ai choisi cette solution qui me convient le mieux.

Est-ce que "v" se déclare? Car il faudrait éventuellement que je le réutilise plus tard. Je ne connaissais pas du tout cette fonction Array. Désolée je suis une grande débutante et j'ai donc un peu de mal.

Sbier a écrit :

Est-ce que "v" se déclare?

Comme toutes les variables

Tu as dû remarquer que dans mon code, la ligne : i= 0 est inutile...

Bye !

Oui j'avais cru remarquer.

Mais en quoi déclarer v? En string? Parce que c'est une fonction, c'était ca que je n'ai pas saisi..

Bonjour,

Ne sachant pas comment tu as récupéré tes valeurs, j'ai supposé (exemple avec 5 valeurs)

que voiea, voieb, voiec, voied, voiee étaient dans la plage B4:B8 d'un feuille nommée "Départ".

Dans la macro suivante, "Arrivée" est le nom de la feuille où tu veux tes résultats.

Sub Essai()
    Dim ch 'ch représente un tableau à deux dimensions
    ch = Worksheets("Départ").Range("B4:B8") 'On met la plage B4:B8 dans ch
    n = UBound(ch, 1) 'Nombre total de lignes du tableau (5)
   'On transfère les valeurs du tableau:
    For i = 1 To n
        Worksheets("Arrivée").Cells(22, 3 + i) = "ch" & i
        Worksheets("Arrivée").Cells(23, 3 + i) = ch(i, 1)
    Next i
    'Si tout se passe sur la feuille active, pas nécessaire d'utiliser Worksheets(). 
End Sub

Serge

Sbier a écrit :

Mais en quoi déclarer v?

Dans le doute, il vaut mieux ne pas préciser.

Moi, je me contente de :

Dim v

Ce qui ne m'empêche pas de travailler avec

Option Explicit

Bye !

Bonjour,

plutôt que de déclarer

dim CH1 as ..., CH2 as ..., etc

pourquoi ne pas déclarer un tableau :

dim CH(1 to 13) as ....

ensuite CH(i) te ramène l'index voulu.

eric

Rechercher des sujets similaires à "vba probleme variables"