Problème sur une macro ki ne fonctionne pas

  • Initiateur de la discussion ludi
  • Date de début
L

ludi

Guest
Bonjour a tous
j'ai un petit problème avec ma procédure ki ne fonctionne pas
il me semble ke c'est au niveau de l'ouverture du fichier
j'essaie aussi d'envoyer des valeurs vers ce fichier à des endroits précis et je ne sais pas si les commandes sont juste pouriez vous m'aider s'il vous plait



Voivi ma macro:


Sub affichageretardpaiement()
'
' affichageretardpaiement Macro
' Macro enregistrée le 02/08/2005 par ludi


Dim i As Integer 'i correspond à la ligne étudiée '
Dim Msg As Variant
Dim Style As Variant
Dim Title As Variant
Dim Response As Variant
Dim t As Integer ' t correpond à l'intervalla de temps pour les factures non payées entre le jour de création de la facture et le jour j'

i = 5
t = 0 'initialisation de la valeur de t '

While (Range('D' & i).Value <> '') 'tant kil y a quelque chose dans la cellule d de la ligne i faire '

If (Range('L' & i).Value = '') Then ' si la cellule k de la ligne i vaut RIEN faire'
If (Range('J' & i).Value = '') Then ' si aucun rappel n'a été effectué '
t = DateDiff('d', Range('I' & i).Value, Date) ' calcul de la différence de jours entre deux dates '
If (t > 50) Then
Msg = 'Le paiement de la facture n'a pas été honoré. Souhaitez-vous proceder au rappel de facture?'
Style = vbYesNo + vbQuestion
Title = 'Rappel Factures Impayées'
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
MyString = 'Oui'
Range('J' & i).Value = Date
rappels_factures.OpenAsTextStream ([2]) 'ouverture du fichier avec possibilité d'ecrire dedans'
Range('H1').Value = Date 'met dans la case A1 du fichier rappel_facture la date'
Range('D12').Value = Range('A' & i).Value 'met dans la case D12 du fichier rappel_facture la valeur de la c ase A de la ligne étudiée du fichier récap facture'
Range('E12').Value = Range('B' & i).Value
Range('F12').Value = Range('C' & i).Value
Range('H21').Value = Range('I' & i).Value
Range('E22').Value = Range('G' & i).Value
Range('H11').Value = Range('F' & i).Value
Range('B15').Value = Range('D' & i).Value

Else
MyString = 'Non'
End If
End If
Else: ' si un rappel a deja ete effectue faire:'
t = DateDiff('d', Range('J' & i).Value, Date) 'calcul de la différence de jours entre deux dates '
If (t > 50) Then
Msg = 'Le paiement de la facture n'a pas été honoré. Souhaitez-vous proceder au rappel de facture?'
Style = vbYesNo + vbQuestion
Title = 'Rappel Factures Impayées'
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
MyString = 'Oui'
' création du deuxième rappel '
Range('J' & i).Value = Date
Else
MyString = 'Non'
End If
End If
End If

End If
i = i + 1

Wend

End Sub
 

Hervé

XLDnaute Barbatruc
Bonjour ludi, le forum

Pas facile sans avoir les fichiers, j'ai essayé de ne pas trop changer la structure de ta macro, je te laisse le soin de faire des essais :

Sub affichageretardpaiement()
'
' affichageretardpaiement Macro
' Macro enregistrée le 02/08/2005 par ludi


Dim i As Integer 'i correspond à la ligne étudiée '
Dim t As Integer ' t correpond à l'intervalla de temps pour les factures non payées entre le jour de création de la facture et le jour j'
Dim chemin As String
Dim fichier As String

fichier = ActiveWorkbook.Name
feuille = ActiveSheet.Name
chemin = ActiveWorkbook.Path
i = 5


