Macro pour écriture automatique

thomthom27 Messages postés 6 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 17 septembre 2009 - 22 juil. 2009 à 16:27
cs_simH Messages postés 13 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 18 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

3 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
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

A+
0
thomthom27 Messages postés 6 Date d'inscription lundi 20 juillet 2009 Statut Membre Dernière intervention 17 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
0
cs_simH Messages postés 13 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 18 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
0
Rejoignez-nous