Developper un code Macro condition

Résolu/Fermé
nonossov Messages postés 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020 - Modifié par nonossov le 9/07/2015 à 15:21
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 - 14 juil. 2015 à 06:29
Bonjour mes amis,
veuillez m'aider a développer cette macro? voila le code:
l'objet de la macro est: Donner un tableau d'alerte contient toutes les entreprises qui j'ai pas encore payé leurs impôts, l'alerte commence 10 jour avant la date de paiement sinon il n'affiche pas.
voila le fichier ci-joint explique la tache, mais l'ordre de son travail ne marche pas,
si vous avez d'autre questions merci de les poser,
cordialement
http://www.cjoint.com/c/EGjnvxyeYzy
Sub tax()
Dim tx As String
Dim tx2 As String
Dim tx3 As String
Dim tx4 As String
Dim tx5 As String

Dim ans As Integer

Dim tgt As Date
Dim alt As Double
Dim i As Long

tgt = Format(Date, "dd/mm/yyyy")
Range("B2").Select
For i = 1 To 4
If i = 1 Then


Do
alt = ActiveCell.Offset(0, 1).Value - tgt
If ActiveCell.Value = "" And alt < 0 Then
tx5 = ActiveCell.Offset(0, -1).Value & " (" & Range("B1").Value & ")" & " - " & "[ " & -1 * alt & "]" & " Days Over due "

If MsgBox("Did you pay tax for this" & vbCrLf & tx5, vbYesNo) = vbYes Then
ActiveCell.Value = "x"
Else

End If
End If


If ActiveCell.Value = "" And alt <= 10 Then

tx = tx + vbCrLf + ActiveCell.Offset(0, -1).Value & " (" & Range("B1").Value & ")" & " - " & "[ " & alt & "]" & " Days left to pay "
End If
ActiveCell.Offset(1, 0).Select

Loop Until ActiveCell.Offset(1, -1).Value = ""

ElseIf i = 2 Then

Range("D2").Select
Do
alt = ActiveCell.Offset(0, 1).Value - tgt

If ActiveCell.Value = "" And alt < 0 Then

tx5 = ActiveCell.Offset(0, -3).Value & " (" & Range("D1").Value & ")" & " - " & "[ " & alt & "]" & " Days left to pay "

If MsgBox("Did you pay tax for this" & vbCrLf & tx5, vbYesNo) = vbYes Then
ActiveCell.Value = "x"
Else

End If
End If


If ActiveCell.Value = "" And alt <= 10 Then

tx2 = tx2 + vbCrLf + ActiveCell.Offset(0, -3).Value & " (" & Range("D1").Value & ")" & " - " & "[ " & alt & "]" & " Days left to pay "
End If
ActiveCell.Offset(1, 0).Select

Loop Until ActiveCell.Offset(1, -1).Value = ""


ElseIf i = 3 Then

Range("F2").Select
Do
alt = ActiveCell.Offset(0, 1).Value - tgt

If ActiveCell.Value = "" And alt < 0 Then

tx5 = ActiveCell.Offset(0, -5).Value & " (" & Range("F1").Value & ")" & " - " & "[ " & alt & "]" & " Days left to pay "


If MsgBox("Did you pay tax for this" & vbCrLf & tx5, vbYesNo) = vbYes Then
ActiveCell.Value = "x"
Else

End If
End If

If ActiveCell.Value = "" And alt <= 10 Then

tx3 = tx3 + vbCrLf + ActiveCell.Offset(0, -5).Value & " (" & Range("F1").Value & ")" & " - " & "[ " & alt & "]" & " Days left to pay "
End If
ActiveCell.Offset(1, 0).Select

Loop Until ActiveCell.Offset(1, -1).Value = ""


ElseIf i = 4 Then

Range("H2").Select
Do
alt = ActiveCell.Offset(0, 1).Value - tgt

If ActiveCell.Value = "" And alt < 0 Then

tx5 = ActiveCell.Offset(0, -7).Value & " (" & Range("H1").Value & ")" & " - " & "[ " & alt & "]" & " Days left to pay "


If MsgBox("Did you pay tax for this" & vbCrLf & tx5, vbYesNo) = vbYes Then
ActiveCell.Value = "x"
Else

End If
End If

If ActiveCell.Value = "" And alt <= 10 Then

tx4 = tx4 + vbCrLf + ActiveCell.Offset(0, -7).Value & " (" & Range("H1").Value & ")" & " - " & "[ " & alt & "]" & " Days left to pay "
End If
ActiveCell.Offset(1, 0).Select

Loop Until ActiveCell.Offset(1, -1).Value = ""

End If

Next


MsgBox tx & vbCrLf & tx2 & vbCrLf & tx3 & vbCrLf & tx4



End Sub
A voir également:

3 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
14 juil. 2015 à 06:29
Bonjour
le temps de travail de l'alerte est 10 jours avant la date de paiement et 10 après la date de paiement, +1.+2+3...+10 ou -1.-2.-3...10 . J'ai appliqué une petite correction dans les MFC du tableau.Dites-moi si c'est bon.
Pour ce qui est de la présentation du tableau final, Ce que vous voulez, c'est tout simplement une présentation verticale du tableau d'origine, je n'ai donc pas choisi la présentation que vous proposiez (trop lourd à mettre en oeuvre). j'ai simplement opté pour la restitution du résultat dans une feuille à part qui aura le même effet. Essayez
https://www.cjoint.com/c/EGoekKd54Ww
Cdlt
1
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
10 juil. 2015 à 07:04
Bonjour
l'ordre de son travail ne marche pas
Normal, vous décalez 2 fois à chaque boucle, 1 fois en sélectionnant la cellule, puis une deuxième fois dans la boucle
ActiveCell.Offset(1, 0).Select 
Loop Until ActiveCell.Offset(1, -1).Value = ""

A remplacer par
ActiveCell.Offset(1, 0).Select
Loop Until ActiveCell.Offset(0, -1).Value = ""

A tester
Cdlt
0
nonossov Messages postés 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
10 juil. 2015 à 14:10
il ne marche pas, si je met 11/07/2015 il me donne 89 jours reste a payer mais il faut me donne un jours reste, c'est a dire demain
0
nonossov Messages postés 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
10 juil. 2015 à 18:27
up merci de m'aider
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
11 juil. 2015 à 06:24
Bonjour
Cela vient du format "DATE" que vous avez appliquez à la variable "TGT" . Vous forcez le format avec "mm/dd/yyyy" alors que les dates dans le tableau sont au format "dd/mm/yyyy" , il faut faire un choix. Ou bien, vous mettez
tgt = Format(Date, "dd/mm/yyyy")
et vous ne touchez pas au tableau ou alors
tgt = Format(Date, "mm/dd/yyyy")
, et vous corrigez les dates du tableau.
Cdlt
0
nonossov Messages postés 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
11 juil. 2015 à 11:28
oui il fonctionne, est ce que vous pouvez Mr, me donner une presetation de la resultat mieux que j'ai???
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
11 juil. 2015 à 18:29
Bonsoir
l'inconvénient avec le principe précédent, c'est que vous perdez les informations dès que vous validez le résultat, Je vous propose ici, si ça vous convient, de rajouter un tableau qui conserve l'information en faisant les calculs sur la date avec une mise en forme conditionnelle en fonction des échéances.
https://www.cjoint.com/c/EGlqyxwEkew
cdlt
0
nonossov Messages postés 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
13 juil. 2015 à 11:25
Mr frenchie83 merci infiniment pour le travail, vraiment j'ai aime l'idée mais le tableau sera plus long que ça, je préféré si vous permettez d'améliorer le tableau final de la résultat pouvez faire un tableau comme celui là, ci-joint https://www.cjoint.com/c/EGnjyMdFFff
merci infiniment
0
nonossov Messages postés 611 Date d'inscription lundi 29 décembre 2014 Statut Membre Dernière intervention 17 janvier 2020
13 juil. 2015 à 11:28
Ah une chose de plus, :), le temps de travail de l'alerte est 10 jours avant la date de paiement et 10 après la date de paiement, +1.+2+3...+10 ou -1.-2.-3...10
merci beaucoup pour votre effort.
0