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

VB 6 et antérieur Discussion :

outre passer excel et quand même exécuter une macro excel : possible en VB ?


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut outre passer excel et quand même exécuter une macro excel : possible en VB ?
    Bonjour,

    je voudrais importer un fichier txt en Filemaker.
    Hors ce fichier doit d'abord être modifié structurellement :
    remplacer des caractères non-imprimable / puis text-to-colums / et en dernier transposer.

    Je sais faire tout cela avec une macro excel dans excel et ensuite importe ce fichier modifié par import en FM.

    Hors mon problème est que je voudrais créer un bouton en Filemaker que exécute ce script/macro mais par exemple en language VB donc sans passer par le programme excel.

    En gros faire les mêmes modifs que la macro excel fait, mais en utilisant VB.

    La raison est que mes clients n’ont peut-être pas tous Excel sur leur machine !

    Pourriez-vous éventuellement m’aider ?

    Voici la macro :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Option Explicit
    Sub ReplaceAndTranspose()
     
    Dim FromChars As Variant
    Dim ToChars As Variant
    Dim iCtr As Long
     
    FromChars = Array(Chr(28))
    ToChars = Array(Chr(124))
     
    If UBound(FromChars) <> UBound(ToChars) Then
    MsgBox "design error--make from/to match"
    Exit Sub
    End If
     
    For iCtr = LBound(FromChars) To UBound(FromChars)
    ActiveSheet.Cells.replace What:=FromChars(iCtr), _
    Replacement:=ToChars(iCtr), LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False
    Next iCtr
     
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
    :="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
    1)), TrailingMinusNumbers:=True
    Cells.Select
    Cells.EntireColumn.AutoFit
    Columns("B:B").Select
    Selection.Delete Shift:=xlToLeft
    Columns("C:C").Select
    Selection.Delete Shift:=xlToLeft
    Cells.Select
    With Selection
    .HorizontalAlignment = xlLeft
    .VerticalAlignment = xlBottom
    .WrapText = False
    .Orientation = 0
    .AddIndent = False
    .IndentLevel = 0
    .ShrinkToFit = False
    .ReadingOrder = xlContext
    .MergeCells = False
    End With
     
    Range("A1:B200").Select
    Selection.Copy
    Sheets.Add
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=True
    Application.CutCopyMode = False
    ActiveWorkbook.Save
     
    End Sub

  2. #2
    Membre éclairé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Points : 868
    Points
    868
    Par défaut quel genre de fichier
    Bonjour

    le probleme est que si tu passes par vb tu dois déclarer que objet tu traites quand tu l'instancies

    ça donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim exapp as excel.application
    pour pouvoir traiter ton objet il faut bien savoir de quoi il s'agit pour que ton programme sache ce qu'il recherche et comment il doit le traiter

    si ils n'utilisent pas excel alors ils utilisent koi ??
    Plzzz pas de questions par MP.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    hmmm bien vue, je venais de lire justement qqchose à ce sujet.

    Un autre language de codage sinon ?

  4. #4
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Ce que tu fait sous Excel ces du script, alors tu peut le faire en VBS, Visual Basic Script. D'ailleurs il y a un sous forum sur le VBS existant sur ce site. Un fichier VBS peut être éditer avec n'importe quel éditeur, et son exécution peut être faite avec l'interpreteur de windows. Pour que windows le fasse automatiquement il suffit de donner l'extension ".vbs" au fichier de script.
    Néanmoins si tu lit dans un fichier Excel le contenu de cellule, quelque soit le language que tu utilises, tu seras obligé d'ouvrir le fichier excel via le script. Mais tu n'auras pas besoin de lancer Excel pour lancer le script, juste lancer Excel à partir du script pour lire les données.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  5. #5
    Membre éclairé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Points : 868
    Points
    868
    Par défaut trouves une parade
    reuu

    si tu sais limité le nombres de format de fichiers tu peux créer une interface qui ferait un niveau d'abstraction

    et selon le format il ira choisir la méthode, grosso merdo, ça donnerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if .xls then
    extraireXls (monfichier)
    elseif .txt then
    extraireTxt(monfichier)
    end if
    et tu codes les 2 méthodes avec les 2 manières selon tel ou tel type de fichier
    Plzzz pas de questions par MP.

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Ben pour executer une macro excel il faut excel... !

    sinon pour faire ta modification de format il va falloir en savoir plus sur le format du fichier initial et le format du fichier désiré... tu dois pouvoir ensuite traiter ton fichier texte comme .. un fichier texte..(lol) ... pourrai tu nous en dire plus sur ce fameux format... , ton code excel n'est pas facile à déchiffer sans exemple...

  7. #7
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Hors mon problème est que je voudrais créer un bouton en Filemaker que exécute ce script/macro mais par exemple en language VB donc sans passer par le programme excel
    .

    Si je comprends bien cette phrase, Chapeau Melon veut faire un equivalent en vb, de ce que fait son excel car, tous les postes de son parc ne sont pas équipés avec.

    Je rapelle sa première phrase
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    je voudrais importer un fichier txt en Filemaker
    Le probleme est dèjà quasi .résolu car il a fait le logique avec une procédure excel. Malheuresement je ne ne suis pas bon avec excel, donc je ne comprends pas tres bien ce que fait sa routine. Désolé.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  8. #8
    Membre éclairé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Points : 868
    Points
    868
    Par défaut non non
    le probleme c'est pas ça on avait tous compris.... le problème est qu'il ne sait pas quel fichier il devra traiter

    c'est ça le probleme

    apres entre excel et vb6 la transition devrait etre aisé
    Plzzz pas de questions par MP.

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Non Lexo, je pense que c'est Delbeke qui a raison, il a ponité le vrais problème de chapeau_melon.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Merci à tous,

    pour vous aider j'ai inseré deux fichiers :

    Ce sont de .log mais facillement ouvrable en notepad. Enlever l'extension .txt

    le premier avant_etc... = le fichier vierge telle que je le reçois.
    (impossible à importer en Filemaker - car pas de structure que FM comprends)

    le deuxième apres_etc... = le fichier après mes modifs que je fais avec la macro excel.

    le deuxième fichier me pose ainsi aucun problème à importer en Filemaker.

    Le but est de parvenir du premier au deuxième mais justement sans l'utilisation du programme excel, donc juste par codage (j'ai aucune idée quel est le language de codage le mieux app à faire cela)

    Je pourrais ainsi lancer ce script à partir d'un bouton en FM et fini l'utilisation d'Excel (même pas en arrière plan!!)

    Encore merci
    Fichiers attachés Fichiers attachés

  11. #11
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    En fait tu n'as pas besoin d'excel pour générer le fichier. Il te suffirait de parcourir ton fichier texte, et de créer une variable de type tableau en vb ou vbs dans lequel tu mettrais toutes tes informations comme dans le tableau Excel. Puis tu ecrirais dans le un fichier texte les deux lignes de ton tableau en séparant chaque contenu de chaque colonne d'une tabulation.
    Pour cela tu auras besoin de fonctions de traitement de chaîne de caractère, que tu peut trouvais dans les docs sur ce site.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  12. #12
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par chapeau_melon
    merci pour ta réponse, comme demandé j'ai inséré un exemple de fichier.

    Peut-être que tu seras m'aider ainsi ?

    Bien à toi
    et un grand merci d'avance


    Ma question est dans VB6 : autre passer excel en Filamaker....
    donc il te suffit de traiter ton fichier comme un fichier texte ....

    pour le principe
    1. Ouverture du fichier source ( fichier source en lecture Open.. For input)
    2. Lecture ligne à ligne du fichier (Line input #f,st)...
    3. split de la ligne (set tb = split(st,chr(&h1C))...
    4. pour chaque lignestockage dans chaine stLigne1= stLigne1 & tb(0) & chr(vTab) et stLigne2 = stLigne2 & tb'2) & chr(vtab)..
    5. en fin de lecture fichier source , ecriture des deux chaines dans fichier destination ( ouverture fichier en écriture puis print #f,stLigne1 )

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Merci Cedric : chouette on arrive effectivement à une solution.

    Le problème est que j'ai aucune connaissance en codage
    On arrive en ce que me concerne à un stade de language chinois

    J'espère que vous auriez la patience

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Si cela peut vous aider :

    Le fichier est conçu de telle façon :

    un chiffre / un nom relié à ce chiffre / une valeur relié à ce chiffre / parfois une unité (Volt,mAmp,etc...) relié à la valeur
    un chiffre / un nom relié à ce chiffre / une valeur relié à ce chiffre
    etc...

    Ce que je fesais en excel était de modifier les caractères non-imprimable (char 28) en qqchose de reconnaisable.

    Et puis juste garder le chiffre et ça valeur correspondant. Le nom et les unités étant supperflus.

    En terminant par tout mettre en colonnes avec comme entête les chiffres et comme valeurs forcément les valeurs.

    Un immense merci !

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tiens un peu de code ... il ne doit pas manquer grand chose...

    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
     
    Option Explicit
    Sub ConvertiFichier()
    Dim f As Integer
    Dim stRep As String
    Dim stFichierSource As String
    Dim stFichierDest As String
    Dim stLigne1 As String
    Dim stLigne2 As String
    Dim st As String
    Dim tbLg
    Dim tb
    Dim i As Integer
    stRep = "c:\tmp\" 'Répertoire de travail
     
    stFichierSource = "avant_test_144503.log.txt"
    stFichierDest = "apres.txt"
    f = FreeFile
    Open stRep & stFichierSource For Input As #f 'Ouverture fichier source
    While Not EOF(f)
      Line Input #f, st 'Lecture d'une ligne
      'Finalement .. ligne input lit tous le fichier car les lignes
      'ne comporte que le carcatére 10 en fin (pas de retour chariot 13..)
      ' découpage de la chaine en lignes...
      tbLg = Split(st, Chr(10))
      For i = 0 To UBound(tbLg) 'parcours les lignes
        tb = Split(tbLg(i), Chr(&H1C))
        If (UBound(tb) >= 2) Then
            stLigne1 = stLigne1 & tb(0) & vbTab
            stLigne2 = stLigne2 & tb(2) & vbTab
        End If
      Next i
     
    Wend
    Close #f
    f = FreeFile
    'Ouverture fichier destination en ecriture le fichier existant sera écrasé..
    Open stRep & stFichierDest For Output As #f
     Print #f, stLigne1
     Print #f, stLigne2
     
    Close #f
     
    End Sub

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    excellent !!! Un immense merci !!!

    Mais... il y a apparement un petite erreur dans le code ? ligne 3 char 7 ?

    Je n'arrive pas à trouver pourqoui ?

    J'ai copier le code et mis en notepad, sauvegardé en extention .vbs

  17. #17
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Le code de bbil est écrit en VB, pas en VBS.

    Si tu veux faire du VBS, tu n'as pas posté dans le bon sous-forum.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    La réponse est dans le forum VBscript

    http://www.developpez.net/forums/sho...d.php?t=234008

    Merci à vous tous !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Exécuter une macro Excel en passant des arguments
    Par tarnx dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/12/2009, 09h40
  2. [AC-2003] Exécuter une macro Excel depuis Access
    Par tarnx dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/12/2009, 13h16
  3. [AC-2003] Exécuter une macro Excel depuis du code VBA
    Par denisw95 dans le forum VBA Access
    Réponses: 12
    Dernier message: 03/12/2009, 15h59
  4. exécuter une macro excel sous access
    Par smix13 dans le forum VBA Access
    Réponses: 10
    Dernier message: 03/02/2009, 08h51
  5. Réponses: 4
    Dernier message: 17/07/2008, 13h40

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