thomthom27
Messages postés6Date d'inscriptionlundi 20 juillet 2009StatutMembreDernière intervention17 septembre 2009
-
22 juil. 2009 à 16:27
cs_simH
Messages postés13Date d'inscriptionlundi 13 juillet 2009StatutMembreDernière intervention18 juin 2010
-
30 juil. 2009 à 20:28
Bonjour
Je cherche à faire une macro qui ecrira dans une cellule i la valeur 1, 2, 3 selon la valeur de i-1 de plus lorsque i-1 =0 i=1 puis i+1=2....
j'ai deja rédiger ceci mais cela ne fonctionne pas je pense que c'est un problème d'ecriture si quelqu'un peut m'indiquer mon erreur.
merci d'avance
code:
Sub Macro2()
'
Dim i As Integer
i = 1
While i < 5000
If Range(K, i).Value = 0 Then
Range("M1") Range(K, i + 1).Value 1
Else
If Range(K, i).Value = 1 Then
Range("M2") = Range(K, i + 1).Value
Else
If Range(K, i).Value = 2 Then
Range("M3") = Range(K, i + 1).Value
Else
If Range(K, i).Value = 3 Then
Range("M1") = Range(K, i + 1).Value
End If
End If
End If
End If
i = i + 1
Wend
End Sub
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201313 22 juil. 2009 à 17:48
Salut,
Sub Macro2()
Dim i As Integer
For i = 1 To 5000
If Range("K" & i).Value = 0 Then
Range("M1") Range("K" & i + 1).Value 1 'ici je ne comprend ce que tu veux faire!
ElseIf Range("K" & i).Value = 1 Then
Range("M2") = Range("K" & i + 1).Value
ElseIf Range("K" & i).Value = 2 Then
Range("M3") = Range("K" & i + 1).Value
ElseIf Range("K" & i).Value = 3 Then
Range("M1") = Range("K" & i + 1).Value
End If
Next
End Sub
tu peux encore simplifier comme ceci:
Sub Macro2()
Dim i As Integer
For i = 1 To 5000
With Range("K" & i)
If .Value = 0 Then
Range("M1") .Offset(,1).Value 1 'ici je ne comprend ce que tu veux faire!
ElseIf .Value = 1 Then
Range("M2") = .Offset(,1).Value
ElseIf .Value = 2 Then
Range("M3") = .Offset(,1).Value
ElseIf .Value = 3 Then
Range("M1") = .Offset(,1).Value
End If
End With
Next
End Sub
ou bien encore:
Sub Macro2zretzert()
Dim i As Integer
For i = 1 To 5000
With Range("K" & i)
Select Case .Value
Case 0
Range("M1") .Offset(, 1).Value 1 'ici je ne comprend ce que tu veux faire
Case 1
Range("M2") = .Offset(, 1).Value
Case 2
Range("M3") = .Offset(, 1).Value
Case 3
Range("M1") = .Offset(, 1).Value
End Select
End With
Next
End Sub
thomthom27
Messages postés6Date d'inscriptionlundi 20 juillet 2009StatutMembreDernière intervention17 septembre 2009 23 juil. 2009 à 08:43
Bonjour je me suis mal expliqué, je souhaite dans la colonne K inscrire des suites 1, 2, 3, 1, 2, 3...... ces suites commencent à ligne i+1 lorsque dans i j'ai la valeur 0. Le problème que je rencontre et que les 0 n'apparaissent pas de façon constante (toute les x lignes) et que la suite 1, 2, 3, 1, 2, 3...... ne finie pas toujours à 3 elle s'arrête lorsque je tombe sur un 0.
j'espère avoir été plus claire.
merci d'avance
cs_simH
Messages postés13Date d'inscriptionlundi 13 juillet 2009StatutMembreDernière intervention18 juin 2010 30 juil. 2009 à 20:28
Bonjour,
Je ne suis pas sûr de bien comprendre ta requête ni ce que vient faire la colonne M dans tout ça.
Le code ci-après écrit ta suite 1,2,3 à partir du moment où la valeur rencontrée dans la colonne K est 0 et s'arrête dès qu'elle rencontre un autre 0. Attention : les cellules vides sont aussi comptées comme des 0 ici.
Sub Macrotest()
Dim i As Integer
Dim j As Integer
Dim k As Integer
For i = 1 To 100
j = i + 1
k = 1
If Range("K" & i).Value = 0 Then
Do While Range("K" & j).Value <> 0 And k < 4
Range("K" & j).Value = k
j = j + 1
k = k + 1
Loop
End If
Next
End Sub