IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment analyser et modifier un fichier texte (Microsoft Query) via VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut Comment analyser et modifier un fichier texte (Microsoft Query) via VBA
    Salut,

    j'ai des définitions de SQL Microsot Query (extension .dqy) que je voudrais modifier en VBA excel, essentiellement pour modifier la clause WHERE en fonction des besoins de l'utilisateur.

    Exemple de contenu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT LST_SORM1C.PERIODE, LST_SORM1C.WSCDZT, LST_SORM1C.NOCTE, LST_SORM1C.DEPAZT, LST_SORM1C.ART, LST_SORM1C.DESCIT, LST_SORM1C.DTMVZT, LST_SORM1C.QTE, LST_SORM1C.UNMDZT, LST_SORM1C.DEM, LST_SORM1C.NOM, LST_SORM1C.PROJZT, LST_SORM1C.NLVLZT
    FROM BHARIE01.IPPAHARTRF.LST_SORM1C LST_SORM1C
    WHERE (LST_SORM1C.DEPAZT='605') OR (LST_SORM1C.DEPAZT='606')
    ORDER BY LST_SORM1C.WSCDZT, LST_SORM1C.DEPAZT, LST_SORM1C.NOCTE
    La partie en gras est celle que je voudrais récupérer et mettre à jour.

    Est-ce qu'il y un tuto ou une interface pour modifier ce genre de fichier (.dqy).

    Je suppose que cela peut se traiter en format .TXT (en espérant que les lignes ne dépassent pas 256 bytes).

    Si quelqu'un à une suggestion, je suis preneur !

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Où as-tu vu qu'une ligne de txt ne devait pas dépasser 256 caractères ?
    Si tu es certain que c'est un txt, tu peux faire ça en lisant ton texte ligne par ligne et en écrivant chaque ligne dans un nouveau txt et en remplaçant ta ligne par la nouvelle au passage.
    Signifie l'ouverture de 2 txt, l'un avec Input, l'autre avec Output.
    Pour écrire, tu utilises Print (because les parenthèses de Write)
    Quand c'est fini, tu renommes ton fichier corrigé.
    Un conseil : Fais une sauvegarde de l'original
    Pour le code, si tu en as besoin, tu demandes...
    A+

  3. #3
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,

    ne serait -il pas mieux de passer par des parametres?

    si toutefois, les champs de recherches restent identiques bien sur!

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Ben,

    si tu le proposes si gentiment, si je pouvois avoir un exemple de code qui fait cela (y compris la fonction de recherche et de remplacement de base que je peux étoffer moi-meme après).

    Autant pour moi qui croyais qu'un string c'est maxi 256 bytes .

    Attention que l'instruction à remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE (LST_SORM1C.DEPAZT='XXX')
    peut donner lieu à une clause plus complexe avec des OR du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE (LST_SORM1C.DEPAZT='605') OR (LST_SORM1C.DEPAZT='606') OR (LST_SORM1C.DEPAZT='615')

    Et encore pour ton aide et temps.

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Mayeukel,

    je ne comprends pas ce que tu proposes.

    Mon but est d'adapter un Query existant pour une application qui tourne sur différents PC en utilisant ce query pour sélectionner les données à montrer.

    En fait, il faut extraire les données des départements qui concernent la personne en question, et pas les autres.

    J'avais pensé au moment de l'installation avoir une routine pour adapter ce query car pour le moement je me le farçi à la paluche, mais comme on installe souvent des nouveaux pcs, je voudrais avoir un truc plus simple à installer.


  6. #6
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    dasn ms query, tu peux passer par des parametres représenté par une cellule par exemple.

    tu lui dis par exemple que parametre1 = la cellule A1
    en passant par une feuille cachée, ça devrait le faire non?

    tu es sous quelle version d'excel?

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Citation Envoyé par Godzestla
    Attention que l'instruction à remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE (LST_SORM1C.DEPAZT='XXX')
    peut donner lieu à une clause plus complexe avec des OR du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE (LST_SORM1C.DEPAZT='605') OR (LST_SORM1C.DEPAZT='606') OR (LST_SORM1C.DEPAZT='615')
    Ça, s'il s'agit bien d'un txt (re) on s'en f...
    On ne fait pas une recherche dans le texte, on teste chaque ligne. Si ton code est long, ce sera plus long... et réciproquement...
    AVANT de tester, sauvegarde ton fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Test()
    Dim LaLigne As String
        Open "C:\TonRep\TonFichier.dqy" For Input As #1
        Open "c:\TonRep\TonFichierCorrigé.txt" For Output As #2
        Do While Not EOF(1)
            Input #1, LaLigne
            If LaLigne = "WHERE (LST_SORM1C.DEPAZT='XXX')" Then
                LaLigne = "WHERE (LST_SORM1C.DEPAZT='605') OR (LST_SORM1C.DEPAZT='606') OR (LST_SORM1C.DEPAZT='615')"
            End If
            Print #2, LaLigne
        Loop
        Close #1
        Close #2
        Kill "C:\TonRep\TonFichier.dqy"
        Name "c:\TonRep\TonFichierCorrigé.txt" As "C:\TonRep\TonFichier.dqy"
    End Sub
    Tu dis
    A+

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je vois venir la question : Si au lieux de 'XXX' tu as un nombre ou un string variable, utilise Like et ses avatars (jokers comme dirait ucfoutu "?", "#"... etc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If LaLigne like "WHERE (LST_SORM1C.DEPAZT='" & "###" & "')" then
    'ou
    If LaLigne like "WHERE (LST_SORM1C.DEPAZT='" & "???" & "')" then

  9. #9
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Merci... mais ce n'est pas aussi simple.

    Il y a 2 problèmes :

    1)la Clause Where à remplacer n'est pas sur une seule ligne.

    Quand je fais debug.print des lignes en Input, j'obtiens
    XLODBC
    1
    DRIVER={Client Access ODBC Driver (32-bit)};SYSTEM=BHARIE01.RAE.COM;CMT=0;DBQ=CTWRK
    IPPAHARTRF;NAM=0;DFT=5;DSP=1;TFT=0;TSP=0;DEC=0;XDYNAMIC=1;RECBLOCK=2;BLOCKSIZE=32;SCROLLABLE=0;TRANSLATE=0;LAZYCLOSE=1;LIBVIEW=0;REMARKS=0;CONNTYPE=0;SORTTYPE=0;PREFETCH=0;DFTPKGLIB=QGPL;LANGUAGEID=ENU;SORTWEIGHT=0;SSL=2;SIGNON=3;MAXFIELDLEN=32;COMPRESSION=0;ALLOWUNSCHAR=0;SEARCHPATTERN=1;MGDSN=0;
    SELECT LST_SORM1C.PERIODE
    LST_SORM1C.WSCDZT
    LST_SORM1C.NOCTE
    LST_SORM1C.DEPAZT
    LST_SORM1C.ART
    LST_SORM1C.DESCIT
    LST_SORM1C.DTMVZT
    LST_SORM1C.QTE
    LST_SORM1C.UNMDZT
    LST_SORM1C.DEM
    LST_SORM1C.NOM
    LST_SORM1C.PROJZT
    LST_SORM1C.NLVLZT FROM BHARIE01.IPPAHARTRF.LST_SORM1C LST_SORM1C WHERE (LST_SORM1C.DEPAZT='XXX') ORDER BY LST_SORM1C.WSCDZT
    LST_SORM1C.DEPAZT
    LST_SORM1C.NOCTE


    PERIODE WSCDZT NOCTE DEPAZT ART DESCIT DTMVZT QTE UNMDZT DEM NOM PROJZT NLVLZT
    et je ne crois pas que tu puisses te baser sur une position relative dans le record car à mon avis la recopie dans ce post change aussi la mise en page.

    2) La virgule est considérée comme un séparateur de record en input et n'est pas réintégrée en output, mais elle est nécessaire pour le DQY car après il n'est plus réinterprétable.

    je joints les fichiers input et output pour comparaison et explication

  10. #10
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    mayekeul,

    je suis en Excel 2003.

    Mayekeul,

    tu aurais un exemple de ceci ?

    tu lui dis par exemple que parametre1 = la cellule A1
    en passant par une feuille cachée, ça devrait le faire non?

  11. #11
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bon je vais te mettre un ou deux screen shot (c'est plus parlant )
    mais moi c'est une version 2007
    pour msquery, ça devrait etre le même de toute façon.

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai bien une solution pour corriger le tir mais le bricolage que j'ai à proposer tourne à l'usine à gaz. Alors si Mayekeul a une solution "propre" il serait mieux de l'utiliser.
    En dernier recours, j'ai un "truc"

  13. #13
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    n'hésites pas si c'est pas clair pour toi!
    (ce qui est fort probable )

  14. #14
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Mayekeul,

    merci pour le truc, je ne connaissais pas.
    Je viens de tester sur un nouveau fichier avec un critère simple en parametre, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE (LST_SORM1C.DEPAZT=?)
    en utilisant ton système de paramétrage et cela marche parfaitement
    j'ai maintenant 2 questions, sur le détail :

    1) Si mon critère n'est pas simple mais complexe , du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Where ((LST_SORM1C.DEPAZT='601')  OR (LST_SORM1C.DEPAZT='605') OR (LST_SORM1C.DEPAZT='607'))
    je ne parviens pas à faire bouffer une valeur > 3 bytes au prompt de parametre. J'en déduis que je ne peux combiner plusieurs critère OR dans mon parametre. il y a une parade ou je dois définir un nombre de parametre maxi et les initialiser tous à la valeur unique si je ne veux tester que sur une valeur. ?(tu piges mon chinois).

    ce qui me donne quelquechose du genre (voi miniature)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE (LST_SORM1C.DEPAZT=?) OR (LST_SORM1C.DEPAZT=?) OR (LST_SORM1C.DEPAZT=?) OR (LST_SORM1C.DEPAZT=?) OR (LST_SORM1C.DEPAZT=?)
    2) Mon Query "ancien" étant défini actuellement via excel mais sauvé hors (pas de possibilité de l'éditer via Excel), et accédé via
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     Sub Input_External()
    '
    ' Input_External Macro
    ' Macro recorded 2005-01-13 by A477453
    '
     
    '
        On Error GoTo Error_Handling
        Sheets("External").Select
        Cells.Select
        Selection.ClearContents
        Selection.QueryTable.Delete
    ignore:
        Range("A1").Select
        With ActiveSheet.QueryTables.Add(Connection:= _
            "FINDER;C:\DATA\Transfert\10-Controlling\Stock Movement Analysis\Current Month\Selective Sorties Mois 0.dqy" _
            , Destination:=Range("A1"))
            .Name = "RVK Sorties Mois 0"
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = True
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
        End With
        GoTo End_sub
    Error_Handling:
        If Err.Number = 1004 Then Resume ignore
        If Err.Number <> 0 Then
            Msg = "Error # " & Str(Err.Number) & " was generated by " _
                & Err.Source & Chr(13) & Err.Description
            MsgBox Msg, , "Error", Err.HelpFile, Err.HelpContext
        End If
     
    End_sub:
    End Sub
    (NB : je sais que le code est pas top. c'est un vieux, je vais enlever au moins les Select !!!)

    je cherche maintenant comment adapter mon application Excel sans devoir tout refaire (Pivot...)
    Je voudrais juster Scratcher la définition d'import et intrégrer la nouvelle avec les variables.

    C'est quoi la méthode Mayekeul rapide et efficace ?

  15. #15
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    J'ai essayé de tout modfier comme un grand, mais à chaque exec il me demande de lui encoder les parametres ou la référence à la cellule à utiliser.

    Grrrrrrrrrrrrrrrrr

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Comme je ne suis pas certain de repasser par là, ça ne te coûte que quelques secondes pour tester ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub Test()
    Dim LaLigne As String, tablo as variant
        Open "C:\TonRep\TonFichier.dqy" For Input As #1
        Open "c:\TonRep\TonFichierCorrigé.txt" For Output As #2
        Do While Not EOF(1)
            Input #1, LaLigne
            Tablo = Split(LaLigne, ",")
            If LaLigne = "WHERE (LST_SORM1C.DEPAZT='XXX')" Then
                LaLigne = "WHERE (LST_SORM1C.DEPAZT='605') OR (LST_SORM1C.DEPAZT='606') OR (LST_SORM1C.DEPAZT='615')"
            End If
            Print #2, Join(Tablo, ",")
        Loop
        Close #1
        Close #2
        Kill "C:\TonRep\TonFichier.dqy"
        Name "c:\TonRep\TonFichierCorrigé.txt" As "C:\TonRep\TonFichier.dqy"
    End Sub
    Pas certain que ça règle ton pb mais bon...
    Bonne chance avec tes démêlés avec Query.

  17. #17
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Vraiment désolé,

    mais ça le fait pas car le problème est sur l'input qui ne lit que jusqu'à la virgule !
    Donc le split ne donne rien.

    mais merci d'avoir essayé.

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    C'est ce que je craignais car alors le délimiteur devient un vbcrlf et pour distinguer un vbcrlf d'un autre...

  19. #19
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Si on moins il existait du code pour lire soit le fichier en entier soit (idéalement) un record complet jusqu'à CRLF ?

    Ca soit exister, non ?

    j'ai fouillé dans la lecture des fichiers .ini qui sont aussi en format texte, mais c'est pas gagné d'avance car ca utilise kernel32...

  20. #20
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Mais bien évidement :

    au lieu de

    Avec cela Ousk', ton code tourne beaucoup mieux.
    C'est ok pour la lecture.

    reste maintenant à détecter "Where" quelquepart dans un record et le remplacer par la nouvelle valeur.

    Quelle est le code pour rechercher
    WHERE (LST_SORM1C.DEPAZT='XXX')
    dans un string

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Ouvrir un fichier texte sur UltraEdit via VBA
    Par mah.ngaz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/04/2013, 16h49
  2. Comment en VBA modifier un fichier texte sans l'ouvrir dans Excel ?
    Par shadok6 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/10/2008, 13h54
  3. Réponses: 6
    Dernier message: 25/08/2008, 13h36
  4. Réponses: 1
    Dernier message: 25/08/2008, 11h57
  5. comment utiliser Notepad pour modifier un fichier texte?
    Par moon13_698 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 06/05/2006, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo