La liaison fait qu'au démarrage, les données sont écrasées :(((

S

sandra

Guest
<HTML>Je dois pour un projet en Xcel 97 à la fac, établir une facture pour un loueur de voiture.Pas de pb. J'ai fai des macros pour les impressions, pour quitter etc...
J'ai créer un planning de l'année, par voiture, où j'aimerai que soit marqué chaque jour si la voiture est dispo ou indispo. J'arrive a créer une formule pour que la date d'entrée et la date de sortie de la facture qui est en train detre remplie incrémente ce tableau (une des limites mais qui pour l'instant n'est pas trop grave : j'arrive a incrémenter ds le planning la date d'entree et la date de retour mais pas celles entre les deux, mais ca tanpis ! le loueur verra a l'oeil que la voiture est sortie, du coup le planning ne servira pour le moment que de repere visuel pour le loueur, on verra plus tard si on peut lors du remplissage de la facture, mettre une validation disant que la voiture est indisponible selon la date de début de la location).

Bref voila juskici ca roule à peu pres. Mon gros probleme : c'est que le planning etant lié avec la facture, il est remis a zéro a chaque fois. Les données "dispo" et "indispo" sur le planning se restent pas !

QUe faire?
Aussi ai je un autre petit souci mais qui pourrai peut etre pas mal m'aider pour le premier pb : ma facture est un modèle n'est ce pas? Je lai donc enregistrer en .xlt
Le vendeur ouvrira ce modele, et en faisant enregistrer sous, il y aura automatiquement le fichier suivi dun chiffre numero auto avec l'extension xls ok????
Comment retrouver la facture de monsieur dupond si on nomme la facture numero 1? a part a noter sur la facture a la main que c la facture numero 1? Il existerai une macro pour cela?

Je précise, je commence a peine VB...
Merci mille fois.</HTML>
 
S

stephane

Guest
<HTML>bonjour


pour le second problème tu peux lire les valeurs d'un classeur fermé.
tu pourrais donc utiliser une fonction dans une formule ou une procédure à exécuter.

je te laisse ci-dessous un exemple

A comparer en termes de rapidité avec la solution de Bruno
cette fonction Excel 4 de J. Walkenbach qui lit des données
dans un classeur fermé.

Public Function GetValue(ByVal path, ByVal file, ByVal sheet, ByVal ref)

' John Walkenbach (Macro XL4)
' ======================
' Retrieves a value from a closed workbook

Dim Arg As String

' Make sure the file exists
If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If

' Create the argument
Arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
Range(ref).Range("A1").Address(, , xlR1C1)
' MsgBox Arg
' Execute an XLM macro
GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents

End Function

Sub ColleDansFeuille()
Dim x
For x = 1 To 10
ActiveSheet.Range("C" & x).Value = _
GetValue("C:\Mes documents\", "MonFichier.xls", "Feuil1", "C" & x)
Next x
End Sub

'tu peux utliser getvalue dans une cellule, écris y =GetValue() puis clique sur le signe égal pour faire apparaître l'assistant formules


autre requête de ta part :
<<Le vendeur ouvrira ce modele, et en faisant enregistrer sous, il y aura automatiquement le fichier suivi dun chiffre numero auto avec l'extension xls ok????>> je crois que j'ai compris. Utilise une procédure évenèmentielle workbook_beforeclose et profites-en pour afficher ta propre boîte de dialogue paramétrée : application.dialogs(xldialogsaveas).show arg1:="mon doc"
Liste des arguments de cette boîte dans l'ordre : document_text, type_num, prot_pwd, backup, write_res_pwd, read_only_rec


excuse moi un tant soit peu de l'ordre dans lequel j'ai répondu, du désordre plutôt ;-)

je n'ai pas compris le problème suivant :
<<Mon gros probleme : c'est que le planning etant lié avec la facture, il est remis a zéro a chaque fois. Les données "dispo" et "indispo" sur le planning se restent pas ! >>

moi j'aimerais bien tes classeurs ;-)))))

bye
steph</HTML>
 
T

Thierry

Guest
<HTML>Salut Sandra,

J'ai fait pas mal de trucs similaires pour des facturations...
Le 17/01/2002 j'ai répondu dans ce forum pour une demande approchante.

J'ai adapté une macro pour en plus faire un report de donnees dans une feuille "Planing". (TON PREMIER PROBLEME)

La macro consite aussi numéroter les factures, à copier la feuille où se trouve ta facture et de la sauver dans un répertoire "facture" avec le numéro comme nom de fichier, tout çà automatiquement '(TON SECOND PROBLEME)

Bon en ce qui concerne les date "la date d'entree et la date de retour mais pas celles entre les deux" J'ai rien compris ? quelle date entre les deux ?

Enfin pour les 2 premiers points il faut faire la préparation suivante :

