Optimisation code variable

Bonjour à tous,

j'ai fait un code en vba et je souhaiterais l'améliorer

j'ai plusieurs variable

sub test ()

dim i a integer

variable1 = range("a1").value
variable2 = range("a2").value
varialble3 = range("a3").value

for i = 1 to 3

et c'est là que j'ai un problème,

je voudrais faire une boucle sur mes variables mais je trouve pas la syntaxe

j'ai essayé variable&"i" mais cela ne fonctionne pas

si quelqu'un à une idée je suis preneur, je cherche pas à ce que l'on fasse mon travail, je souhaite surtout progresser !!!!

merci

edouard002

Bonsoir Édouard, bonsoir le forum,

Dans ce cas utilise un tableau de variable indexées plutôt que plusieurs variables :

Sub test()
Dim T(1 To 3) As Integer
Dim I As Byte

T(1) = CInt(Range("A1").Value)
T(2) = CInt(Range("A2").Value)
T(3) = CInt(Range("A3").Value)

For I = 1 To 3
    '...ton code avec la variable T(I)
Next I
End Sub

j'avais effectivement lu quelques choses sur cette solution

ci dessous un extrait du vrai code

Sub validation()

Sheets("saisie").Select

kmtotal = Range("e27").Value
nom = Range("e4").Value
datesaisie = Range("e5").Value

ssrubrique1 = Range("e16").Value
antenne1 = Range("e17").Value
km1 = Range("e18").Value
total1 = Range("e19").Value

ssrubrique2 = Range("i16").Value
antenne2 = Range("i17").Value
km2 = Range("i18").Value
total2 = Range("i19").Value

ssrubrique3 = Range("m16").Value
antenne3 = Range("m17").Value
km3 = Range("m18").Value
total3 = Range("m19").Value

ssrubrique4 = Range("e21").Value
antenne4 = Range("e22").Value
km4 = Range("e23").Value
total4 = Range("e24").Value

ssrubrique5 = Range("i21").Value
antenne5 = Range("i22").Value
km5 = Range("i23").Value
total5 = Range("i24").Value

ssrubrique6 = Range("m21").Value
antenne6 = Range("m22").Value
km6 = Range("m23").Value
total6 = Range("m24").Value

Sheets("bdd").Select

If km1 <> 0 Then
Rows("2:2").Insert
Range("a2").Value = nom
Range("b2").Value = datesaisie
Range("c2").Value = ssrubrique1
Range("d2").Value = antenne1
Range("e2").Value = km1
Range("f2").Value = total1
Range("g2").Value = Date
Range("h2").Value = "non"

End If

If km2 <> 0 Then
Rows("2:2").Insert
Range("a2").Value = nom
Range("b2").Value = datesaisie
Range("c2").Value = ssrubrique2
Range("d2").Value = antenne2
Range("e2").Value = km2
Range("f2").Value = total2
Range("g2").Value = Date
Range("h2").Value = "non"

ma solution fonctionne mais ce n'est pas facile à maintenir l'idée etait de boucler afin d'avoir un seul if

Re,

Évite toujours les Select inutiles qui ne font que ralentir l'exécution du code et sont source de plantages !...

Ton code modifié :

Sub validation()
Dim KmTotal As Integer ' As Double si il y a des virgules (type à vérifier)
Dim Nom As String
Dim DateSaisie As String 'type à vérifier
Dim SR(1 To 6) As String 'type à vérifier
Dim Ant(1 To 6) As String 'type à vérifier
Dim Km(1 To 6) As Integer ' As Double si il y a des virgules (type à vérifier)
Dim Tot(1 To 6) As Integer ' As Double si il y a des virgules (type à vérifier)

With Sheets("saisie")
    KmTotal = .Range("E27").Value
    Nom = .Range("E4").Value
    DateSaisie = .Range("E5").Value
    SR(1) = .Range("E16").Value
    Ant(1) = .Range("E17").Value
    Km(1) = .Range("E18").Value
    Tot(1) = .Range("E19").Value
    SR(2) = .Range("I16").Value
    Ant(2) = .Range("I17").Value
    Km(2) = .Range("I18").Value
    Tot(2) = .Range("I19").Value
    SR(3) = .Range("M16").Value
    Ant(3) = .Range("M17").Value
    Km(3) = .Range("M18").Value
    Tot(3) = .Range("M19").Value
    SR(4) = .Range("E21").Value
    Ant(4) = .Range("E22").Value
    Km(4) = .Range("E23").Value
    Tot(4) = .Range("E24").Value
    SR(5) = .Range("I21").Value
    Ant(5) = .Range("I22").Value
    Km(5) = .Range("I23").Value
    Tot(5) = .Range("I24").Value
    SR(6) = .Range("M21").Value
    Ant(6) = .Range("M22").Value
    Km(6) = .Range("M23").Value
    Tot(6) = .Range("M24").Value
End With

With Sheets("bdd")
    For I = 1 To 6
        If Km(I) <> 0 Then
            .Rows("2:2").Insert
            .Range("A2").Value = Nom
            .Range("B2").Value = DateSaisie
            .Range("C2").Value = SR(I)
            .Range("D2").Value = Ant(I)
            .Range("E2").Value = Km(I)
            .Range("F2").Value = Tot(I)
            .Range("G2").Value = Date
            .Range("H2").Value = "non"
        End If
    Next I
End With
End Sub

Merci !!!!

Rechercher des sujets similaires à "optimisation code variable"