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 3et 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 Subj'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