While (Range('D' & i).Value <> '') 'tant kil y a quelque chose dans la cellule d de la ligne i faire '
t = 0 'initialisation de la valeur de t '
If (Range('L' & i).Value = '') Then ' si la cellule k de la ligne i vaut RIEN faire'
If (Range('J' & i).Value = '') Then ' si aucun rappel n'a été effectué '
t = DateDiff('d', Range('I' & i).Value, Date) ' calcul de la différence de jours entre deux dates '
If (t > 50) Then
If MsgBox('Le paiement de la facture n'a pas été honoré. Souhaitez-vous proceder au rappel de facture?', vbYesNo + vbQuestion, 'Rappel Factures Impayées') = vbYes Then
MyString = 'Oui'
Range('J' & i).Value = Date
'rappels_factures.OpenAsTextStream ([2]) 'ouverture du fichier avec possibilité d'ecrire dedans'
'if Workbooks('rappels_factures.xls')
Workbooks.Open (chemin & '\\' & 'rappels_factures.xls')
With Workbooks(fichier).Sheets(feuille)
Range('H1').Value = Date 'met dans la case A1 du fichier rappel_facture la date'
Range('D12').Value = .Range('A' & i).Value 'met dans la case D12 du fichier rappel_facture la valeur de la c ase A de la ligne étudiée du fichier récap facture'
Range('E12').Value = .Range('B' & i).Value
Range('F12').Value = .Range('C' & i).Value
Range('H21').Value = .Range('I' & i).Value
Range('E22').Value = .Range('G' & i).Value
Range('H11').Value = .Range('F' & i).Value
Range('B15').Value = .Range('D' & i).Value
End With
Else
MyString = 'Non'
End If
End If
Else: ' si un rappel a deja ete effectue faire:'
t = DateDiff('d', Range('J' & i).Value, Date) 'calcul de la différence de jours entre deux dates '
If (t > 50) Then
If MsgBox('Le paiement de la facture n'a pas été honoré. Souhaitez-vous proceder au rappel de facture?', vbYesNo + vbQuestion, 'Rappel Factures Impayées') = vbYes Then
MyString = 'Oui'
' création du deuxième rappel '
Workbooks(fichier).Sheets(feuille).Range('J' & i).Value = Date
Else
MyString = 'Non'
End If
End If
End If
End If
i = i + 1

Wend

End Sub

Salut :)

Message édité par: Hervé, à: 03/08/2005 11:31
 
L

ludi

Guest
essai effectué

Bonjour
je te remercie de ta réponse
j'ai fais le test et il me semble qu'il y ait encore un probleme je crois savoir d'ou il vient

Mon fichier donneur d'information s'appelle recap-factures.xls il se trouve dans le dossier récap
et le fichier ou j'envoi les informations s'appelle rappel factures et se trouve dans lme doossier factures

il semble donc qu'il faille reculer un peu plus dans l'agencement des fichier sais -tu faire cela
l'erreur doit ('à mon avis') être sur cette commande

Workbooks.Open (chemin & '' & 'rappels_factures.xls')

Je te remercie de ton aide
a bientot bonne après midi :p
 

Hervé

XLDnaute Barbatruc
Re:essai effectué

re

Si les fichiers ne sont pas dans le même répertoire, modifie simplement la ligne chemin = ActiveWorkbook.Path, par :

Code:
Chemin='c:\\factures\\'
a adapter suivant ton arborescence.

et la ligne : Workbooks.Open (chemin & '' & 'rappels_factures.xls')

par :
Code:
Workbooks.Open (chemin  & 'rappels_factures.xls')

Attention pense bien à mettre des antislash pour séparer tes chemins, ils ne sont pas toujours inscrits sur le forum.

Salut
 
L

ludi

Guest
problème de chemin

recoucou
merci de ton aide mais je crois ke mon chemin n'est pas bon j'ai ecris: chemin='K:\\factures\\'
on peut faire un chemin d'un fichier situé sur un disk qui est sur un serveur?
en tout cas il m'affiche le problème quand j'eris
Workbooks.Open (chemin & 'rappels_factures.xls')

quand j'execute pa maccro
il me dis qu'il ne trouve pas le fichier pourtantle chemin est juste
pourrais -tu STP me dire pourkoicar moi j'en sais rien..;

par avance merci
a+ :(
 

Hervé

XLDnaute Barbatruc
Re:problème de chemin

re

dans ton message, je ne vois pas les antislash ???

est-ce du au forum qui ne les accepte pas ou les as-tu oubliés ??

Code:
chemin='K:\\factures\\'

En tout cas je viens de tester, et j'ai pas de souci.

je n'y connais rien en réseau, mais je ne vois pas pourquoi ca ne marcherait pas :huh:

Je te met en pièce jointe le fichier avec lequel j'ai testé ta macro pour que tu puisses voir la synthaxe, corrige bien sur le chemin.

salut
[file name=Classeur2_20050803164223.zip size=10261]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur2_20050803164223.zip[/file]
 

Pièces jointes

  • Classeur2_20050803164223.zip
    10 KB · Affichages: 18

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia