Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

Réponse
 
Outils de la discussion
Vieux 26/08/2008, 09h35   #1 (permalink)
Invité régulier
 
Date d'inscription: février 2008
Messages: 11
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.

Dernière modification par AlainTech ; 22/09/2008 à 17h15 Motif: Fusion de 2 messages
chris67 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 08h37   #2 (permalink)
Membre Expert
 
Avatar de Godzestla
 
Date d'inscription: août 2007
Localisation: Impasse
Âge: 43
Messages: 1 024
Par défaut

Bonjour,

sans connaitre ce logiciel, cela me semble plutot difficile.
__________________
Cordialement
G@dz

Question technique par MP = Vous avez des neurones. Sollicitez-les. Question mal formulée réponse inadaptée.
Si la solution est absente, le problème n'est plus.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 27/08/2008, 20h30   #3 (permalink)
Responsable Excel
 
Avatar de SilkyRoad
 
Date d'inscription: août 2005
Messages: 3 113
Par défaut

bonjour

j'espère que ce lien pourra t'aider

http://forum.hardware.fr/hfr/Program...et_23039_1.htm

bonne soirée
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 28/08/2008, 08h04   #4 (permalink)
Invité régulier
 
Date d'inscription: février 2008
Messages: 11
Par défaut

merci c sympa de me donner un coup de main.
La chose reste toujours autant obsolète lol mais grace à vous j'ai enfin une piste à exploiter.

merci SilkyRoad
chris67 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/09/2008, 08h25   #5 (permalink)
Invité régulier
 
Date d'inscription: février 2008
Messages: 11
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
chris67 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/09/2008, 11h00   #6 (permalink)
Membre habitué
 
Date d'inscription: février 2006
Messages: 161
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 :
 
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
neupont est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/09/2008, 11h30   #7 (permalink)
Invité régulier
 
Date d'inscription: février 2008
Messages: 11
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
chris67 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/09/2008, 13h13   #8 (permalink)
Membre habitué
 
Date d'inscription: février 2006
Messages: 161
Par défaut

Oui, il faut en faire une fonction.

Code :
 
 
'#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.
neupont est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/09/2008, 15h50   #9 (permalink)
Invité régulier
 
Date d'inscription: février 2008
Messages: 11
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.
chris67 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/09/2008, 16h08   #10 (permalink)
Membre habitué
 
Date d'inscription: février 2006
Messages: 161
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 :
 
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 :
for i = nbCar to varNb - 1

Dernière modification par AlainTech ; 18/09/2008 à 15h18 Motif: Fusion de 2 messages
neupont est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/09/2008, 01h02   #11 (permalink)
Invité régulier
 
Date d'inscription: février 2008
Messages: 11
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...
chris67 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/09/2008, 02h13   #12 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
Par défaut

Bonjour tlm,

Je me suis permis de légèrement adapter la fonction de neupont et cela fonctionne nickel
Code :
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
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/09/2008, 09h40   #13 (permalink)
Membre habitué
 
Date d'inscription: février 2006
Messages: 161
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.
neupont est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 18/09/2008, 12h24   #14 (permalink)
Rédacteur/Modérateur
 
Avatar de fring
 
Date d'inscription: février 2008
Localisation: Bxl
Âge: 45
Messages: 2 667
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 :
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 :
If nbCar < varNb Then varMot = varMot & Space(varNb - nbCar)
Merci kiki
.
__________________
LES FAQ OFFICE - LES COURS OFFICE - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

Prenez quelques secondes pour lire ceci : Aide sur l'utilisation des boutons du forum

Hormis pour me demander mon numéro de compte afin d'y effectuer un versement, évitez de m'envoyer vos questions par MP, merci d'avance
En posant une question on risque d'avoir l'air idiot cinq minutes. En n'en posant pas, on risque de le rester toute sa vie (proverbe chinois)
fring est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 22/09/2008, 15h32   #15 (permalink)
Invité régulier
 
Date d'inscription: février 2008
Messages: 11
Par défaut

merci beaucoup!

jvais tester tout sa, je vous en dirais des nouvelles. J'espère arriver à finir
chris67 est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel > VBA Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide