Numérotation automatique [Résolu]

Signaler
Messages postés
14
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
5 janvier 2009
-
Messages postés
14
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
5 janvier 2009
-
Bonjour les p'tits loups.

Je viens vous voir pour un problème d'Excel, n'hésitez pas à rediriger si je suis pas dans le bon topic.

première étape (pas trop compliquée) : Je voudrais (pour le boulot) créer un formulaire Excel dans lequel une cellule contenant le numéro s'incrémente à chaque impression du document.

Deuxième étape (un peu plus cossue) : je voudrais que si les utilisateurs se créént des copies de ce fichier sur leur disque dur, mon fichier ne donne pas le même numéro à deux impressionx. pour ce faire j'ai penser que je pourrai mettre un .txt sur le serveur qui donnerai le numéro à chaque fichier imprimé, et enregistrerai le nom de la personne qui à fait l'impression, la date, l'heure et le numéro attribué.

A vos cerveaux et un grand merci d'avance.

Geo

8 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Salut
Première étape :
Facile si l'impression passe par une de tes macros, parce sinon, intercepter la commande "Fichier, Imprimer", ce n'est peut-être pas du gâteau.

Deuxième étape :
Oui, ta solution de fichier peut fonctionner.
Ce n'est qu'une gestion de fichier texte.
Il y a des tas d'exemples de lecture écriture de fichiers sur le site.
Il te suffit :
Solution 1
- d'ouvrir le fichier unique, en lecture (Open en mode Read)
- lire le chiffre (Line Input)
- l'incrémenter
- refermer le fichier (Close)
- réouvrir le fichier en mode écriture (Open en mode Write)
- écrire le chiffre (Print)
- refermer le fichier (Close)

Solution 2
- d'ouvrir le fichier unique, en lecture et écriture (Open en mode Binary)
- lire le chiffre (formatté en entier long (4 octets)) : Get
- l'incrémenter
- repositionner le 'curseur' en début de fichier (Seek)
- écrire le chiffre (Put)
- refermer le fichier (Close)

Ne pas le laisser ouvert trop longtemps sinon tu pourrais avoir (et tu auras certainement) un aléat si 2 postes veulent accéder au même fichier en même temps --> Gérer l'erreur et refaire un nouvel essai après 1 ou 2 secondes.
Une fois que tu as le chiffre, tu ouvres un second fichier dans lequel tu stockeras les données (non, date, heure ...)
Là aussi, fichier unique que tu ouvriras en mode Append afin d'être positionné de suite à la fin du fichier pour y ajouter ta ligne.

Si tu n'avais pas eu besoin de consigner les noms, dates ..., tu pourrais te suffire d'un compteur local, par poste.
L'identification unique de l'impression pouvant être faite par 'nom de la machine' (ou adresse IP) suivi de ce numéro.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
5 janvier 2009

D'abord merci beaucoup de t'intéresser à mon problème.

avec tes conseils, j'ai réussi à faire ça.
ede contient le numéro du document
nouveau contient le numéro à lire, incrémenter et reporter sur nouveau.

tu remarquera que je suis une brèle en VB car ma macro est "sale" mais ca marche, le numéro s'incrémente et se reporte sur le doc de destination quand je click sur un bouton auquel je l'ai affecté.

maintenant je voudrai que cette macro fonctionne quelque soit le nom du fichier nouveau, j'imagine qu'il faut qu'elle commence par Dimqqchose as workbook mais j'en sais pas plus.

ensuite je voudrai que cette macro se déclenche à chaque impression. il faut donc quelquechose du genre
Private Sub Workbook_BeforePrint(Cancel As Boolean)
mamacro
end sub
mais encore une fois je n'en sais pas plus

ci-dessous ma macro. encore merci pour ton aide

Sub Macro3()
'
Workbooks.Open Filename:= _
        "C:\Documents and Settings\ggrave\Bureau\Nouveau Feuille de calcul Microsoft Excel.xls"
casefin = Range("A1").End(xlDown).Address
Range(casefin).Select
Selection.Copy
    Windows("ede.xls").Activate
    Range("H2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Save
    Windows("Nouveau Feuille de calcul Microsoft Excel.xls").Activate
    Dim nb As Integer
nb = ActiveCell
'Selectionne la cellule directement en dessous
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell = nb + 1    
      ActiveWorkbook.Save
      ActiveWorkbook.Close
Windows("ede.xls").Activate
End Sub
Messages postés
14
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
5 janvier 2009

j'ai réussi a la lancer à l'impression.

il fallait mettre
Private Sub Workbook_BeforePrint(Cancel As Boolean)
mamacro
end sub
dans thisworkbook et laisser la macro dans module.
Messages postés
14
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
5 janvier 2009

le problème c'est que le numéro s'incrémente même si j'annule l'impression.

sais tu comment restreindre la macro à une impression confirmée?

par contre j'oubli la consignation de la date et de l'heure, on fera juste le numéro.

encore merci
Messages postés
14
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
5 janvier 2009

ok pour la date et l'heure j'ai rajouté

ActiveCell.Offset(0, 1).Select
ActiveCell = Now

Il me reste deux choses à solutionnée :
- lancer l'incrémentation uniquement à la confirmation de l'impression.
- que la macro fonctionne encore si le nom du fichier qui la contient change.

désolé pour les multi post, je trouve pas de fonction éditer.

merci d'avance.
Messages postés
14
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
5 janvier 2009

Yes!!!!!!

Set nom = activeworkbook

ensuite faire nom.activate

bowdel!!!!

allez plus que l'histoire d'impression confirmée!!

eh bein 3h pour ça!
Messages postés
14
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
5 janvier 2009

personne pour cette histoire d'impression confirmée?

s'il vous plait?
Messages postés
14
Date d'inscription
mardi 30 septembre 2008
Statut
Membre
Dernière intervention
5 janvier 2009

up