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 :

Transfert de données de excel vers le logiciel sage Integrale 5.0


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Alors voici mon problème:

    La mission qui m'a été confiée par l'entreprise est de trouver un moyen de récupérer des données à partir de Excel et de les "copier/coller" aux endroits spécifiques dans le progiciel Integrale 5.0.

    Je suis tout simplement perdu et j'espère de tout coeur que vous puissiez m'aider.


    Pour info la seule chose que l'entreprise m'a fourni est une liste m'indiquant pour chaque champ à remplir sur le progiciel la longueur et la position du champ.

    merci d'avance pour votre aide, j'essayerais toutes les pistes car il faut absolument que je réussisse.

    Petite précision, c'est à partir de vba que je vais devoir envoyer les données!

    Au pire si personne ne peut m'aider serait t'il possible de m'expliquer comment je pourrais ouvrir le logiciel integrale à partir de excel par simple click ou autre.

  2. #2
    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
    Bonjour,

    sans connaitre ce logiciel, cela me semble plutot difficile.

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    voici les dernièes nouvelles!

    j'ai exporté des données au format texte du logiciel integrale, ceci me donne des lignes d'environ 300 caractères. Chaque ligne correspond à un des masques du logiciel.

    J'ai réalisé une macro qui va sélectioner les données requises dans mon fichier excel puis sur une page du classeur je colle tout dans une ligne dans l'ordre requis. Puis a partir de la je sélectionne les divers lignes que j'ai préalablement collés, je les copie et les colle dans un fichier texte pour pouvoir etre exploitables.

    JUsque la pas de problème...

    sauf que je dois organiser mes données par caractères c'est à dire par exemple que le premier mot commence au premier caractère suivi d'un espace qui fait tant de caractères puis le second mot commence 15 caractères plus loin et ainsi de suite.

    J'aimerais savoir s'il est possible dans excel de pouvoir écrire donc dans une ligne entière tout en respectant l'ordre par rapport aux caractères.

    ex:

    EA1225701 01/09/0800/00/00TBO-000012834597 040179714 REPA 0.00.... et ainsi de suite sur 300 caractères.

    je sais pas si c clair tout sa, jsuis content d'aboutir a sa malgrès mes débuts pénibles. Jtouche au but j'espère vraiment que vous puissiez m'aider.

    Merci d'avance

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    Salut,
    je trouve ton message pas très clair, j'ai du mal à piger
    Si tu veux formater des zones de texte selon une certaine longueur, la fonction Len() te sera utile, elle ne fonctionne qu'avec une variable de type String et donne le nombre de caractères de la variable.

    Exemple : tu sais que tel champ nécessite 15 caractères mais ta variable en a moins, il faut donc combler le restant avec des espaces.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dim premier_mot as string
    dim nbCar as integer
    nbCar = len(premier_mot) 'nb de caractères de "premier_mot"
    for i = nbCar to 15 'on va rajouter des espaces jusqu'à avoir 15 caractères.
       premier_mot = premier_mot & " "
    next i
    Voilà, si j'ai mal compris c'est à côté de la plaque

  5. #5
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    terrible merci!
    j'avais pensé à une fonction dans ce style mais je ne la connaissait pas!

    bon le seul soucis c'est que j'ai environ dans les 500 mots à récupérer donc sa va en faire des lignes.

    Serait il possible de dire par exemple cellule [A1] = max 13 caractères et que donc si je colle un mot il y aura "13-la longeur du mot" vides après celui ci.

    jvais une fois essayer avec cette fonction, jreviens poster si j'ai un autre soucis!

    merci beaucoup en tout cas

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    Oui, il faut en faire une fonction.

    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
     
     
    '#1 d'abord créer la fonction (à mettre dans un module) :
    Function Complete_Champ(varMot as string, varNb as integer)
    '1er paramètre : le mot
    '2eme paramètre : le nombre de caractères voulus dans le champ
    dim nbCar as integer
    nbCar = len(varMot) 'nb de caractères de "varMot"
    for i = nbCar to varNb 'on va rajouter des espaces
       varMot = varMot & " "
    next i
    Complete_Champ = varMot
    End Function
     
    '#2 Exemple d'utilisation de la fonction, dans une autre sub :
    Range("A1") = Complete_Champ(CStr(Range("A1")), 15)
    Range("A2") = Complete_Champ(CStr(Range("A2")), 13)
    etc...
    Eventuellement Complete_Champ() peut même s'utiliser en formule.

  7. #7
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    je suis désolé mais je comprends pas trop le fonctionnement de ta macro!

    je désire sélectionner une cellule contenant un mot, le copier et le coller dans une cellule ou j'aurais défini le nombre de caractères au préalable.

    afin que le mot collé prenne une certaine place dans la cellule et que le reste soit des espaces vides.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    Ouais, alors tu peux l'utiliser comme une fonction personnalisée dans une formule.

    Il faut donc coller le code suivant dans un module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Function Complete_Champ(varMot as string, varNb as integer)
    '1er paramètre : le mot
    '2eme paramètre : le nombre de caractères voulus dans le champ
    dim nbCar as integer
    nbCar = len(varMot) 'nb de caractères de "varMot"
    for i = nbCar to varNb 'on va rajouter des espaces
       varMot = varMot & " "
    next i
    Complete_Champ = varMot
    End Function
    puis imaginons que tu aies un mot de 4 lettres en A1, et qu'en B1 tu veuilles le même mot formaté sur 15 caractères (donc avec 11 espaces à la fin), il faut mettre cette formule en B1 :
    =Complete_Champ(A1;15)

    ça va t'obliger à personnaliser le 2ème paramètre pour tes 500 formules évidemment, mais je ne vois pas comment faire autrement.

    Oups je m'aperçois que ça fait 16 caractères

    if faut donc modifier la fonction ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i = nbCar to varNb - 1

  9. #9
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    merci beaucoup, sa semble fonctionner!

    mon problème intervient après lorsque je colle les données dans le fichier texte.
    les espaces ne sont pas conservés.

    exemple:

    j'écris abcd en B2 puis, =Complete_Champ(B2;4) en C2 et je refais la mm chose pour en D2 =Complete_Champ(C2;4);

    sauf que si je prends les valeurs de C2 et D2 et que je les colle dans mon fichier texte ils devraient logiquement être accolés sauf qu'il subsiste un écart!

    vais qd mm devoir me taper la fonction len je pense...

  10. #10
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour tlm,

    Je me suis permis de légèrement adapter la fonction de neupont et cela fonctionne nickel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function Complete_Champ(varMot As String, varNb As Integer)
    '1er paramètre : le mot
    '2eme paramètre : le nombre de caractères voulus dans le champ
    Dim nbCar As Integer
    nbCar = Len(varMot) 'nb de caractères de "varMot"
     
    If nbCar < varNb Then
        For i = 1 To varNb - nbCar 'on va rajouter des espaces
           varMot = varMot & " "
        Next i
    End If
     
    Complete_Champ = varMot
    End Function

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    Citation Envoyé par chris67 Voir le message
    sauf que si je prends les valeurs de C2 et D2 et que je les colle dans mon fichier texte ils devraient logiquement être accolés sauf qu'il subsiste un écart!
    Si tu fais du copier/coller, je suppose que le saut de colonne entre C et D doit effectivement être marqué par une tabulation qui vient s'immiscer.
    Si c'est bien ça le problème, et sans rentrer dans les macros qui te crééraient le fichier texte, pourquoi ne pas utiliser une colonne vide avec la fonction CONCATENER dans laquelle tu concatènerais C et D ?
    De la sorte tu collerais cette colonne sans subir la tabulation.

  12. #12
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Re,

    Une info venant de kiki29 pouvant être utile, il existe une fonction Space qui ajoute les espaces sans devoir passer par une boucle.

    Cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If nbCar < varNb Then
        For i = 1 To varNb - nbCar 'on va rajouter des espaces
           varMot = varMot & " "
        Next i
    End If
    peut être replacée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If nbCar < varNb Then varMot = varMot & Space(varNb - nbCar)
    Merci kiki
    .

  13. #13
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    merci beaucoup!

    jvais tester tout sa, je vous en dirais des nouvelles. J'espère arriver à finir

Discussions similaires

  1. Transfert de données d'excel vers un mail
    Par porsoni dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/05/2014, 13h25
  2. [XL-2007] Copier-coller des données d'excel vers un logiciel
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2012, 13h18
  3. Transfert de données d'excel vers access
    Par mataw dans le forum VBA Access
    Réponses: 1
    Dernier message: 04/04/2012, 09h04
  4. Transfert de données de Excel vers Word
    Par skanderhassayoune dans le forum VBA Word
    Réponses: 1
    Dernier message: 23/02/2011, 22h06
  5. transfert de donnés de excel vers Mysql
    Par mkachekh dans le forum Outils
    Réponses: 4
    Dernier message: 20/10/2006, 12h08

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