J'ai réalisé une macro qui reporte le vendredi soir tous les comptes réalisé
dans la semaine. En générale la semaine suivante les comptes sont remis à
zéro lorsque la production du produit se termine. Seulement il arrive
parfois que la commande soit importante et que l'on soit obligé de faire ce
" report" plus d'une semaine. Existe t'il un moyen de tester si la cellule
est déjà rempli et le cas échéant décaler sur la cellule suivante.
Exemple en A1: j'ai rien ou 0 affiché. la macro écrit
en A1 j'ai 1000 affiché, il faudrait que la macro écrive en A2 pour ne pas
effacer A1 !
Bon je viens de tester et ça ne fonctionne pas comme je l'espérais. Si c31 / c32 et c33 sont rempli ta macro note bien plus de report possible mais elle écrit quand même. Je vais récupérer ton code pour empêcher l'exécution si C31 est rempli et faire trois macros de report.
Donc ça va me donner ça:
Sub Test1() If [C31] <> 0 And [C31] <> "" Then MsgBox "Un report a déjà été fait utilisé le suivant" End If ma macro
Là ça fonctionne, le bout de code indique qu'un report a été fait mais ça lance le reste de la macro !!
Je suis vraiment novice alors si tu pouvais ( sans abuser ) m'indiquer quel autre morceaux je dois prendre dans ton code ça m'aiderais beaucoup !
"Papyty" a écrit dans le message de news:
Salut @ Tous, ELDER a écrit:
Je pense que c'est le mieux, comme ça j'ai qu'une macro ( certe plus longue ) mis qui teste avant d'écrire
Correction
Sub Test2() If [C31] <> 0 And [C31] <> "" Then If [C32] <> 0 And [C32] <> "" Then If [C33] <> 0 And [C33] <> "" Then MsgBox "Plus de report possible" End If Set Cel = [C32] For i = 0 To 4 Cel.Offset(1, i) = Cel.Offset(0, i) Next Cel.Offset(13, 0) = Cel.Offset(10, 0) Cel.Offset(13, 1) = Cel.Offset(10, 1) Cel.Offset(13, 3) = Cel.Offset(10, 3) For i = 93 To 111 Step 9 For j = -1 To 2 Cel.Offset(i + 1, j) = Cel.Offset(i, j) Next j Cel.Offset(i + 1, 4) = Cel.Offset(i, 4) Next i End If Set Cel = [C31] For i = 0 To 4 Cel.Offset(1, i) = Cel.Offset(0, i) Next Cel.Offset(11, 0) = Cel.Offset(8, 0) Cel.Offset(11, 1) = Cel.Offset(8, 1) Cel.Offset(11, 3) = Cel.Offset(8, 3) For i = 93 To 111 Step 9 For j = -1 To 2 Cel.Offset(i + 1, j) = Cel.Offset(i, j) Next j Cel.Offset(i + 1, 4) = Cel.Offset(i, 4) Next i End If 'Ta macro de remplissage End Sub
est ce que ça vas -- @+ Thierry
Bon je viens de tester et ça ne fonctionne pas comme je l'espérais. Si c31 /
c32 et c33 sont rempli ta macro note bien plus de report possible mais elle
écrit quand même. Je vais récupérer ton code pour empêcher l'exécution si
C31 est rempli et faire trois macros de report.
Donc ça va me donner ça:
Sub Test1()
If [C31] <> 0 And [C31] <> "" Then
MsgBox "Un report a déjà été fait utilisé le suivant"
End If
ma macro
Là ça fonctionne, le bout de code indique qu'un report a été fait mais ça
lance le reste de la macro !!
Je suis vraiment novice alors si tu pouvais ( sans abuser ) m'indiquer quel
autre morceaux je dois prendre dans ton code ça m'aiderais beaucoup !
"Papyty" <papyty@yahoo.fr> a écrit dans le message de
news:7946qxnlo92q.w6786o89szv.dlg@40tude.net...
Salut @ Tous,
ELDER a écrit:
Je pense que c'est le mieux, comme ça j'ai qu'une macro ( certe plus
longue ) mis qui teste avant d'écrire
Correction
Sub Test2()
If [C31] <> 0 And [C31] <> "" Then
If [C32] <> 0 And [C32] <> "" Then
If [C33] <> 0 And [C33] <> "" Then
MsgBox "Plus de report possible"
End If
Set Cel = [C32]
For i = 0 To 4
Cel.Offset(1, i) = Cel.Offset(0, i)
Next
Cel.Offset(13, 0) = Cel.Offset(10, 0)
Cel.Offset(13, 1) = Cel.Offset(10, 1)
Cel.Offset(13, 3) = Cel.Offset(10, 3)
For i = 93 To 111 Step 9
For j = -1 To 2
Cel.Offset(i + 1, j) = Cel.Offset(i, j)
Next j
Cel.Offset(i + 1, 4) = Cel.Offset(i, 4)
Next i
End If
Set Cel = [C31]
For i = 0 To 4
Cel.Offset(1, i) = Cel.Offset(0, i)
Next
Cel.Offset(11, 0) = Cel.Offset(8, 0)
Cel.Offset(11, 1) = Cel.Offset(8, 1)
Cel.Offset(11, 3) = Cel.Offset(8, 3)
For i = 93 To 111 Step 9
For j = -1 To 2
Cel.Offset(i + 1, j) = Cel.Offset(i, j)
Next j
Cel.Offset(i + 1, 4) = Cel.Offset(i, 4)
Next i
End If
'Ta macro de remplissage
End Sub
Bon je viens de tester et ça ne fonctionne pas comme je l'espérais. Si c31 / c32 et c33 sont rempli ta macro note bien plus de report possible mais elle écrit quand même. Je vais récupérer ton code pour empêcher l'exécution si C31 est rempli et faire trois macros de report.
Donc ça va me donner ça:
Sub Test1() If [C31] <> 0 And [C31] <> "" Then MsgBox "Un report a déjà été fait utilisé le suivant" End If ma macro
Là ça fonctionne, le bout de code indique qu'un report a été fait mais ça lance le reste de la macro !!
Je suis vraiment novice alors si tu pouvais ( sans abuser ) m'indiquer quel autre morceaux je dois prendre dans ton code ça m'aiderais beaucoup !
"Papyty" a écrit dans le message de news:
Salut @ Tous, ELDER a écrit:
Je pense que c'est le mieux, comme ça j'ai qu'une macro ( certe plus longue ) mis qui teste avant d'écrire
Correction
Sub Test2() If [C31] <> 0 And [C31] <> "" Then If [C32] <> 0 And [C32] <> "" Then If [C33] <> 0 And [C33] <> "" Then MsgBox "Plus de report possible" End If Set Cel = [C32] For i = 0 To 4 Cel.Offset(1, i) = Cel.Offset(0, i) Next Cel.Offset(13, 0) = Cel.Offset(10, 0) Cel.Offset(13, 1) = Cel.Offset(10, 1) Cel.Offset(13, 3) = Cel.Offset(10, 3) For i = 93 To 111 Step 9 For j = -1 To 2 Cel.Offset(i + 1, j) = Cel.Offset(i, j) Next j Cel.Offset(i + 1, 4) = Cel.Offset(i, 4) Next i End If Set Cel = [C31] For i = 0 To 4 Cel.Offset(1, i) = Cel.Offset(0, i) Next Cel.Offset(11, 0) = Cel.Offset(8, 0) Cel.Offset(11, 1) = Cel.Offset(8, 1) Cel.Offset(11, 3) = Cel.Offset(8, 3) For i = 93 To 111 Step 9 For j = -1 To 2 Cel.Offset(i + 1, j) = Cel.Offset(i, j) Next j Cel.Offset(i + 1, 4) = Cel.Offset(i, 4) Next i End If 'Ta macro de remplissage End Sub
est ce que ça vas -- @+ Thierry
Papyty
Salut @ Tous, ELDER a écrit:
c32 et c33 sont rempli ta macro note bien plus de report possible mais elle
écrit quand même. Je vais récupérer ton code pour empêcher l'exécution si C31 est rempli et faire trois macros de report.
Exact j'ai laisser un gros bug Voici la correction Sub Test2() If [C31] <> 0 And [C31] <> "" Then If [C32] <> 0 And [C32] <> "" Then If [C33] <> 0 And [C33] <> "" Then MsgBox "Plus de report possible" Exit Sub End If Set Cel = [C32] For i = 0 To 4 Cel.Offset(1, i) = Cel.Offset(0, i) Next Cel.Offset(13, 0) = Cel.Offset(10, 0) Cel.Offset(13, 1) = Cel.Offset(10, 1) Cel.Offset(13, 3) = Cel.Offset(10, 3) For i = 93 To 111 Step 9 For j = -1 To 2 Cel.Offset(i + 1, j) = Cel.Offset(i, j) Next j Cel.Offset(i + 1, 4) = Cel.Offset(i, 4) Next i End If Set Cel = [C31] For i = 0 To 4 Cel.Offset(1, i) = Cel.Offset(0, i) Next Cel.Offset(11, 0) = Cel.Offset(8, 0) Cel.Offset(11, 1) = Cel.Offset(8, 1) Cel.Offset(11, 3) = Cel.Offset(8, 3) For i = 93 To 111 Step 9 For j = -1 To 2 Cel.Offset(i + 1, j) = Cel.Offset(i, j) Next j Cel.Offset(i + 1, 4) = Cel.Offset(i, 4) Next i End If 'Ta macro de remplissage End Sub
-- @+ Thierry
Salut @ Tous, ELDER a écrit:
c32 et c33 sont rempli ta macro note bien plus de report possible mais
elle
écrit quand même. Je vais récupérer ton code pour empêcher l'exécution si
C31 est rempli et faire trois macros de report.
Exact j'ai laisser un gros bug
Voici la correction
Sub Test2()
If [C31] <> 0 And [C31] <> "" Then
If [C32] <> 0 And [C32] <> "" Then
If [C33] <> 0 And [C33] <> "" Then
MsgBox "Plus de report possible"
Exit Sub
End If
Set Cel = [C32]
For i = 0 To 4
Cel.Offset(1, i) = Cel.Offset(0, i)
Next
Cel.Offset(13, 0) = Cel.Offset(10, 0)
Cel.Offset(13, 1) = Cel.Offset(10, 1)
Cel.Offset(13, 3) = Cel.Offset(10, 3)
For i = 93 To 111 Step 9
For j = -1 To 2
Cel.Offset(i + 1, j) = Cel.Offset(i, j)
Next j
Cel.Offset(i + 1, 4) = Cel.Offset(i, 4)
Next i
End If
Set Cel = [C31]
For i = 0 To 4
Cel.Offset(1, i) = Cel.Offset(0, i)
Next
Cel.Offset(11, 0) = Cel.Offset(8, 0)
Cel.Offset(11, 1) = Cel.Offset(8, 1)
Cel.Offset(11, 3) = Cel.Offset(8, 3)
For i = 93 To 111 Step 9
For j = -1 To 2
Cel.Offset(i + 1, j) = Cel.Offset(i, j)
Next j
Cel.Offset(i + 1, 4) = Cel.Offset(i, 4)
Next i
End If
'Ta macro de remplissage
End Sub
c32 et c33 sont rempli ta macro note bien plus de report possible mais elle
écrit quand même. Je vais récupérer ton code pour empêcher l'exécution si C31 est rempli et faire trois macros de report.
Exact j'ai laisser un gros bug Voici la correction Sub Test2() If [C31] <> 0 And [C31] <> "" Then If [C32] <> 0 And [C32] <> "" Then If [C33] <> 0 And [C33] <> "" Then MsgBox "Plus de report possible" Exit Sub End If Set Cel = [C32] For i = 0 To 4 Cel.Offset(1, i) = Cel.Offset(0, i) Next Cel.Offset(13, 0) = Cel.Offset(10, 0) Cel.Offset(13, 1) = Cel.Offset(10, 1) Cel.Offset(13, 3) = Cel.Offset(10, 3) For i = 93 To 111 Step 9 For j = -1 To 2 Cel.Offset(i + 1, j) = Cel.Offset(i, j) Next j Cel.Offset(i + 1, 4) = Cel.Offset(i, 4) Next i End If Set Cel = [C31] For i = 0 To 4 Cel.Offset(1, i) = Cel.Offset(0, i) Next Cel.Offset(11, 0) = Cel.Offset(8, 0) Cel.Offset(11, 1) = Cel.Offset(8, 1) Cel.Offset(11, 3) = Cel.Offset(8, 3) For i = 93 To 111 Step 9 For j = -1 To 2 Cel.Offset(i + 1, j) = Cel.Offset(i, j) Next j Cel.Offset(i + 1, 4) = Cel.Offset(i, 4) Next i End If 'Ta macro de remplissage End Sub