CLASSEUR EXCEL :
Tu prends le classeur où tu as créé ta première facture, tu nommes la feuille où se trouve ta facture "facture".
Sur la même feuille tu crées un bouton que tu nommes "numéro" (barre d'outils Formulaire/bouton) pour nommer un bouton tu le sélectionnes et tu le nommmes dans la boite de nom (en haut à gauche de la barre de formule)
Créer = 2 autres Feuilles = Compteur / Planing
La Feuille Planing = Mettre sur la ligne 1 les libellés
La Feuille Compteur = Taper 0 en A1
La feuille Facture doit reporter les donnée de ta facture avec des "=A5" "=B8" etc... en "K1" jusqu'à "T1" (en ligne)


EXPLORATEUR WINDOWS :
Tu crées un sous-répertoire nommé "factures" comme çà :
c:\mes documents\factures (ou ailleurs, mais par contre faudra adapter la macro VBA à l'emplacement que tu auras choisi)

EXCEL EDITEUR VBA
Ensuite tu ouvre l'éditeur VBA Dans un module standard (pour ouvrir ALT + F11, ou menu outils/macro/editeur vba.)
Sur la gauche tu devrais voir une arboressence des objets contenu dans ton classeur "Projet VBA". Tu séléctionnes ton classeur, et tu fais menu insertion module. Sur la droite tu devrais voir une page blanche qui est donc le "module1".

Là (sur ce module) tu fais un copié collé du code si dessous


Sub Numerotation()
Application.ScreenUpdating = False
On Error GoTo Sortie

Dim Ancien As String
Dim Nouveau As String
Dim Nom_Fichier As String
Dim Ligne As String

'LA NUMEROTATION DE LA FACTURE
Sheets("Compteur").Select
Ancien = Range("A1").Value
Nouveau = Ancien + 1
MsgBox "Numéro de facture : " & Nouveau
Range("A1").Value = Nouveau
Nouveau = Format(Nouveau, "0000")
Sheets("Facture").Select
Range("E3").Value = "Facture N° " & Nouveau


'LE REPORT DE DONNEE DANS LA FEUILLE PLANING
Ligne = Sheets("Planing").Range("a65536").End(xlUp).Row + 1
Sheets("Planing").Range("a" & Ligne & ":J" & Ligne).Value = Sheets("Facture").Range("K1:T1").Value
'ATTENTION ICI S'ARRANGER POUR FAIRE TON REPORT DE DONNEE SUR LA FEUILLE FACTURE COMME IL CONVIENT EN LIGNE (ICI DE K1 à T1 soit 10 Champs)


'LA SAUVEGARDE DE LA FACTURE
Sheets("Facture").Copy
ActiveSheet.Shapes("Numero").Select
Selection.Delete
Nom_Fichier = "Facture " & Nouveau & ".xls"
ChDrive "C"
ChDir "C:\mes Documents\factures"
ActiveWorkbook.SaveAs Filename:=Nom_Fichier
ActiveWorkbook.Close

'LE NETTOYAGE DE LA FEUILLE DE FACTURATION
Sheets("Facture").Select
Range("F7:F9,C11:E15,D16:E18").Select
'ICI CHANGER LES CELLULLES QUI DOIVENT ETRE NETTOYEES
Selection.ClearContents

Sortie: Exit Sub
End Sub

'===================================================

Pour que le tout marche, il faut que tu assignes cette macro avec le bouton. Donc tu selectionnes le bouton et avec le click droit tu choisis assigner macro => Numerotation

Comme je ne connais pas ton niveau, peut être ce sera plus facile avec le fichier Excel complet, si tu veux je te l'envoie, je l'ai personnalisé avec des voitures pour ton cas !

Bon courage
@+Thierry</HTML>
 
S

sandra

Guest
<HTML>Merci bcp les gars, vous vous etes super dévoué. Xcel c une corvée pr avoi mon dess je sui obligé de passer par la :(
Bref pr le planning jai du abandonner l'idée, pas assez de tps, et surtout je sui allez voir un loueur (ADA) qui n'utilise pas de planning info car tro compliqué vu les fluctuation incessantes des dates de retour etc... De toute facon c a rendre mardi, et je doi surtt maintnt finailiser la facture.
thx</HTML>
 
T

Thierry

Guest
<HTML>Bonsoir Sandra,

Tu auras dans ta Bal, une maquette Excel (avec la macro ci-dessus) qui peut t'inspirer pour résoudre de problème de liaison, et surtout pour que tu ne pense pas qu'Excel est une corvée !!!

Oups, non tu le trouveras pas...

- Les destinataires suivants ont été servis par le serveur de courrier électronique.
sandra.garcia@axa-courtage.com; En échec; 5.1.3 (bad destination mailbox address syntax)
<sandra.garcia@axa-courtage.com>... L utilisateur n existe pas

bon ben bon courage.
@+Thierry</HTML>
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi