[RESOLU] creation de variable via une LOOP

Poto

XLDnaute Occasionnel
Bonjour à tous,

je cherche a créer des variables à l'aide d'une loop ( ou tout autres methode rapide ) afin d'eviter ceci :

Code:
Dim CatLn1 As String
        CatLn1 = ThisWorkbook.Sheets("INTRO").Range("N16").Value
        
  Dim CatLn2 As String
        CatLn2 = ThisWorkbook.Sheets("INTRO").Range("N17").Value
        
  Dim CatLn3 As String
        CatLn3 = ThisWorkbook.Sheets("INTRO").Range("N18").Value
        
  Dim CatLn4 As String
        CatLn4 = ThisWorkbook.Sheets("INTRO").Range("N19").Value
        
  Dim CatLn5 As String
        CatLn5 = ThisWorkbook.Sheets("INTRO").Range("N20").Value

... ( et ca continu sur une vingtaine de ligne )

ou ceci :

Code:
    Dim TotalCompte2 As String
        TotalCompte2 = ThisWorkbook.Names("total2").RefersToRange
        
    Dim TotalCompte3 As String
        TotalCompte3 = ThisWorkbook.Names("total3").RefersToRange
        
    Dim TotalCompte4 As String
        TotalCompte4 = ThisWorkbook.Names("total4").RefersToRange
        
    Dim TotalCompte5 As String
        TotalCompte5 = ThisWorkbook.Names("total5").RefersToRange

...

jusqu' a maintenant, j arrive a faire ceci :

Code:
        For i = 1 To 20

            dim CatLn(i) = ThisWorkbook.Sheets("INTRO").Range("N16" + 1).Value

        Next i

evidement ca ne marche pas car le .Range("N16" +1) n'est pas reconnu ....


toute idée est la bienvenue

merci d'avance XLD ;)


Poto
 
Dernière édition:

fhoest

XLDnaute Accro
Re : creation de variable via une LOOP

Bonjour,
Tu dois utilisé un vecteur:
d'autre dise tableau
Code:
Dim CatLn (20)
For i = 1 To 20
CatLn(i) = ThisWorkbook.Sheets("INTRO").Range("N" & 15 + i ).Value
Next i

A+

Edit bonjour Roger (tu as vu juste c'est 15 et non 16 qu'il faut mettre) et bien plus merci voir correction perso ce que tu as fait est plus clair
;)
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : creation de variable via une LOOP

Bonjour Poto


Essayez ceci :​
VB:
Dim CatLn(1 To 20)
    With ThisWorkbook.Sheets("INTRO").Range("N15")
        For i = 1 To 20
            CatLn(i) = .Offset(i).Value
        Next i
    End With


Bonne journée.



ROGER2327
#6033


Jeudi 19 Gidouille 139 (Saint Sein, tautologue - fête Suprême Quarte)
15 Messidor An CCXX, 4,2395h - chamois
2012-W27-2T10:10:29Z



P.s. : Bonjour fhoest.
Code:
Dim CatLn (19)
For i = 1 To 20
    CatLn(i) = ...
Hum... Ça va coincer...
 
Dernière édition:

Poto

XLDnaute Occasionnel
Re : creation de variable via une LOOP

re à vous 2,

tout d'abbord merci beaucoup pour votre aide et attention ;)
j'ai juste un petit probleme avec chacune de vos solution ...

avec la solution de fhoest j'ai une erreur sur

Code:
CatLn(i) = ThisWorkbook.Sheets("INTRO").Range("N" & 15 + i).Value ( j'ai tester avec 15 et 16)

"L'indice n'appartient pas a la selection"

avec la solution de Roger pas d'erreur, mais la variable reste vide ....
si je fais un :


Code:
msgbox CatLn1 (ou CatLn5 ...)

juste apres la boucle, le msgbox devrait m afficher la valeur stocker dans la variable ... mais rien .... :(


derniere petite question, puis je faire un


Code:
Dim CatLn(19) As String
ou

Dim CatLn(1 to 20) As String

??


MAJ

J'ai mis a jour la solution de fhoest, je n'ai plus d'erreur mais la variable reste desesperement vide ....
pourtant quand je creer la variable normallement :

Code:
  Dim CatLn1 As String
        CatLn1 = ThisWorkbook.Sheets("INTRO").Range("N16").Value

ca fonctionne ....

aurais je omis quelque chose d'important ??
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : creation de variable via une LOOP

salut Tous

...
avec la solution de Roger pas d'erreur, mais la variable reste vide ....
si je fais un :
msgbox CatLn1 (ou CatLn5 ...)
juste apres la boucle, le msgbox devrait m afficher la valeur stocker dans la variable ... mais rien .... :(

non ! Voilà ce que tu as loupé :CatLn1 n'est pas CatLn(1) !

tu peux encore essayer celui là
Code:
 Dim CatLn(20), i As Byte
 For i = 1 To 20
   CatLn(i) = Sheets("INTRO").[N15].Offset(i)
 Next
 'et pour contrôle
 MsgBox CatLn(1) & "    " & CatLn(5)

NB quand on déclare un tableau, l'indice commence à 0 donc, ici CtLn(0) existe et est vide comme les autres avant leur initialisation !
Pour commencer à 1, il faut, en début de module : Option Base 1 !
 
Dernière édition:

Poto

XLDnaute Occasionnel
Re : creation de variable via une LOOP

Salut Si...

merci pour ton explication sur la difference entre CatLn1 et CatLn(1)
mon erreur se situer là .... betement je penser que les boucles aller
me creer des variables se nommant CatLn1, CatLn2 ...

donc après reverification, les methodes de Roger et de fhoest fonctionne très bien ;)

merci à vous tous pour votre aide tres precieuse ;)

cordialement


Poto
 

Discussions similaires

Réponses
2
Affichages
304

Statistiques des forums

Discussions
312 503
Messages
2 089 062
Membres
104 015
dernier inscrit
kkgk