Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/05/2011, 14h10   #1
Invité de passage
 
Homme Jeremy
Ingénieur ferroviaire
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme Jeremy

Informations professionnelles :
Activité : Ingénieur ferroviaire
Secteur : Transports

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 4
Points : 4
Par défaut Lecture binaire d'un fichier à un offset précis

Bonjour,

Je développe actuellement une macro Excel qui analyse des enregistrements binaires (enregistrements ayant lieu à bord de métros). Chaque enregistrement est un fichier qui comporte une entête suivie de trames de données de taille fixe.

Je cherche à accélérer ma macro qui est lente pour la raison suivante : je ne sais pas lire un fichier à partir d'un certain offset. Je sais uniquement commencer sa lecture au premier octet, et lire octet par octet jusqu'à atteindre l'octet qui m'intéresse.

L'extrait de code ci-dessous reflète ce que je fais :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Open Travail_Analyse_A_Faire.Liste_Fichiers_FULL_PATH_A_Traiter(No_Fichier) For Binary As #1
 
 
    No_Octet_Ds_Fichier = 0
    Nb_Octets_Dans_Fichier = 0
    ReDim Tableau_Octets_ASCII(1 To 1)
    ReDim Tableau_Octets_DEC(1 To 1)
    ReDim Tableau_Octets_HEX(1 To 1)
 
    Do While Not EOF(1)
        ' Lecture de l'octet dans le fichier binaire
        Nb_Octets_Dans_Fichier = Nb_Octets_Dans_Fichier + 1
        ReDim Preserve Tableau_Octets_ASCII(1 To Nb_Octets_Dans_Fichier)
        ReDim Preserve Tableau_Octets_DEC(1 To Nb_Octets_Dans_Fichier)
        ReDim Preserve Tableau_Octets_HEX(1 To Nb_Octets_Dans_Fichier)
        Tableau_Octets_ASCII(Nb_Octets_Dans_Fichier) = InputB(1, #1)
        Tableau_Octets_DEC(Nb_Octets_Dans_Fichier) = AscB(Tableau_Octets_ASCII(Nb_Octets_Dans_Fichier))
        Tableau_Octets_HEX(Nb_Octets_Dans_Fichier) = hex(Tableau_Octets_DEC(Nb_Octets_Dans_Fichier))
        If Len(Tableau_Octets_HEX(Nb_Octets_Dans_Fichier)) = 1 Then
            Tableau_Octets_HEX(Nb_Octets_Dans_Fichier) = 0 & Tableau_Octets_HEX(Nb_Octets_Dans_Fichier)
        End If
    Loop
    Close #1
Ma question est la suivante : connaissez vous un moyen de lire un octet d'un fichier à un certain offset sans avoir à lire tout le début du fichier ? Je ne connais rien au .NET ni à l'importation de classes/librairies externes dans VBA, mais je peux m'y mettre.

J'ai déjà cherché par ci et par là, googlisé, mais je ne trouve rien de concret. Souvent, je tombe sur du VB.NET mais je ne sais pas comment linker ça avec VBA.

A vos suggestions, et merci par avance pour votre aide !

Jérémy
israel.jeremy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 21h39   #2
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 411
Points : 14 411
Envoyer un message via Skype™ à Pierre Fauconnier
Bonjour

Normalement, tu peux déterminer le nombre d'octets à lire en premier paramètre de la fonction.

Pourrais-tu essayer ceci?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub LectureBinaire()
  Dim NomFichier As String
  Dim LongueurEntete As Long
  Dim LongueurSegment As Long
  Dim Entete As String
 
  NomFichier = "d:\monfichier.bin"
  LongueurEntete = 20
  LongueurSegment = 10
 
  ReDim tabsegments(1 To 1)
 
  Open NomFichier For Binary As #1
  Entete = InputB(LongueurEntete, #1)
  Do While Not EOF(1)
    tabsegments(UBound(tabsegments)) = InputB(LongueurSegment, #1)
    ReDim Preserve tabsegments(1 To UBound(tabsegments) + 1)
  Loop
  Close #1
 
End Sub
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 12h46   #3
Invité de passage
 
Homme Jeremy
Ingénieur ferroviaire
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme Jeremy

Informations professionnelles :
Activité : Ingénieur ferroviaire
Secteur : Transports

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 4
Points : 4
Merci pour ta réponse.

Je pense que cela ne résout pas mon problème : cette commande me permet de non plus faire de la lecture octet par octet, mais N octets par N octets. La lecture commence cependant toujours au début du fichier.

Ce que je cherche à faire, c'est lire N octets directement à partir du i-ème OCTET, sans avoir à lire le début.
israel.jeremy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 13h06   #4
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 411
Points : 14 411
Envoyer un message via Skype™ à Pierre Fauconnier
Ca, tu ne peux pas faire.

Tu dois "éliminer" les x premiers octets en les lisant, quitte à les mettre dans une variable dont tu ne te sers pas. Simplement, tu ne lis pas les x premiers octets un à un dans une boucle, mais tu les évacues en une seule ligne.

La lecture d'un fichier binaire comme ici est toujours séquentielle, et au final, tu auras lu tout ton fichier.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 13h11   #5
Invité de passage
 
Homme Jeremy
Ingénieur ferroviaire
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme Jeremy

Informations professionnelles :
Activité : Ingénieur ferroviaire
Secteur : Transports

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 4
Points : 4
Par défaut Ok :(

Ce que je souhaite faire n'est donc pas possible. Merci à toi pour tes réponses en tout cas. Je dois changer de langage si je veux pouvoir faire cela j'imagine ?
israel.jeremy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h08   #6
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 411
Points : 14 411
Envoyer un message via Skype™ à Pierre Fauconnier
Je ne comprends pas en quoi c'est gênant de lire d'abord les x premiers octets "d'un seul coup" même si ce n'est pas utile, mais tu as sûrement de bonnes raisons de ne pas accepter cette solution...
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 15h53   #7
Invité de passage
 
Homme Jeremy
Ingénieur ferroviaire
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme Jeremy

Informations professionnelles :
Activité : Ingénieur ferroviaire
Secteur : Transports

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 4
Points : 4
En fait, je traite des centaines de gigas de binaires et toute lecture inutile me fait perdre du temps, voilà tout Ca fonctionne quand même et c'est pas génant sur quelques fichiers, mais si on recherche la productivité, c'est indispensable de pouvoir lire uniquement ce dont j'ai besoin. Seulement 1/4 des infos contenues dans le fichier m'intéresse. Penses tu que je dois-ve changer de langage ?
israel.jeremy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 16h33   #8
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
bjr,

voir les API CreateFile, SetFilePointer, ReadFile, CloseHandle

un exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
Option Explicit
 
' Source des déclarations : http://support.microsoft.com/kb/189981/fr
Private Declare Function ReadFile Lib "kernel32" _
                        (ByVal hFile As Long, _
                         lpBuffer As Any, _
                         ByVal nNumberOfBytesToRead As Long, _
                         lpNumberOfBytesRead As Long, _
                         ByVal lpOverlapped As Long) As Long
 
Private Declare Function CloseHandle Lib "kernel32" _
                        (ByVal hObject As Long) As Long
 
Private Declare Function WriteFile Lib "kernel32" _
                        (ByVal hFile As Long, _
                         lpBuffer As Any, _
                         ByVal nNumberOfBytesToWrite As Long, _
                         lpNumberOfBytesWritten As Long, _
                         ByVal lpOverlapped As Long) As Long
 
Private Declare Function CreateFile Lib "kernel32" _
        Alias "CreateFileA" (ByVal lpFileName As String, _
                             ByVal dwDesiredAccess As Long, _
                             ByVal dwShareMode As Long, _
                             ByVal lpSecurityAttributes As Long, _
                             ByVal dwCreationDisposition As Long, _
                             ByVal dwFlagsAndAttributes As Long, _
                             ByVal hTemplateFile As Long) As Long
 
Private Declare Function SetFilePointer Lib "kernel32" _
                        (ByVal hFile As Long, _
                         ByVal lDistanceToMove As Long, _
                         lpDistanceToMoveHigh As Long, _
                         ByVal dwMoveMethod As Long) As Long
 
Private Declare Function FlushFileBuffers Lib "kernel32" _
                        (ByVal hFile As Long) As Long
 
Private Const GENERIC_WRITE = &H40000000
Private Const GENERIC_READ = &H80000000
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const CREATE_ALWAYS = 2
Private Const OPEN_ALWAYS = 4
Private Const INVALID_HANDLE_VALUE = -1
 
Private Const FILE_BEGIN = 0, FILE_CURRENT = 1, FILE_END = 2
 
Public Function Lecture()
Dim lfile As Long
Dim lBuffer As String
Dim lNbByteRead As Long
' Creation pointeur vers le fichier
lfile = CreateFile("C:\MonFichiers.txt", GENERIC_READ, 0, _
                           0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)
If lfile <> INVALID_HANDLE_VALUE Then
    ' Position au 6è caracactère (debut du fichier = 0)
    SetFilePointer lfile, 5, 0, FILE_BEGIN
    ' Buffer de 50 caractères
    lBuffer = Space(50)
    ' Lecture de 50 caractères (attention au byval pour le buffer)
    ReadFile lfile, ByVal lBuffer, 50, lNbByteRead, 0
    ' lNbByteRead contient le nombre de caractères lus
    ' Fermeture du fichier
    CloseHandle lfile
End If
 
End Function
à tester sur un gros fichier mais j'ai bon espoir que ce soit assez rapide
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/05/2011, 16h39   #9
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 411
Points : 14 411
Envoyer un message via Skype™ à Pierre Fauconnier
Salut Arkham,

Ne penses-tu pas que InputB est simplement "la couche VBA" de l'api, et donc, qu'elle utilise l'api?

Dès lors, je pense (je n'en sais rien, c'est juste une réflexion) que l'api "lit" aussi les octets de début de fichier.

Ton avis?
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/05/2011, 17h29   #10
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
Citation:
Envoyé par Pierre Fauconnier Voir le message
Salut Arkham,

Ne penses-tu pas que InputB est simplement "la couche VBA" de l'api, et donc, qu'elle utilise l'api?

Dès lors, je pense (je n'en sais rien, c'est juste une réflexion) que l'api "lit" aussi les octets de début de fichier.

Ton avis?
Oui sans doute que les fonctions VBA utilisent ces API.
Pour avancer dans le fichier, le problème c'est qu'on est obligé (j'en ai l'impression) avec les fonctions VBA de lire le contenu et de le stocker quelque part, même temporairement.
Le SetFilePosition ne fait que déplacer un pointeur sans besoin de stocker le début du fichier pour aller lire la fin (j'en ai l'impression aussi, ce n'est pas toujours très clair avec la API).

Si c'est pour aller lire le 50000 ème octet d'un fichier, ce sera plus rapide

C'est à comparer sur un cas réel avec des gros fichiers ...
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/05/2011, 19h15   #11
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 411
Points : 14 411
Envoyer un message via Skype™ à Pierre Fauconnier
Merci de l'éclairage.
__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2011, 22h06   #12
Invité de passage
 
Homme Jeremy
Ingénieur ferroviaire
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme Jeremy

Informations professionnelles :
Activité : Ingénieur ferroviaire
Secteur : Transports

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 4
Points : 4
Merci beaucoup pour vos réponses les gars. Je teste demain et vous tien au courant. Cette fonction pour positionner le curseur risque de me faire gagner beaucoup de temps de traitement.
israel.jeremy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 10h41   #13
Invité de passage
 
Homme Jeremy
Ingénieur ferroviaire
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme Jeremy

Informations professionnelles :
Activité : Ingénieur ferroviaire
Secteur : Transports

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 4
Points : 4
Je suis en train d'adapter ce bout de code à mon programme, avec un peu de retard La commande à l'air de fonctionner à merveille.

En revanche, je me pose une question du point de vue rapidité du temps de traitement :

Est-il équivalent au niveau temps de traitement de faire :
1) un ReadFile qui lit 30 caractères d'un coup à partir du début/de l'adresse spécifiée dans le file pointer
plutot que
2) 30 * ( Lecture d'un caractère puis SetFilePointer au caractère suivant)

La solution 2) est plus simple de mise en oeuvre pour l'algorithme de post-traitement des données, mais consomme-t-elle plus de temps ?

De façon plus "philosophique", je me dit que ce qui bouffe du temps de traitement, c'est l'accès au disque. Est-ce que l'exécution de la commande SetFilePointer requiert un accès au disque, ou est-ce une simple opération mémoire d'affectation d'adresse dans une variable mémoire ?

Est-ce que la lecture directe de 30 caractère engendre implicitement la même chose (30x l'opération SetFilePointer) ?

Merci pour votre aide sur ce sujet légèrement pointu
israel.jeremy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 17h45   #14
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
Citation:
Envoyé par israel.jeremy Voir le message
Est-ce que l'exécution de la commande SetFilePointer requiert un accès au disque, ou est-ce une simple opération mémoire d'affectation d'adresse dans une variable mémoire ?
difficile de savoir de ce qui se passe derrière les API
essaye de faire 1 million de SetFilePointer et regarde si la led du disque dur clignote

faut essayer pour voir...
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/05/2011, 18h30   #15
Invité de passage
 
Homme Jeremy
Ingénieur ferroviaire
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme Jeremy

Informations professionnelles :
Activité : Ingénieur ferroviaire
Secteur : Transports

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 4
Points : 4
Pas bête. Merci
israel.jeremy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 17h06   #16
Invité de passage
 
Homme Jeremy
Ingénieur ferroviaire
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme Jeremy

Informations professionnelles :
Activité : Ingénieur ferroviaire
Secteur : Transports

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 4
Points : 4
Par défaut Réponse

Après implémentation de mon code, j'ai constaté qu'il était largement plus rapide de changer la position du curseur de lecture pour lire ce que je désirais plutôt que de tout lire et ensuite prendre les quelques infos qui m'intéressaient. Ne donc pas hésiter à utiliser la fonction SetFilePointer plusieurs milliers de fois par fichier sur des gros traitements, cela fait gagner du temps.
israel.jeremy est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/08/2011, 17h11   #17
Responsable
Office & Excel

 
Avatar de Pierre Fauconnier
 
Homme Pierre Fauconnier
Formateur et développeur informatique indépendant
Inscription : novembre 2003
Messages : 8 198
Détails du profil
Informations personnelles :
Nom : Homme Pierre Fauconnier
Âge : 45
Localisation : Belgique

Informations professionnelles :
Activité : Formateur et développeur informatique indépendant
Secteur : Enseignement

Informations forums :
Inscription : novembre 2003
Messages : 8 198
Points : 14 411
Points : 14 411
Envoyer un message via Skype™ à Pierre Fauconnier
Merci pour ce retour très instructif...

__________________
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
---------------

Ma nouvelle vidéo: comparer des listes via une MFC - Mes articles sur DVP
Vous souhaitez rédiger pour DVP? Contactez-moi
Amoureux de la langue française? Venez corriger nos ressources
VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
N'oubliez pas de VOTER (en bas à droite d'un message)

---------------
Pierre Fauconnier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 17h14   #18
Invité de passage
 
Homme Jeremy
Ingénieur ferroviaire
Inscription : mai 2011
Messages : 9
Détails du profil
Informations personnelles :
Nom : Homme Jeremy

Informations professionnelles :
Activité : Ingénieur ferroviaire
Secteur : Transports

Informations forums :
Inscription : mai 2011
Messages : 9
Points : 4
Points : 4
Merci surtout à vous pour votre aide sur cette question un poil technique
israel.jeremy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h32.


 
 
 
 
Partenaires

Hébergement Web