OVH Cloud OVH Cloud

décaler l'écriture d'une macro suite à un test

12 réponses
Avatar
ELDER
Bonjour à tous,

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 !

Merci

2 réponses

1 2
Avatar
ELDER
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



Avatar
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

1 2