Traitement de log sous excel

Traitement de log sous excel - VB/VBA/VBS - Programmation

Marsh Posté le 20-02-2004 à 14:51:57    

Bon j'vous explique mon pbm (vu qu'apparemment ici c plein de gens sympas :D)
 
Je recupere les logs d'impression de mon 2k serveur.
le pbm quand je les importe dans excel, c'est que la colonne detail me donne un truc comme ça :
 
Le document 1, Microsoft Word - superdocumentvachementimportant.doc possédé par userquiaoséimprimer a été imprimé sur hp LaserJet 1300n via le port hpLaserJet1300n_copy_1. Taille en octets : 59744 ; pages imprimées : 3  
 
le tout dans une seule cellule (la dernière)
sauf que forcement pour compter le nb de pages pour chaque user je suis obligée de retaper à la main le nb de page ds la dernière colonne. c pas que je suis faignasse, mais à environ 200 impressions par jour et un compte rendu bi mensuel ça me gonfle un peu :o
 
donc je voudrais uen macro ou un petit truc en vba qui me prenne le chiffre marqué derrière "pages imprimées :" et me le recopie dans la colonne suivante (comme je faisais à la main sauf que g plus besoin de le faire)
 
y'a qq'un qui peut m'expliquer comment on lui dit ça au biniou svp ? (en langage treeees simple que je puisse reutiliser mais faut que je comprenne et c pas gagner, les admins reseau en prog c tjrs des grosses quiches :o )

Reply

Marsh Posté le 20-02-2004 à 14:51:57   

Reply

Marsh Posté le 20-02-2004 à 14:55:56    

Franchement, si c'est pour faire du VBA, retourne sur Discus, hein... :sarcastic:
 
 
 
[:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 20-02-2004 à 14:56:41    

tu crois que sur discu y'aura qq'un pr m'expliquer comment on fait ?

Reply

Marsh Posté le 20-02-2004 à 15:00:22    

Boaf :D Attends drasche ou mareek, c'est eux les fondus de VB, perso j'y panne rien :o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 20-02-2004 à 15:08:54    

deux possibilités: tu mets une formule dans la seconde colonne pour extraire x caractères (le plus simple), mais j'imagine que le nombre de pages peut tenir sur 2 chiffres?  d'après ce que tu dis, extraire les deux derniers caractères et les convertir en nombre, ça devrait le faire avec une simple formule. Euh Right(A1, 2) par exemple.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 20-02-2004 à 15:09:44    

drasche a écrit :

deux possibilités: tu mets une formule dans la seconde colonne pour extraire x caractères (le plus simple), mais j'imagine que le nombre de pages peut tenir sur 2 chiffres?  d'après ce que tu dis, extraire les deux derniers caractères et les convertir en nombre, ça devrait le faire avec une simple formule. Euh Right(A1, 2) par exemple.


bah c'est ce a quoi je pensais, mais si jamais y a 100 pages [:dawa]
bon d'accord, c'est peu probable..

Reply

Marsh Posté le 20-02-2004 à 15:16:59    

=VALUE(RIGHT(A1;2)) en fait
 
si ya plus tu recopies la formule, ça sera plus rapide qu'une macro à mon avis.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 20-02-2004 à 15:21:02    

Si le champ "pages imprimées : xxxx" est tout au bout de la ligne, en cherchant à reculons le dernier ":" ou le dernier espace, il restera le nombre. Recherches de caractères un peu "lourdes".
J'avais écrit un prog DOS y a longtemps qui coupait les fichiers en colonnes mais valable que si champs de longueur fixe...
 
En QBasic, on peut écrire un truc qui lit ligne par ligne et crache que les nombres après "pages imprimées : " mais faut faire le lien avec le reste des données...
Si y en a qu'un par ligne, en remplaçant les ";" par chr$(9) (tabulation horizontale) Excel serait pas plus heureux ? Devrait faire deux colonnes ? En CSV, ça devrait être le séparateur colonne, normalement, donc "direct" (en théorie).

Reply

Marsh Posté le 20-02-2004 à 15:27:19    

drasche a écrit :

deux possibilités: tu mets une formule dans la seconde colonne pour extraire x caractères (le plus simple), mais j'imagine que le nombre de pages peut tenir sur 2 chiffres?  d'après ce que tu dis, extraire les deux derniers caractères et les convertir en nombre, ça devrait le faire avec une simple formule. Euh Right(A1, 2) par exemple.


 
2 chiffres, voir 3...
 
non ça marche pas, à cause des ": " avant


Message édité par thalis le 20-02-2004 à 15:28:55
Reply

Marsh Posté le 20-02-2004 à 15:28:35    

carbon_14 a écrit :

En QBasic, on peut écrire un truc qui lit ligne par ligne et crache que les nombres après "pages imprimées : " mais faut faire le lien avec le reste des données...
Si y en a qu'un par ligne, en remplaçant les ";" par chr$(9) (tabulation horizontale) Excel serait pas plus heureux ? Devrait faire deux colonnes ? En CSV, ça devrait être le séparateur colonne, normalement, donc "direct" (en théorie).


 
euh... g rien compris au binz. là c le dernier ":" je pense à chercher.

Reply

Marsh Posté le 20-02-2004 à 15:28:35   

Reply

Marsh Posté le 20-02-2004 à 15:35:16    

Thalis a écrit :

2 chiffres, voir 3...
 
non ça marche pas, à cause des ": " avant


mmmh dans ce cas, le plus sûr est la macro, style tu pars du dernier caractère, tu continues à lire le précédent. Quand c'est autre chose, tu t'arrêtes, tu gardes les numéros pour en faire un nombre, que tu renvoies à l'appelant. Et tu utilises direct le nom de la fonction VBA dans la page. Ca doit le faire.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 20-02-2004 à 15:36:28    

ouais en fait non, on peut chercher l'occurence de "pages imprimées  :" et lire ce qu'il y a après sans se tromper alors.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 20-02-2004 à 15:42:35    

drasche a écrit :

ouais en fait non, on peut chercher l'occurence de "pages imprimées  :" et lire ce qu'il y a après sans se tromper alors.


 
bon pas de pbm :D et je lui dit ça comment ?

Reply

Marsh Posté le 20-02-2004 à 15:46:15    

tu crées une macro en VBA qui va rechercher "imprimées : ", sachant que la suite est le nombre de pages, ça doit donner ceci:
 

Code :
  1. Public Function FindNbPages(strCell As String) As Long
  2.     Const NBRPAGES As String = "imprimées : "
  3.     Dim lPosition As Long
  4.     ' Recherche de l'occurence
  5.     lPosition = InStr(1, strCell, NBRPAGES)
  6.     ' Doit être > 0 (sinon on s'en fout, pas pertinent)
  7.     If lPosition > 0 Then
  8.         ' Rechercher le début du nombre
  9.         lPosition = lPosition + Len(NBRPAGES)
  10.         ' Renvoi du nombre
  11.         FindNbPages = CLng(Mid$(strCell, lPosition))
  12.     Else
  13.         ' Résultat non pertinent, aucun résultat
  14.         FindNbPages = 0
  15.     End If
  16. End Function


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 20-02-2004 à 16:10:32    

ah oki merci. dernière question, je la fous où la macro vba ? :D (ds les macro oui je sais, mais je la fais s'executer à chaque ligne c ça ?)

Reply

Marsh Posté le 20-02-2004 à 16:13:19    

oui, tu l'utilises comme n'importe quelle macro standard Excel.
 

Code :
  1. =FindNbPages(A1)


 
par exemple


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 20-02-2004 à 16:25:38    

oki merci bcp de ton aide (celle de ceux qui ont repondu aussi hein :o ) :D

Reply

Marsh Posté le 20-02-2004 à 16:46:14    

Pour la solution avec la colonne supplémentaire extrayant le nombre de pages, voici la formule Excel à utiliser :
 
=CNUM(DROITE(LC(-1);NBCAR(LC(-1))-CHERCHE("pages imprimées :";LC(-1))-NBCAR("pages imprimées :" )))
 
 
 
a+

Reply

Marsh Posté le 20-02-2004 à 19:54:52    

Sinon, je sais pas si renommé (une copie) en .CSV ne permettrait pas de lire deux colonnes.
 
fichier CSV (comma separated values) :  
a;b;c
a est ds première colonne, b dans la seconde, c ds la troisième
Vu qu'il y a un point-virgule et un seul juste avant le bon endroit, à voir. Ca simplifierait la macro, juste "pages imprimées :" à enlever.

Reply

Marsh Posté le 20-02-2004 à 20:05:49    

vi le pbm c que le log d'origine est déjà un csv, avec tab en separation

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed