Bonjour tous le monde

Résolu/Fermé
saidmansour Messages postés 51 Date d'inscription vendredi 1 juin 2007 Statut Membre Dernière intervention 13 octobre 2012 - 16 mai 2012 à 17:35
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 - 17 mai 2012 à 02:11


voici mon code source
si quelqu'un peux m'aider je veux incrémenter
la colone matricule d'une table cariére(acces) et si je trouve deux matricules égaux le format d'export change
Private Sub Command1_Click()
Set MaConn = New ADODB.Connection
MaConn.Provider = "Microsoft.Jet.OLEDB.4.0;"
MaConn.Open "C:\personnel\GCP.mdb"
Set rsttable = New ADODB.Recordset
rsttable.Open "cariére", MaConn, , , adCmdTable
Open "C:\personnel\EXPORT.txt" For Output As #1
While Not rsttable.EOF
Print #1, "0000000008" & Right("0000000000" + Trim(rsttable!matricule), 10) & Left(rsttable!Nom + Space(40), 40) & Left(rsttable!Prenom + Space(40), 40) & Format$(rsttable!datenaissance, "ddMMyyyy") & rsttable!sexe & Format$(rsttable!DateDebut, "ddMMyyyy") & Format$(rsttable!DateFin, "ddMMyyyy") & Right("00" + Trim(rsttable!idq), 2) & Right("00" + Trim(rsttable!idpos), 2) & Right("0000" + Trim(rsttable!idg), 4) & Right("0000" + Trim(rsttable!idf), 4) & Right("00" + Trim(rsttable!idts), 2) ; ""
rsttable.MoveNext
Wend
Close #1
rsttable.Close
Unload Me
End Sub
***********************************************
c'est le syntaxe normale
je veux que si j'incrimente le table cariére et lorsque je trouve deux matricules agaux
ce champ:
y = Format$(rsttable!DateDebut, "ddMMyyyy") & Format$(rsttable!DateFin, "ddMMyyyy") & Right("00" + Trim(rsttable!idq), 2) & Right("00" + Trim(rsttable!idpos), 2) & Right("0000" + Trim(rsttable!idg), 4) & Right("0000" + Trim(rsttable!idf), 4) & Right("00" + Trim(rsttable!idts), 2)
s'ajoute au premier ligne c'est à dire par exemple:
voici le contenu de fichier export

00000000080000000033flen foulen 03011979M310820093108200903030033025602
00000000080000000033flen foulen 03011979M310820093108200903030033025602
00000000081236547895alen alen 13072010M310820093108200903030033025602

je veux que ça sera comme ça:

00000000080000000033flen foulen 03011979M310820093108200903030033025602310820093108200903030033025602
00000000081236547895alen alen 13072010M310820093108200903030033025602
***********************************************
            
                

6 réponses

jordane45 Messages postés 38167 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 mai 2024 344
16 mai 2012 à 18:32
Bonjour à toi également.

Dans un premier temps je me permettrai de te faire quelques remarques sur la "forme" de ton sujet :

1 - TOn tire, bien que très acceuillant, n'est pas très pertinent... si quelqu'un doit faire une recherche sur le forum sur un sujet identique au tient passera surement à côté ( tous comme les titres dont le texte est : AIDE , Help , urgent.., etc... )

2 - Il semble que le Code que tu as posté soit du VBA. Tu ne l'as donc pas mis dans la bonne section du forum.

3 - Lorsque l'on poste du code... il serait souhaitable (voir INDISPENSABLE ) d'utiliser les balises de code (3 eme Icone en partant de la droite lorsque tu rédiges un message )


Ensuite, là tout de suite je n'ai pas le temps de lire ton code ..
Pourrais tu nous indiquer ou est-ce qu'il bloque ? Ou alors.. est-ce que le résultat n'est pas correcte ?

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
16 mai 2012 à 18:34
Salut

Garde en tête que le titre d'une question sert aux autres utilisateurs pour trouver des réponses à des questions du même genre. Donc "Bonjour tous le mode" n'a aucun intérêt.

Tu auras remarqué que ton code ne ressemble à rien une fois collé.
Utilise la coloration syntaxique (3ème icone à droite) = lisible.

Dans ton code VB, pense à utiliser le symbole _ pour faire un retour à la ligne de la suite de ta commande.
Des lignes de 200 caractères de longs sont illisibles.

Je n'ai pas regardé ton code (pour les raisons citées au dessus).
Si tu dois savoir si une ligne est double, il te faut retarder l'écriture de la ligne et une fois que tu auras lu la suivante, tu décideras s'il faut, ou pas, changer le format.
- Prépare donc autant de variables texte que tu as de champs à découper
- lit une première ligne et rentre les données dans ces variables
- lit une seconde ligne
- compare avec la première :
.. si différente : format 1 avec les variables en attente
.. si identique : format 2 avec les variables en attente
- rentre les données de la deuxième ligne lue dans les variables
- recommence
En sortant de ta boucle, il faudra penser à écrire les dernières données mémorisées.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
16 mai 2012 à 21:44
 Bonsoir le Forum,


Pour continuer à suivre les bons conseils de Jack, exemple pour créer tes variables.


Dim MyArray(2)
MyArray(0) = "00000000080000000033Flen Moulen 03011979M310820093108200903030033025602"
MyArray(1) = "00000000080000000033Flen Moulen 03011979M310820093108200903030033025602"
MyArray(2) = "00000000081236547895Me of Fen 13072010F310820093108200903030033025602"

For i=0 To UBound(MyArray)
    var1 = Mid(MyArray(i),InStrRev(MyArray(i), Space(1))+1)
    var2 = Mid(MyArray(i),21,Len(MyArray(i))-Len(var1)-20) 
    MsgBox Left(MyArray(i), 20) &vbCrLf&_
           var2 &vbCrLf&_
           var1 &vbCrLf&_
           Mid(var1,9,1) &vbCrLf&_
           Right(var1,30)
Next





jean-marc
3
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
16 mai 2012 à 19:10
Résurgence de cette discussion :
http://www.vbfrance.com/forum/sujet-AIDE_1591612.aspx

Il n'a toujours pas compris mes messages de ce sujet et continue ...

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
saidmansour Messages postés 51 Date d'inscription vendredi 1 juin 2007 Statut Membre Dernière intervention 13 octobre 2012
17 mai 2012 à 01:47
bonjour
j'ai une base de données acces contenant une table carrière avec les champs suivantes:
matricule,nom,prénom,service,direction.
je veux exporter le contenu dans un fichier
sous format
matricule(10char)&nom(40char)&prénom(40char)&service(2 char)& direction (4char)
mais avant de retourner à la ligne je vérifié la ligne suivante si le même matricule j'ajoute:
& service & direction au premier ligne et c'est ça exactement mon pb l'export sans vérification je l'ai déjà fait sans problème mais me manque la vérification. voici mon code

voici mon code source:





Private Sub Command1_Click()
Set MaConn = New ADODB.Connection
MaConn.Provider = "Microsoft.Jet.OLEDB.4.0;"
MaConn.Open "C:\personnel\GCP.mdb"
Set rsttable = New ADODB.Recordset
rsttable.Open "cariére", MaConn, , ,adCmdTable
Open "C:\personnel\EXPORT.txt" For Output As#1
While Not rsttable.EOF

Print#1,& Right("0000000000"+Trim(rsttable!matricule),10)&_ Left(rsttable!Nom+Space(40),40)&Left(rsttable!Prenom+Space(40),40)&_ Right("00"+Trim(rsttable!service,2)&Right("0000"+Trim(rsttable!direction,4);""
rsttable.MoveNext
Wend
Close #1
rsttable.Close
Unload Me
End Sub




merci
0
NHenry Messages postés 15114 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 4 mai 2024 159
17 mai 2012 à 02:11
0
Rejoignez-nous